-
AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축Media/AWS Media 2022. 6. 15. 00:36
AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축
1. AWS 미디어 서비스 소개
AWS 전체 서비스
AWS 미디어 서비스를 이용한 워크플로우
2. 라이브 스트리밍 서비스 구축
라이브 스트리밍 미디어 애플리케이션
- 라이브 이벤트
- 상업 이벤트
- E-Sports
- 방송
- IoT & 보안
- 정부 & 교육
2-1. 라이브 스트리밍 워크플로우
2-1 Source Contribution
고려사항
- 인코더 H/W
- 코덱/기능 지원
- 영상 화질과 프로토콜
- 전용망 또는 퍼블릭 네트워크
- 공연 장소의 대역폭
- 응답 시간
- 그 외 제약사항
OTT의 장애물
- 불안정한 네트워크 ➡️ ABR
- 다양한 패키지들의 생성, 저장, 전달 비용 ➡️ JITP
HLS Manifest 파일 구조
Manifest 파일에는 각 bitrate에 맞는 청크들의 리스트 존재
Adaptive Bitrate (ABR)
- 가장 낮은 bitrate(가장 작은 사이즈의 청크)를 받아서 재생
- 다운로드 속도에 따라 더 나은 품질의 파일(크기가 큰 파일)을 다운로드
ABR 작업을 해줄 수 있는 트랜스코딩 서비스 ➡️ MediaLive
2-2. AWS Elemental MediaLive
텔레비전이나 디바이스로 전달할 라이브 영상을 인코딩
- 몇번의 클릭만으로 라이브 방송 시작
- 무제한의 라이브 채널 확장
- 방송 수준의 라이브 영상 서비스 제공
이전은 온프레미스 하드웨어에서만 가능했던 트랜스코딩 작업이 클라우드로 이전
라이브 비디오에서 사용
인프라 스트럭처 이용해서 간편하게 생성
확장성, 중복성 있게 만들어짐
온디맨드 요금 ➡️ 비용 효율적
어떻게 동작하나?
인제스트 ➡️ 입력으로 정의된 HLS, RTS 등 ➡️ 트랜스코딩 ➡️ 오리진 ➡️ CDN ➡️ 플레이어
- 코덱, 비트레이트, gop인스트럭처, 오디오 파라미터, 캡션 등 정의하고,
- HLS, MS smooth, UDP, RTAP와 같은 비디오와 아웃풋 포맷 정의해서,
- 채널을 통해 multiple bitrate video profile로 비디오를 트랜스 코딩
Origin
- 비디오, 오디오 캡션과 같은 미디어 청크를 서빙하는 http 서버
- 미디어 패키지 또는 스토어 사용 가능
Input - 클라우드로 영상 가져오기
미디어 ingest하는 방법
PUSH / PULL
Channel - Input 에서 받은 영상을 트랜스코딩/패키징하여 Output으로 전달
Channel
- input에서 받은 영상을 트랜스코딩/패키징하여 output으로 전달
- 1개 이상의 인풋 연결 가능
- 채널 안에는 encoding, output, outputgroup 존재
encoding : video, audio, caption에 대한 instructure 존재
output : encoding의 조합
outputgroup : output의 조합
Output Group 종류
- Archive : Save to S3 Bucket
- HLS : Apple HTTP LIve Streaming, stream to AWS Elemental MediaStore, AWS Elemental Media Package as origin. Or other CDN services
- Smooth : Send to origin or CDN
- UDP : Broadcast live stream vias RTP/UDP
- RTMP : RTMP destination such as Facebook, YouTube etc.
AWS Elemental MediaLive 추가적인 기능
- 캡션/자막
- 광고 삽입
- 광고 passthrough
- 오디오 믹싱
- 정적 키 암호화
2-3. AWS Elemental MediaPackage
JITP 이용하여 디바이스에 맞는 컨텐츠를 보내고 DRM으로 보호
- 하나의 소스에서 다양한 디바이스로 영상 전송
- DRM 연동으로 콘텐츠 보호
- DVR 기능 탑재
다양한 디바이스 지원하기 위해 패키징 개별 필요
그때그때 영상 청크를 패키징 해줘야하는 번거로움 발생
이때 패키징을 빠르게 처리해주는 기능 ➡️ JITP
Just In Time Packaging (JITP)
Pre-processing과 JITP 차이
예를 들어,
MPEG-DASH & HLS 각각 요청이 들어오면 그 포맷에 맞게 매번 응답해줘야함 ➡️ 스토리지 낭비 발생
JITP은
플레이어 단에서 MPEG-DASH or HLS 로 받을거라고 이야기를 하면 그 자리에서 영상 파일들을 참조하는 플레이리스트 파일을 만들어 줌
인코더에서 한 번만 표준 형태로 저장을 해주면,
➡️ 플레이어가 들어와서 오리진 요청시 중간에 패키지가 포맷에 맞게 그 자리에서 패키징을 해준다
➡️ 플레이어에게 플레이어리스트 파일을 넘겨줌
➡️ 오리진에서 여러개 세트 준비 필요 없이 원본 세트 하나만 준비하여 MPEG-DASH & HLS 지원 가능
ABR + JITP
MPEG, ts 로 오리진 저장
그때그때 필요한 티비에 / 아이폰에 맞게 포맷, bitrate 조정해서 전송
MediaPackage and JITP
- MediaPackage는 JITP 지원
- 플레이어가 컨텐츠 요청 ➡️ 패키지가 클라이언트와 호환되는 형식으로 엔드포인트에서 직접 스트리밍 가능
- CDN, CF, 서드파티 이용하여 캐시 전달도 가능
MediaPackage의 채널
- 미디어 라이브나 다른 인코더와 같은 소스에 라이브 컨텐츠 스트림을 수신해서 패키징한 후 엔드포인트로 보내는 통로라고 이해
- 인풋으로 Apple HLS만 허용
- 채널 생성시 input url 생성
- 필요시 엔드포인드에 붙일 CF 디스트리뷰션 생성 가능
- redundancy(중복성) 위해 2개의 인풋 생성
MediaPackage의 엔드포인트
한개의 인풋으로부터 세그먼트 duration의 5초를 더한만큼 기다려도 세그먼트 못받으면 ➡️ 자동으로 백업 소스로 전환
Endpoint 옵션
- AD Markers
- Time Delay
- Startover Window
- Segment Duration
- Manifest Window
Endpoint 액세스 컨트롤 및 스트림 관련 기능
- 액세스 컨트롤 설정 : 엔드포인트에 클라이언트 접근 설정 ip제한
- 스트림의 순서 : 스트림 필드의 비트레이트 오더를 원본 그대로 / 오름차순 , 내림차순
- 스트림 필터링 : 임계값을 통해 재생할 수 있는 스트림을 제한 가능
컨텐츠 보호
DRM (Digital Rights Management)
스피크라는 별도의 프로토콜 지정 -> DRM솔루션 이용 가능
- 패키지 보안, 인코더 키 교환 (SPEKE)
- Apple FairPlay, MS PlayReady, Google Widevine
2-4. AWS 솔루션 구현 - 라이브 영상 스트리밍
3. VoD 서비스 구축
3-1. 파일 기반 스트리밍
- 저장소 필요 (S3 등)
- 저장된 영상 타입에 따라 사이즈가 너무 커서 스트리밍에 이슈 발생 가능성 있고, 네트워크 상황에 맞게 스트리밍 못할 수 있음 ➡️ 트랜스코딩과 같은 processing 필요
- 송출 packaging, CDN
- 네트워크 상황에 따라 ABR 필요
ABR (Adaptive Bitrate Streaming)
- 네트워크 상황에 따라 스트리밍이 되도록 ABR 작업
- ABR 작업위한 인코딩 서비스 ➡️ Media Convert
3-2. AWS Elemental MediaConvert
텔레비전이나 디바이스로 전달할 영상 파일을 인코딩
- 수분내에 VoD 워크플로우 구축
- 방송품질의 영상 서비스 제공
- AWS service들과 손쉬운 통합
AWS Elemental MediaConvert Terms
MediaConvert는 ➡️ 인코더 역할을 하는 서비스. 인코더가 어떤 비디오 파일을 가지고 처리
Job
- 인코더가 어떤 비디오 파일을 가지고 처리할때, 이 처리하는 일의 단위 ➡️ job
- Primary unit of work, input and output 지정
Job Template
- 어떤 작업을 할지에 대한 상세한 내역 정의
- Collection of commonly used job setting (자주 사용되는 잡 세팅의 모음)
- Useful when processing a collection of inputs to porduce a fixed set of outputs (인풋의 모음 프로세싱 할 때 정의된 아웃풋 세트 생산에 유용함)
- ✅Output Preset - Settings to create a single output
- 단일 아웃풋 생성위한 세팅
- 다양한 아웃풋으로 나오게도 하게함
- 규격화가 잘되어있음
Queue
- 모든 작업은 큐에 제출됨
- 사용자가 분리되도록 하거나 프로세싱을 위해 잡을 그룹화함
- 큐에 있는 작업들은 병렬로 처리되고, 큐들은 병렬로 처리됨
2가지 큐
- 일반적 큐
- 프라이버티 큐
MediaConvert 워크플로우
- job 내부에는 ➡️ input file, output group 존재 / Metadata / job configuration
- job을 만들어서 큐에 넣으면 적재됨
- 큐에 앞선 작업이 없다면 바로 실행
- 결과적으로, S3와 같은 저장소에 저장
- 이벤트를 발생시켜 추가 작업도 가능
Inputs
Output Groups
Job Settings
METADATA
- 어떤 큐에 이 작업을 제출할지 S3에 있는 파일을 읽고, 저장할 수 있도록 하는 IAM 역할
- 광고, 스코티 역할 등이 모두 메타데이터에 들어감
Working with Queues
큐 동시 처리 최대 20개
리전마다 수치 상이하니 미리 확인
Working with Presets
Job Template Output Group의 Preset
- Preset : 아웃풋을 어떻게 뽑을지 지정함
- 아웃풋 그룹에는 여러개의 아웃풋 존재
- 아웃풋 하나에는 비디오, 오디오, 캡션 존재
- preset으로 만들어 둔다면, 반복적으로 이루어지는 Job에 활용 가능
Working with Job Templates
추가적 기능
- 추가 고급 기능 이용 가능
AWS 솔루션 구현 - VOD
'Media > AWS Media' 카테고리의 다른 글
Amazon Interactive Video Service (0) 2022.06.16 AWS Elemental MediaConvert (0) 2022.06.16 AWS 미디어 서비스를 이용한 글로벌 라이브 스트리밍 서비스 구축 (0) 2022.06.15 AWS Elemental MediaConvert (0) 2022.06.14 AWS Elemental MediaTailor (0) 2022.06.14