# AWS Mediaconvert 를 사용한 Serverless 동영상 트랜스코딩 구축기 (2)

bhs9610·2020년 9월 28일
1

AWS VOD Workflow 구축을 위한 사전 지식을 정리한 글입니다. 이 글에서는 HLS 과 데이터 흐름을 알아보도록 하겠습니다.


🧳HTTP Live Streaming, HLS 이란?

HLS 은 2009년 Apple 에서 공개한 프로토콜 표준이며, 현재 많은 플랫폼에서 HLS 을 지원하고 사용하고 있습니다. 라이브 스트리밍을 위한 전통적인 프로토콜인 RTSP 은 비용이 높고 방화벽 환경에서 서비스에 대한 이슈가 있는 단점을 해결하는 방한으로 HTTP 를 라이브 스트리밍을 위한 프로토콜로 사용하는 방법이 바로 HLS 입니다.

HLS 의 특징

  • 가장 큰 특징은 네트워크 상태에 따라 동영상에 화질을 선택할 수 있는 ABS(Adaptive Bitrate Streaming) 을 사용할 수 있습니다.

  • 클라이언트는 이런 영상파일을 청크 단위로 쪼개서 다운 받을 수 있고, 사용자가 원하는 부분을 재생 할수 있는 기능도 제공합니다.

  • 사용자는 영상 재생을 하기위한 전체 동영상 파일을 다운받지 않아도 되게 되었습니다.

  • 사용자가 특정한 재생 위치부터 영상을 보는 경우 지정한 위치부터 영상을 다운받아 볼 수 있습니다.


📄 m3u8 / ts 파일

HLS의 특징을 지원하기 위해 HLS 프로토콜은 .m3u8 이라는 확장자 파일과 .ts 확장자 파일로 구분되어 있습니다.

HLS 은 동영상 파일을 여러 개의 작은 파일로 쪼개는데 이런 파일들을 .ts 파일이라고 부르며, .ts 파일들의 경로 목록들이 m3u8 파일에 저장됩니다. 여기서 .ts 파일은 실제 스트리밍 영상 데이터이며, 시간 단위로 쪼개어져 있습니다. m3u8 파일 주소만 알려주게되면, m3u8 파일안에 있는 .ts 파일을 다운받게 됩니다.

.ts 파일은 실제 데이터이고, m3u8 은 영상 재생을 위한 메타 데이터들이 담겨있다고 생각하면 될거같습니다.

m3u8 구조

간단한 m3u8 파일에 대한 구조입니다. 파일은 두개이며 각각 정의한 내용이 다릅니다.

#EXTM3U                     
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:35
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10,
index0.ts
#EXTINF:10,
index1.ts
#EXTINF:10,
index2.ts
#EXTINF:5,
index3.ts
#EXT-X-ENDLIST
#EXTM3U
#EXT-X-VERSION:3 
#EXT-X-TARGETDURATION:4 
#EXT-X-MEDIA-SEQUENCE:1 
#EXT-X-PLAYLIST-TYPE:VOD 
#EXTINF:3, 2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q8_00001.ts 
#EXTINF:3, 2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q8_00002.ts 
#EXT-X-ENDLIST

라인별 의미


#EXTM3U / m3u8 파일

#EXT-X-VERSION:3 / m3u8의 Version

#EXT-X-TARGETDURATION:35 / 총 재생시간 35초

#EXT-X-MEDIA-SEQUENCE:0 / 파일이 많을시 재생목록의 순서

#EXTINF:10 / 재생시간 10초

index0.ts / 파일의 경로

#EXT-X-ENDLIST / 파일 종료


〰️ 스트리밍 데이터 흐름

HLS 로 동영상을 전달하기 위한 데이터 스트림입니다. 원본 동영상 파일 → 인코딩 → 스트림 세그먼터 → 웹서버로 전송 → 플레이어 재생 순서입니다.Mediacovert 가 하는 역할은 Media Encoder 와 Stream Segmenter 입니다. 여기서 중요한건 Stream Segmenter 역할인데 원본 동영상 파일을 잘게 나누어 ts 파일로 만든 후 파일에 접근 할 수 있는 m3u8 파일을 만듭니다. 각 파트별로 더 DeepDive 한 내용이지만 간단히 설명하겠습니다.

다음글에서는,

필요한 AWS에서 필요한 리소스를 만들면서 Mediaconvert 설정까지 해보겠습니다.


참고자료

https://www.toptal.com/apple/introduction-to-http-live-streaming-hls
https://hi098123.tistory.com/97
https://developer.apple.com/documentation/http_live_streaming/understanding_the_http_live_streaming_architecture

profile
@changhyuni

0개의 댓글