RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

Wifi 또는 무선환경에서 자기 PC에 있는 동영상을

모바일 장치로 실시간 Streaming했으면 좋겠다는

생각에 이것저것 뒤져보니 비슷한 앱도 있기는 하고...


아무튼, 요즘 추세에 맞게 한번 만들어 보는게 어떨까 싶어서

조사과정에서 찾은 것들을 연속적으로 정리하고자 한다.

--------------------------------------------------------------------------------------

HLS ( HTTP live Streaming )


1) 간단

HTTP 기반으로 동영상을 streaming하는 프로토콜

Apple에 의해 구현되어 iPhone, QuickTime에 적용되어 있다.

아이폰에 스트리밍하려면 HLS를 쓰는게 좋다는 말.


* 참고

안드로이드도 HoneyComb이상에서는 지원한다는데..

내장 Web Browser에서 기본지원하지는 않는 것 같으니..

RTSP 를 쓰는게 더 나을 것 같다고..


2) 구성

m3u8 의 확장자를 가진 재생목록 파일과

잘게 쪼개놓은 다수의 ts 파일들(동영상파일)들을

HTTP를 통해 전송하는 방식.


* 확장자에 대해서..

m3u8 : m3u 파일인데, UTF-8로 인코딩 되어 있다는 뜻.

m3u : 멀티미디어 파일의 재생목록을 관리하는 파일.

( 초기에는 mp3 파일의 재생목록 관리에서 시작했을테니,

Mp3Universal-List 정도의 약어가 아닐까 싶다. )

ts : MPEG-2의 Transport Stream 포맷


3) Adaptive Streaming

m3u8 파일의 재생정보에 (같은 컨텐츠를) 전송대역별로 각기 다른

파일들로 지정할 수 있는데, 이를 통해 전송대역에 따라 적응적(adaptive)으로

재생할 파일을 지정할 수 있다. 즉, wifi 환경에서는 1Mbps bit-rate로 압축된

동영상을, 3G환경에서는 100kbps bit-rate로 압축된 파일을 받아가라고 할 수 있는 것.


4) HTTP 파일 전송과의 차이점

HTTP의 파일전송 ( GET 또는 Partial Content )은

파일의 offset byte부터 몇 byte를 전송하는 식으로 byte단위의 전송을 한다.

m3u8의 파일은 각 ts 파일들의 play-time을 지정하므로,

play-time 단위로 파일을 요청한다.


* 즉..

HLS에서

m3u8의 ts 파일들에는 크기대신 재생시간이 적힌다. (예를 들면 10초)

10초의 재생시간이 끝나면 다음파일을 요청하는 식으로 연속적인 플레이가 된다는 것.


* 재생시간 단위로 잘 쪼개기만 하면 되나 보네...

문제는 하나의 큰 동영상 파일( ex: hot.avi )을

10초단위의 작은 ts파일들(예: hot.001.ts, hot.002.ts ...) 로 쪼개고 보면

정확히 10초단위로 쪼개지지는 않느다는 것이다.

( 왜 그런지는 다음에 살펴보자. )


*그렇다면 어떻게 되는 거지?

실험결과는 m3u8파일의 재생시간과 정확히 일치하지 않아도

연속적인 재생이 부드럽게 이루어 짐.


생각1) 재생파일에는 time-stamp정보(내지는 sequence)정보 같은게 있어서

그것으로 연속 play를 맞추는 것 아닐까? ( 좀 더 테스트 해봐야될 부분 임..)

생각2) 재생시간보다는 순서에 맞춰서 순차재생을 한것에 불과할 수도..

생각3) 재생도중 seek (특정 재생위치로 이동)할 때의 부정확함은 어떻게 넘어가는 거지..?


4) HLS overview

* Apple의 HLS관련 페이지의 내용을 발췌

image: ../art/trasnsport_stream.jpg

* 별 내용없는 그림이다.

간단히 설명하자면, 비디오 장치로 촬영한 동영상을 인코딩한 다음, MPEG-2 ts로 쪼갠(segment) 다음

재생목록 파일과 ts파일들을 웹서버를 통해 client한테 전송한다는 거다.


클라이언트 입장에서 보면, 먼저 재생목록파일 ( m3u8)파일을 받고 거기에 적혀있는 멀티미디어 파일을

순차적으로 받아서 재생하게 된다.

( 당연하게도, 여기에서 HTTP는 단순한 파일전송 프로토콜에 불과하므로, m3u8파일을 처리하지 못하는 웹브라우저는

m3u8파일을 PC에 저장하고 끝난다. )


* m3u8 파일의 예 ( 10초 단위로 쪼갠 ts들의 재생목록 )

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10,
http://media.example.com/segment0.ts
#EXTINF:10,
http://media.example.com/segment1.ts
#EXTINF:10,
http://media.example.com/segment2.ts
#EXT-X-ENDLIST


* 파일확장자에 대한 설명.

File extension

MIME type

.M3U8

application/x-mpegURL or vnd.apple.mpegURL

.ts

video/MP2T

* 그래서 끝 ??

ts 파일은 사실은 멀티미디어 파일의 스트리밍을 위한 하나의 그릇 ( container )이다.

거기에 담기는 video, audio 등의 정보는 각기 다른 format들로 encoding (압축부호화)되어 있다.

그것에 대해 좀더 알아보자.

http://en.wikipedia.org/wiki/HTTP_Live_Streaming

http://en.wikipedia.org/wiki/Extended_M3U

http://en.wikipedia.org/wiki/MPEG_transport_stream

https://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/Introduction/Introduction.html

2013/06/10 10:02 2013/06/10 10:02
http://zosel.net/trackback/63
ZOSEL:Too much is as bad as too little...!! 자공(子貢)이 공자에게 "사(師:子張의 이름)와 상(商:子夏의 이름)은 어느 쪽이 어집니까?" 하고 묻자, 공자는 "사는 지나치고 상은 미치지 못한다"고 대답하였다. "그럼 사가 낫단 말씀입니까?" 하고 반문하자, 공자는 "지나친 것은 미치지 못한 것과 같다(過猶不及)"고 말하였다.
Too much is as bad as too little...!! 자공(子貢)이 공자에게 "사(師:子張의 이름)와 상(商:子夏의 이름)은 어느 쪽이 어집니까?" 하고 묻자, 공자는 "사는 지나치고 상은 미치지 못한다"고 대답하였다. "그럼 사가 낫단 말씀입니까?" 하고 반문하자, 공자는 "지나친 것은 미치지 못한 것과 같다(過猶不及)"고 말하였다.
전체 (209)
리눅스시스템 (92)
윈도우시스템 (16)
프로그램 (7)
네트워크시스템 (7)
최근관심 (1)
«   2024/04   »
  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        
  1. yeezyboost-350.co.uk  2021
    yeezyboost-350.co.uk
  2. 강남역 풀싸롱  2021
    강남역 풀싸롱
  3.   2021
  1. 2018/02 (1)
  2. 2017/03 (2)
  3. 2016/12 (2)