1. 개요
VOD 컨텐츠에 대한 AWS의 Media 트랜스코더(Live는 MediaLive)
2. 기능
브로드캐스트
- 오버레이, 콘텐츠 보호(DRM), 다국어 오디오, 자막, 광고(SCTE-35) 등 여러 옵션 존재
입출력
- MPEG-2/HEVC 코덱 지원, 색상 샘플링(Color Space), Adaptive packaging(HLS, DASH ISO), 4K Resoultion, HDR
자동화
- API를 통해 자동화가 가능하며, Managed Service(확장/축소, 장애처리, 최적화, 모니터링 등)
안정성
- AZ를 통해 이중화 되어있음
3. Elastic Transcoder(ETS)와 차이점
- Elastic Transcoder는 Video, Audio에 대한 스트림 Preset / Water mark를 제공
- MediaConver는 ETS 기능에 없는 오버레이, DRM, 다국어 오디오, 자막, 광고(SCTE-35) 등 추가적인 옵션 및 HEVC 지원
- ETS와 MediaConvert 모두 출력 영상 길이에 따라 비용이 발생
- MediaConvert는 베이직 티어와 고급 옵션을 지원하는 프로페셔널 티어가 있음
- 베이직 티어는 ETS 정도의 기능을 제공하며 비용은 ETS보다 저렴, 프로페셔널 티어는 ETS보다 약 두 배 이상 비쌈
(ETS HD 기준 분당 $0.030, MediaConvert HD 기준(Frame 30 ~ 60) 분당 베이직 $0.0212, 프로페셔널 $0.068)
ETS 비용 참고
MediaConvert 비용 참고
- 따라서 VOD에 대한 트랜스코딩이라면 먼저 MediaConvert를 고려하고, WebM 비디오/MP3 오디오/GIF 파일 생성/KMS(암호화) 기능이 필요하다면 Elastic Transcoder 사용을 권장. 그러나 AWS에서는 MediaConvert를 계속 업데이트 할 것으로 보임
4. 테스트
아래와 같은 원본 4K의 고화질의 영상을 트랜스코딩 해보자(인터넷에 떠도는 LG UHD(HDR) 4K 데모 영상)
먼저 간단하게 원본을 SD, HD(AVC) 형태로 트랜스코딩 및 패킷타이징(HLS) 해보자
4-1. 영상을 S3에 업로드
4-2. IAM Role 생성
AWS Console -> IAM -> Role -> Create Role -> MediaConvert 선택 -> Next -> Next(자동적으로 필요한 Policy가 생성) -> Role 이름 입력
4-3. AWS Console -> MediaConvert -> Get started
4-4. Job
4-4-1. Inputs Add
Input 1: Input S3 버킷명 및 Path, File 명 입력(ex. s3://lee-etc/test.mp4)
Video: Color Space 등 비디오 트랜스코딩 관련 설정
Audio: Audio 관련 옵션
4-4-2. Ouput groups Add
Apple HLS group settings -> Destination(ex. s3://lee-etc/HLS/) -> Segmented files(4, 2)
(Minimum Segment Length 설정은 필요에 따라 Segment에 키프레임을 추가시켜주는 옵션이라는데 정확한 내용은 설명되어 있지 않음....)
Add output -> HD, SD(AVC)
Elastic Transcoder와 같이 Preset을 Custom하게 설정 가능
준비된 Preset을 통해 HD/SD를 구성
Ouput 1 -> Preset -> 1080p / Output 2 -> Preset -> 720p
4-4-3. Settings -> IAM role -> 기존에 생성한 MediaConvert Role 등록
4-5. 결과
4-5-1. 소요시간 2분 12초(영상 4K, 약 1분)
4-5.2. 기존 미디어 파일 정보(448MB, 1분 13초 영상)
4-5.3. HD, SD 청크 파일 정보(6MB, 6초 영상 / 3.8MB, 6초 영상)
Output S3 경로에는 아래와 같이 playlist 및 청크 파일이 저장(Segement length는 설정한 4초, 2초 합산된 6초)
(Minimum Segment Length 옵션은 그냥 0으로 사용해도 될 듯)
간단한 테스트를 통해 MediaConvert를 확인해봤으며, 자동화는 Lambda API 호출로 EST와 같이 사용 가능하다.
오버레이, DRM, 자막, HEVC, HDR 등 고오급 옵션은 추후 테스트가 더 필요하다.
AWS SDK를 사용할 경우 End-point를 환경 변수로 넣어줘야 한다.
Lambda를 통한 자동화 참고
DRM의 경우, 이미 잉카 사의 Pallycon 멀티 DRM 솔루션(Widevine, FiairPlay 등) 연동이 가능하다고 한다.
참고
참고
트러블슈팅
1. 타임코드
MediaConvert에서는 PIC_TIMING_SEI 형식의 타임코드 'HH:MM:SS:FF'를 사용한다.
만약 원본 영상 소스 타임코드 형식이 PTS(Presentation Time Stamp) 방식이라면 문제가 발생될 수 있다.
따라서 그럴 경우 임베디드(Embedded)가 아닌 Start from 0 의 값으로 수정하면 해결된다.
2. 프레임 레이트
또한 Variable Frame Rates(VFS)의 경우 MP4, MOV 컨테이너만 지원하기 때문에 이외 컨테이너는 Constant Frame Rate(CFR)로 변경 후 진행해야 한다.
3. iOS13
iOS 13버전의 경우 서브 메니페스트에도 아래와 같이 meta 구별 태그가 포함되어야 어댑티브(Adaptive) 재생이 가능하다.
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:9.97667,
이 경우는 MediaConvert 설정을 아래와 같이 해주면 해결된다.
그래도 안 되면 Case Open ㄱㄱ...ㅜㅜ
4. 표준이 아닌 인코딩 영상들
각 컨텐츠 제공사의 인코딩 방식에 따라서도 에러가 발생되는 경우가 있다. 그럴 경우 케이스오픈 ㄱㄱ...
'Media Services > MediaConvert' 카테고리의 다른 글
AWS MediaConvert(S3 event lambda) (0) | 2019.10.21 |
---|