프로그래밍/기타

[AWS Mediaconvert] 암호화된 HLS 생성하기

동네로봇 2022. 10. 9. 23:33

AWS Mediaconvert

AWS Elemental MediaConvert는 파일 기반의 비디오 및 오디오 트랜스코딩 서비스이다. 이 서비스를 사용하면 브로드캐스트와 멀티스크린 전달을 위한 VOD(주문형 비디오) 콘텐츠를 직접 관리 및 구현하지 않고 손쉽게 생성할 수 있다. 

 

Mediaconvert Template

mediaconvert는 Job단위로 트랜스코딩을 진행한다. 만약 특정 트랜스코딩 작업을 반복해야 하는 경우, 매번 새롭게 Job을 생성하지 않고 동일한 작업을 수행하는 Template을 사용할 수 있다. 

 

오디오 파일을 input으로 넣어 암호화된 HLS를 생성하는 Template을 생성해보기로 한다. 작업 생성에 관련된 모든 설정은 Mediaconvert guide를 참고하였다.

mediaconvert-guide.pdf
2.29MB

 

Encrypted HLS 생성하기

 

1. 입력 선택기 생성

입력 파일의 오디오 자산을 선택할 수 있는 오디오 선택기를 설정한다. S3에 있는 파일이나 HTTP/HTTPS url을 통해서 입력 파일을 지정할 수 있다.

참고로 오디오만 다루는 경우 입력 클리핑으로 음원 길이를 자를 수 없다. (비디오는 가능)

 

2. 출력 그룹 생성

트랜스코딩하여 출력할 파일 그룹을 생성한다. Apple HLS 파일을 생성할 것이므로 해당 파일 타입을 선택한다. 

입출력 파일은 모두 여러 개를 설정할 수 있다. 만약 비트레이트가 다른 각각의 HLS를 만들고자 한다면 원하는 개수대로 출력 그룹을 생성해주면 된다.

 

3. 기본 HLS 설정

1 - 출력 파일 저장 위치를 설정

2 - 세그먼트 세부 설정 (세그먼트 파일 여부, 세그먼트 길이 등등)

3 - 세그먼트를 하위 디렉터리에 배치할지 여부 설정

4 - 매니페스트 기간에 부동 소수점 값을 사용할지 여부. 세그먼트 길이 제어 GOP 배수와 더불어 부동 소수점을 사용하면 좀 더 자연스러운 frame의 세그먼트를 얻을 수 있다. 

(참고 : https://aws.amazon.com/ko/blogs/media/part-1-back-to-basics-gops-explained/)

5 - 세그먼트 파일의 suffix 값 설정

6 - 세그먼트 파일의 정보를 담고 있는 manifest 파일(master.m3u8)을 추가하고 master 파일에 suffix 값을 설정한다

 

1 - 오디오 전용 출력에서만 설정한다. ts 컨테이너에서 파일 생성하기 위해 M2TS(MPEG-2 Transport Stream) 을 선택한다. 설정하지 않는 경우 모든 세그먼트는 AAC 파일로 출력되며 재생에 문제가 생길 수 있다.

2 - 원하는 스펙에 맞는 Bitrate와 Samplerate를 선택한다.

3 - 오디오 정규화. 출력되는 파일을 특정 음량으로 정규화하기 위해서 고급 > 오디오 정규화 기능을 사용할 수 있다. (추가 비용 발생) 목표로 하는 LKFS값을 입력한다.

 

4. HLS DRM 암호화 설정

일반 HLS 출력은 3번까지만 진행하면 되지만, 암호화 된 HLS 생성을 위해서는 DRM 암호화를 선택한다.

 

암호화 방법 - 주어진 암호화 체계에 따라 세그먼트를 암호화 함

키 공급자 유형 - DRM 암호화 키가 정적인지 또는 SPEKE 표준을 따르는 키 공급자에서 오는지 여부를 지정한다. (SPEKE 참고 :  https://docs.aws.amazon.com/speke/latest/documentation/what-is-speke.html )

매니페스트의 초기화 벡터 - 포함인 경우 manifest (master.m3u8) 파일에 초기화 벡터(IV=000x...) 값이 나열된다. 

상수 초기화 벡터 - 제외인 경우 공란

정적 키 값 - 키 공급자 유형에서 정적 키를 선택한 경우 정적 키 값을 설정한다. 32자 16진수 문자열을 사용한다. (ex : aa5ddb0f5b312a13995d711698ab6b87)

URL - 암호화 키가 저장된 라이센스 서버의 위치

오프라인 암호화 - EXT-X-SESSION-KEY 요소를 마스터 재생목록에 삽입하려면 이 설정을 활성화한다. 이렇게 하면 오프라인 Apple HLS FairPlay 콘텐츠를 보호할 수 있다.

 

5. 출력 결과

S3에 출력 결과를 저장하였다. 

세그먼트들은 암호화 되어 있어 다운로드 받아도 바로 플레이할 수 없다. 플레이어를 통해 암호화 키가 저장된 서버를 통해 키를 받아와야만 해당 세그먼트를 플레이할 수 있다.