HTTP Streaming 相關技術 pseudo, live

以下大家友情支持一下:

做了一个产品,需要人气支持一下,android和iphone上91市场搜索#super junior粉丝团#,或者直接到页面下载http://m.ixingji.com/m.html?p=X16,大家帮忙捧捧场



最近想研究一下HTTP Streaming,隨著網路架構越來越完整,這應該是個趨勢。剛看的時候有一堆名詞,下面紀錄一下我的理解。


     HTTP Streaming (Progressive Streaming)

    一般如果寫HTTP Streaming的話,指的就是Progressive Streaming。這種架構,用單純的Web Server就可以了,其實他就是像一般Web Server傳照片、檔案一樣。C  ient就一直收,只是某些格式的影片,是可以收到就可以立刻播出來的,例如微軟的asf, wmv?

    優點就是相對於之前的RTP Streaming的技術,目前的高畫質影片可能家庭的網路還不夠快,如果用UDP的話,可能畫面會破碎嚴重,用TCP的話,就可以看的漂亮,當然要等比較久一點

    缺點

     使用者無法seek,因為檔案是從頭開始傳到尾的,你沒辦法叫他中間跳過不傳。雖然HTTP Protoco 支援Partia   down  oad,但因為c  ient無法知道某個秒數對應到的開始位元是多少,所以無法使用partia   down  oad的方法。

     無法適用於   ive broadcasting,現場直播

     HTTP pseudo Streaming

    這是F  V使用的方式,基本上我還是把這個規類到跟Progressive Streaming一樣,但他多了可以Seek的功能,怎麼做到的呢?需要先用轉檔程式把影片編成f  v,此時f  v裡面的metadata會帶有索引資訊,索引的格式就是 1 sec -> 1234 KB, 2 sec -> 5422 KB ……。類似這樣,秒數的地方應該是Key Frame的位置。所以當使用者要快轉的時候,p  ayer會找到最近的索引秒數,然後轉換為 byte數,接下來就送出 xxx.f  v?5422。這樣就會seek到兩秒的地方。如果是mp4的話參數則是直接帶秒數,ex: mp4?1s 。我看到的是YouTube使用的就是這種方式。索引的資訊可以用一個工具metaviewer看到,如果編碼的時候沒有說要產生索引資訊,那c  ient p  ayer就不能seek了。

    優點:可以seek了,可以有高畫質。

    缺點:

     需要額外的Server P  uginServer的名詞我有看到 PHP StreamingPseudo Streaming,就是幫Apache加一個外掛,讓他可以處理f  v, mp4 的需求。p  ayer也要相對應的修改。

     無法適用於   ive broadcasting,現場直播

     RTMP比較,少了安全性

     HTTP   ive Streaming

    這是App  e提出的解決方案,iOS 3之後都內建,目前提交到IETF Draft了。他的架構也是用一般的web server就可以解決,需要處理的反而是前置作業。是透過p  ay  ist來跟c  ient溝通。使用者必須先把要播的影片丟給切割程式,程式會把影片切成n秒鐘一段的很多小影片(n建議為 10),然後順便產生一個 m3u8 p  ay  ist,紀錄這一部影片有哪些片段。

    所以c  ient會透過HTM  5 video tag,抓到 src m3u8 的內容,內容為

     #EXTM3U

     #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000

     gear1/prog_index.m3u8

     #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111

     gear2/prog_index.m3u8

     #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444

     gear3/prog_index.m3u8

     #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777

     gear4/prog_index.m3u8

    上面我們可以看到,使用者可以自訂要播哪一種頻寬的影片,預設是抓第一個gear1/prog_index.m3u8。所以就再去抓,內容為

     #EXTM3U

     #EXT-X-TARGETDURATION:10

     #EXT-X-MEDIA-SEQUENCE:0

     #EXTINF:10, no desc

     fi  eSequence0.ts

     #EXTINF:10, no desc

     fi  eSequence1.ts

    

     #EXTINF:1, no desc

     fi  eSequence180.ts

     #EXT-X-END  IST

    看到#EXT-X-END  IST,代表這是一個 Video On demand,所以可以算出整個影片的長度是多少,如果使用者要seek的話,就再去抓該位置的影片。如果沒有#EXT-X-END  IST,代表這是一個broadcasting的播放,就要再一直更新 m3u8,看有沒有新的片段加進來。

    目前我用chrome是無法播此類型m3u8,但直接抓取每一個ts檔案是可以播的 (tstransport )App  e規定如果是這種方式,一定要使用H.264 Profi  e AAC 編碼。文件有提到抓取每一個小檔案之後會先合併再播放,看起來iOS 3以上的Safari 都有做這樣。

    優點:

     可以seek

     可以有高畫質

     透過一般的Web Server來服務,可以簡單的部署到CDN (Content De  ivery Network)

     可以  ive broadcasting,現場直播。

    缺點:

     Draftc  ient p  ayer還沒有廣泛支援。

你可能感兴趣的:(iphone)