일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- firebase
- 검사
- epmty
- 빈
- Job
- Android
- shceduler
- livedatam
- Service
- alarmanager
- jobschduler
- Library
- jobdispatcher
- workmanager
- PHP
- schedule
- Background
- Today
- Total
에몽이
스트리밍-HLS 프로토콜 본문
스트리밍이란 무엇일까요?
스트리밍(streaming) 이란 인터넷(네트워크)을 바탕으로 사용자들에게 각종 비디오, 오디오 등의 멀티미디어 디지털 정보를 제공하는 기술로 인터넷에서 영상및 음향 등의 파일을 하드디스크 드라이브에 다운로드 받아 재생하던 것을 다운로드 없이 실시간으로 재생해 주는 기법이다.
전송되는 데이터가 마치 물이 흐르는 것처럼 처리된다고 해서 “스트리밍(streaming)”이라 표현하고, 파일이 모두 전송되기 전이라도 클라이언트 브라우저 또는 플러그인이 데이터를 표현하기 시작한다. 재생 시간이 단축되며 클라이언트 하드디스크 드라이브의 용량에도 영향을 받지 않는다.
전통적인 스트리밍
라이브 스트리밍을 위한 전통적인 프로토콜로는 RTSP(Real-Time Streaming Protocol)/RTP(Real-time Transport Protocol), RTMP(Real-Time Messaging Protocol) 등이 있다. 이 프로토콜을 사용하는 스트리밍 서버는 영상 데이터의 전송뿐만 아니라, 동영상에 대한 정보 분석이나 전송 규격에 맞도록 동영상 파일을 읽어서 변형하는 기능도 갖춰야 한다. 기능이 많은 만큼 웹 서버에 비해 도입 비용이 상대적으로 높다. 고가의 도입 비용 이외에도 결정적인 단점이 있다. 현재 가장 많이 사용하는 RTSP/RTP의 경우, RTSP와 RTP가 서로 다른 네트워크 연결을 통해 데이터를 교환하기 때문에 방화벽이나 NAT(Network Address Translator)를 많이 쓰고 있는 환경에서는 서비스가 원활하지 않은 문제가 있다.
그래서 대안으로 나온 것이 HTTP를 전송 채널로 사용하는 것이다. HTTP는 양방(full-duplex) 방식이 아니기 때문에 라이브 스트리밍을 위해서는 단점을 극복할 별도의 방식이 필요하지만, 방화벽에서 HTTP 서버로의 요청만 통과시키면 되기 때문에 방화벽의 설정이 단순해진다. 요청과 응답이 1:1로 대응되므로 NAT 환경에서도 서버와 통신하는 것이 쉽다. 방화벽 문제 때문이 아니라, 웹 서비스를 위한 캐시 구조를 그대로 사용할 수 있고, 기존에 구축되어 있는 CDN(Content Delivery Network)도 특별히 변경하지 않고 그대로 이용할 수 있다는 것이 장점이다.
스트리밍의 종류
– HLS (http live streaming)
– Progressive download
– Pseudo streaming
– RTSP, RTMP
– Adaptive streaming
– Http dynamic streaming
HLS(Http Live Streaming) 이란?
Apple(iPhone, iPad 등) 에서 사용하는 표준 HTTP 기반 스트리밍 프로토콜이다. 프로토콜에서 스트리밍 데이터를 m3u8 의 확장자를 가진 재생목록 파일과 잘게 쪼개놓은 다수의 ts 파일들(동영상)을 HTTP 를 통해 전송하는 방식을 사용한다.
– m3u8 : m3u 파일인데, UTF-8 로 인코딩 되어 있다는 의미.
– m3u : 멀티미디어 파일의 재생목록을 관리하는 파일
– ts : MPEG-2 의 Transport Stream 포맷
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 (출처 http://developer.apple.com/library/ios/)
HLS 에서는 ABS(Adaptive Bitrate Streaming) 를 위해 동시에 여러 비트율의 ts 파일에 대한 정보를 제공한다. ABS 을 지원하기 위한 m3u8 파일과 ts 파일 구조는 아래 그림과 같다. 전체를 대표하는 m3u8 파일이 있고, 대표 파일 내 각각의 비트율별 플레이 리스트 파일을 가리키게 한다. 각 비트율별 플레이 리스트 파일은 다시 각 비트율에 해당하는 ts 파일을 가리킨다.
HLS는 확장성이 높고 안정적이기는 하나, 이러한 구조상 파일을 먼저 만들고 스트리밍하는 방식이기 때문에 RTMP/RTSP 방식에 비해 딜레이 문제가 발생할 수 있다.
* 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를 이용한 스트리밍 규격이다.
ABS (Adaptive Bitrate Streaming)
– 사용자의 네트워크 속도에 따라 적합한 콘텐츠를 선택하여 재생
– 사용자 별 서비스 품질 다변화
– 대역폭 변동에 대한 품질개선 및 안정성 확보
– Apple : HTTP Live Streaming (HLS)
– Adobe : HTTP Dynamic Streaming (HDS)
– Microsoft : HTTP Smooth Streaming (HSS)
————————————————————————————————————————
Posted by 주현성@ 카테노이드 서비스팀
Pogressive download / Pseudo streaming / RTSP, RTMP / Adaptive streaming / Http dynamic streaming 관련 포스팅이 계속될 예정입니다.^^
* 출처
http://en.wikipedia.org/wiki/Adaptive_bitrate_streaming
http://helloworld.naver.com/helloworld/7122
http://www.adobe.com/kr/products/hds-dynamic-streaming.html
http://www.thekuroko.com/what-is-http-dynamic-streaming/
http://www.jwplayer.com/blog/what-is-video-streaming/
http://blog.edgecast.com/post/55198896476/hds-hls-hss-adaptive-http-streaming-demystified
http://unipro.tistory.com/121
http://blog.naver.com/makerslee?Redirect=Log&logNo=30148808093
http://blog.naver.com/pyoyr?Redirect=Log&logNo=50037791019
정보통신산업진흥원, 주간기술동향(2013. 5. 8) – 멀티미디어 서비스 확산 동인(動因)과 스트리밍 기술 현황
'Backend > protocol' 카테고리의 다른 글
미디어 파일 포맷의 종류 (0) | 2017.04.14 |
---|---|
스트리밍(Streaming) 용어 – HLS(Http Live Streaming) (0) | 2017.04.14 |
tcp/ip,http,웹소켓 (0) | 2017.04.14 |
TCP 3 핸드 쉐이킹 (0) | 2017.04.14 |
TCP / UDP 설명 (0) | 2017.04.14 |