■ HLS(HTTP Live Streaming) 이란?
애플(Apple) 디바이스 (iPhone, iPad 등) 에서 사용하는 표준 HTTP 기반 스트리밍 프로토콜이다.
프로토콜에서 스트리밍 데이터를 m3u8 의 확장자를 가진 재생목록 파일과 잘게 쪼개놓은 다수의 ts 파일들을 HTTP 를 통해 전송하는 방식을 사용한다.
HLS 와 기존 스트리밍 방식의 차이는 크게 두 가지로, ‘동영상 정보를 전달하는 방식’, ‘HLS에서 만든 스트림 세그먼트 (stream segment)’ 이다.
< 잠깐! 용어정리 >
– m3u8 : m3u 파일이며, UTF-8 로 인코딩 되어 있다는 뜻
– m3u : 멀티미디어 파일의 재생목록을 관리하는 파일
– ts : MPEG-2 의 Transport Stream 포멧 파일
■ HLS 도입 배경
HLS는 iPhone과 iPad의 사용자 수가 늘어남으로써 자연스럽게 그 수요가 늘어나게 되었다.
또한, 규격 자체의 단순함과 IETF(Internet Engineering Task Force)를 통한 표준화 작업 등을 통해 다른 업체들도 쉽게 HLS를 지원할 수 있게 했다.
그 결과로, 어도비 (Adobe) Flash Media Server 4.0에서, 마이크로소프트 (Microsoft) IIS Media Server 4.0에서 HLS를 정식으로 지원하며,
모바일 운영체제에서 상대 진영이라 할 수 있는 구글 (Google)의 안드로이드 (Android) 에서도 3.0 버전인 허니콤 (Honeycomb) 에서부터 HLS를 지원하기 시작했다.
■ HLS 구조
HLS에서 서버는 HTTP 를 통해 클라이언트로부터 요청을 받고, 데이터에 대한 응답을 주는 역할만 수행하기 때문에,
저장되어 있는 파일을 읽어서 HTTP 응답에 데이터를 실어서 보낼 수 있는 어떤 웹 서버에서 사용이 가능하다.
스트림 세그먼터 (Stream Segmenter) 는 일정한 시간 간격마다 입력 받은 미디어 데이터를 분할해 파일로 만들고,
그 분할한 파일에 접근할 수 있는 메타 데이터 (m3u8) 파일을 생성하는 역할을 한다.
여기서 HTTP 는 양방향 방식이 아니기 때문에, 클라이언트에서 반드시 서버에 요청을 해야만 응답을 받을 수 있다.
Apple Inc, HTTP Live Streaming Overview
출처 : https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008332
■ Adaptive Bitrate Streaming (이하 ABS)
HLS 특징중 하나는 사용자 네트워크 환경 (속도) 에 따라 적합한 콘텐츠를 선택하여 재생할 수 있는 ABS 를 지원하는 것이다.
Wi-Fi 환경에서 스트리밍 서비스를 이용하던 중 3G, LTE 등 이동 데이터 통신망으로 환경이 이동하면 사용 가능한 네트워크의 대역폭이 감소된다.
이때 ABS 가 적용되지 않은 스트리밍 서비스에서는 플레이어가 데이터를 제대로 수신하지 못해 지속적인 버퍼링이 발생하거나
부족한 데이터 수신으로 인해 화면이 제대로 표시되지 않는 문제가 발생한다.
하지만, ABS 가 적용되어 있다면, Wi-Fi 와 3G, LTE 망 전환시 화면의 품질이나 해상도 등은 다소 나빠지지만 끊기지 않고
계속 서비스를 이용할 수 있는 것이다.
Adaptive Bitrate Streaming 의 동작
출처 : http://helloworld.naver.com/helloworld/7122
위 그림을 통해 네트워크 상태 변화에 따라 700kbps 비트레이트 컨텐츠와 300kbps 비트레이트 컨텐츠를 유동적으로
제공하는 것을 알 수 있다.
HLS 에서는 ABS 를 위해 동시에 여러 비트율의 ts 파일에 대한 정보를 제공한다.
전체를 대표하는 m3u8 파일이 있고, 대표 파일 내 각각의 비트율별 플레이 리스트 파일을 가리키게 한다.
각 비트율별 플레이 리스트 파일은 다시 각 비트율에 해당하는 ts 파일을 가리킨다.
HLS는 확장성이 높고 안정적이기는 하나, 이러한 구조상 파일을 먼저 만들고 스트리밍하는 방식이기 때문에 RTMP/RTSP 방식에 비해 다소 딜레이 문제가 발생할 수 있다.
ABS 를 지원하기 위한 m3u8 파일과 ts 파일 구조는 아래 그림과 같다.
ABS를 위한 m3u8 파일과 ts 의 연결구조
출처 : http://helloworld.naver.com/helloworld/7122
■ 마무리
HLS는 기존의 스트리밍 프로토콜이 지닌 단점을 극복하고 스트리밍 서비스를 위한 인프라를 단순화시키려는 의도에서 나온 규격이라고 할 수 있다.
고화질 서비스를 지원하고, 네트워크 상황에 따라 원하는 비트레이트 의 콘텐츠를 선택할 수 있는 기능을 제공한다.
Android 3.0 버전 부터 공식적으로 HLS를 지원하여 iOS 기기 및 Android 기기에 모두 동일한 방식의 라이브 스트리밍 서비스를 할수 있게 되었다.
HLS 이외에도 HTTP 를 이용한 Adaptive Bitrate Streaming 을 지원하는 스트리밍 규격이 있는데, Adobe의 HTTP Dynamic Streaming과 Microsoft의 Smooth Streaming도 HTTP를 이용한 스트리밍 규격이다.
이 외에 MPEG 과 3GPP 에서 동시에 규격을 정의하고 있는 Dynamic Adaptive Streaming over HTTP (DASH) 도 있다.
스마일서브 상품중 HLS 를 지원하는 상품은 플래시/모바일 VOD (Wowza) 상품이며,
다음 글에서는 HLS 으로 송출할 수 방법과 ABS 는 어떻게 적용할 수 있는지 다뤄보고자 한다.
[polldaddy rating=”7739789″]