동영상 플랫폼
동영상 플랫폼 이해하기 | HLS
동영상 플랫폼 이해하기 | AWS MediaConvert
HLS 란?
HLS
( HTTP Live Streaming ) 는 HTTP
로 영상을 스트리밍을 할 때 사용하는 프로토콜을 의미
- 이 프로토콜은 2009년에 애플에서 공개한 표준이며 현재는 많은 플랫폼에서
HLS
프로토콜을 지원하고 활용하고 있음
HLS
에서 사용되는 호출은 2가지인데 M3U8
과 TS
M3U8
은 재생할 목록에 대한 호출이며 TS
는 대상 미디어 파일
- 이 2가지 타입의 호출을 통해 미디어를 라이브 스트리밍 함
HLS 특징
HLS
프로토콜을 사용하면 네트워크 상태에 따라 영상 화질을 선택할 수 있는 Adaptive Bitrate Streaming
을 사용할 수 있음
- 클라이언트에서 영상을 청크 ( 비디오 조각 ) 단위로 나눠서 다운받을 수 있으며 부분 재생을 할 수 있는 기능도 제공
- 이러한 특징 덕분에 사용자는 영상을 재생 할 때 전체 영상 파일을 다운받지 않아도 되며, 특정 재생 위치부터 영상을 보는 경우 해당 위치부터 영상을 다운받아 볼 수 있게 됨
M3U8 ∙ TS 확장자 파일
- 위와 같은 특징을 지원하기 위하여
HLS
프로토콜은 M3U8
확장자 파일과 TS
확장자 파일로 구성되어 있음
M3U8
파일에는 영상 재생을 위한 메타 정보들이 담겨있음
- 이 메타 정보에는 대역폭별
M3U8
파일경로 혹은 TS
파일경로 등이 담겨있음
TS
파일은 실제 스트리밍 영상 데이터이며 시간 단위로 작게 나누어져 있음
M3U8
파일을 통해 Adaptive Bitrate Streaming
이 구현 가능하며 TS
파일을 통해 영상을 부분적으로 다운로드 가능
M3U8 샘플
# 대역폭별 m3u8 파일 경로
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=3082123,AVERAGE-BANDWIDTH=3082123,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1080x1920,FRAME-RATE=29.970
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q8.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3864924,AVERAGE-BANDWIDTH=3864924,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1080x1920,FRAME-RATE=29.970
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q9.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5213165,AVERAGE-BANDWIDTH=5213165,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1080x1920,FRAME-RATE=29.970
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q10.m3u8
# ts 파일 경로
( 대역폭별 m3u8 파일을 다운받은 후, 실제로 영상을 재생하기 위한 ts 파일 경로 )
#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
Stream Segmenter
HLS
로 영상을 제공하기 위하여 필요한 데이터 흐름
원본
> 인코더
> 스트림 세그먼터
> 웹 서버
> 플레이어
단계로 구성
스트림 세그먼터
는 원본 데이터를 화질별로 잘게 분할하여 TS
파일을 생성
- 그리고 이 분할한 파일에 접근할 수 있도록 메타 데이터 파일인
M3U8
파일을 만듬
AWS MediaConvert
- AWS MediaConvert 는
스트림 세그먼터
역할을 해주는 AWS 솔루션
- 파일 기반 콘텐츠를 여러 디바이스에 송출할 할 수 있도록 파일을 변환해주는 프로그램
File Based Transcoding 이란?
- 영상 콘텐츠 파일에 영상 변환과 압축 ∙ 패키징 ∙ 접근 권한 제어를 수행
영상 변환
- 영상 파일의 해상도를 낮춰서 파일을 압축하거나 파일을 여러개로 분할해주는 역할을 수행
Adative Streaming
을 위하여 네트워크 대역폭별로 내려줄 영상 파일을 지정할 수 있음
- 영상의 썸네일 이미지를 추출할 수 있음
- 영상 음성 파일을 추출
- 영상 파일 포맷을 변환
- 예를 들어
M2TS
포맷 영상 파일을 HLS
∙ MP4
파일로 변환 가능
패키징
- 여러 디바이스 타입에서 영상 파일을 사용할 수 있도록 영상 파일을 패키징
- 파일의 접근 권한을 제한하는 DRM 솔루션을 적용할 수 있음
AWS MediaConvert 사용 이유
- 서비스 운영을 AWS 에서 해주기 때문에 관리 비용을 줄일 수 있음
File Transcoding
기술에 대한 진입장벽이 낮아짐
File Transcoding
기반 지식과 프로그램 설정에 대해 DeepDive 를 하지 않아도 됨
- AWS MediaConvert 사용 방법만 알면 가능
- 서비스를 쉽게 확장할 수 있음
- 비용 예측이 쉬움
File Transcoding
기능을 쉽게 도입하고 유지 보수할 수 있다는 것이 장점
AWS MediaConvert 플로우
스튜디오 영상 관리 플로우
- 영상 제작자가 만든 고화질 영상 원본 파일이 영상 소비자에게 전달되는 플로우
- 원본 영상을 S3 에 업로드를 하고 CMS 툴을 활용하여 AWS MediaConvert 에서 파일 변환 작업을 수행
- 이 때 영상 보안 설정 ∙ 영상 압축 ∙ 오디오 파일 분리 등의 작업들이 수행
- 이렇게 변환된 파일은 다시 S3 에 저장
- 그리고 이 영상은 유료 TV 방송 채널 혹은 OTT 로 송출
인터넷 영상 제공 플로우
- 일반적인 인터넷 서비스에서 영상을 업로드하고 송출하는 플로우
- 영상을 S3 에 업로드하면 이 이벤트가 트리거가 되어 AWS Lambda 가 AWS MediaConvert 를 실행
- 이렇게 변환된 데이터는 S3 에 저장되고 Cloud Front 에 캐싱되어 여러 디바이스에 송출
AWS MediaConvert Job 구성 요소
- AWS MediaConvert 에서
File Transcoding
을 실제로 수행하는 작업을 JOB
이라고 부름
INPUT
은 원본 리소스를 의미하며 OUTPUT
은 변환된 파일을 의미
OUTPUT
결과는 여러 개의 그룹으로 묶어서 지정할 수 있음
- 위의 그림은 원본 리소스를
HLS
그룹과 DASH
그룹으로 나눠서 변환하는 케이스를 의미
- 각 그룹 안에서 원하는 해상도와
Adaptive Streaming
을 위한 대역폭 설정 등을 할 수 있음