流媒體技術學習筆記之(十八)互聯網草案HTTP直播流2017年5月

 原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23php

一、HTTP直播流介紹html

  HTTP實時流媒體提供了一個可靠的,成本效益的手段經過互聯網提供連續和長時間的視頻。它容許接收器使媒體的比特率適應當前網絡條件,以保持不間斷播放最好的質量。它支持插頁式內容邊界。它爲媒體加密提供了一個靈活的框架。它能夠有效地提供相同內容的多個呈現,例如:音頻翻譯。它提供了與大規模HTTP的兼容性緩存基礎設施以支持向大量受衆傳遞。緩存

自2009年首次發佈草案以來,HTTP Live Streaming已經有了已經被普遍的內容製做者實施和部署,工具供應商,分銷商和設備製造商。在裏面隨後的八年,協議已被普遍的提煉與各類媒體流媒體實現者進行回顧和討論。服務器

本文檔的目的是爲了促進互操做性在HTTP實時流媒體實現之間經過描述媒體傳輸協議。使用這個協議,客戶端能夠收到一個來自服務器的連續媒體流以便並行呈現。網絡

本文檔介紹協議的第7版。框架

二、概念ide

多媒體演示由統一資源指定標識符(URI)[ RFC3986 ]播放列表。工具

播放列表是媒體播放列表或主播放列表。二者都是包含URI和描述性標籤的UTF-8文本文件。優化

媒體播放列表包含媒體片斷的列表,當播放時依次播放多媒體演示。編碼

這裏是一個媒體播放列表的例子:

 #EXTM3U #EXT-X-TARGETDURATION:10 #EXTINF:9.009, http://media.example.com/first.ts
   #EXTINF:9.009, http://media.example.com/second.ts
   #EXTINF:3.003, http://media.example.com/third.ts

第一行是格式標識符標籤#EXTM3U。該線包含#EXT-X-TARGETDURATION表示全部媒體片斷將會是10秒或更少。而後宣佈三個媒體分段。第一和第二是9.009秒長, 三是3.003秒。

要播放此播放列表,客戶端首先下載它而後下載並播放在其中聲明的每一個媒體分段。該客戶端將按照本文檔中的描述從新加載播放列表以發現任何額外的細分。數據應該經過HTTP [ RFC7230 ] 傳送,可是一般一個URI能夠指定任何能夠可靠傳輸的協議指定的資源按需。

主播放列表能夠描述更復雜的演示。一個主播放列表提供了一組變體流,其中每個描述了相同內容的不一樣版本。

變體流包括指定媒體的媒體播放列表以特定的比特率編碼,以特定的格式編碼,並以包含視頻的媒體的特定分辨率。

一個Variant流也能夠指定一組Renditions。譯叢是內容的替代版本,例如製做的音頻不一樣的語言或不一樣的攝像機角度錄製的視頻。

客戶應該在不一樣的變體流之間切換以適應網絡情況。客戶應根據用戶選擇Renditions優先。

關鍵詞「必須」,「不得」,「須要」,「應該」,「不該該」,「應該」,「不該該」,「推薦」,「可能」和「可選」文檔將按照RFC 2119 [ RFC2119 ]中的描述進行解釋。

三、媒體細分

媒體播放列表包含一系列組成的媒體片斷總體介紹。媒體段由URI和可選地一個字節範圍。

媒體播放列表中顯示了每一個媒體段的持續時間經過其EXTINF標籤(第4.3.2.1節)。

媒體播放列表中的每一個片斷都有惟一的整數媒體序列數。媒體中第一個片斷的媒體序列號播放列表爲0,或在播放列表中聲明(第4.3.3.2節)。每隔一段的媒體序列號等於媒體序列號以前的段加1。

每一個媒體段必須帶有編碼的延續從之前的媒體段的末尾的比特流序列號,一系列的值,如時間戳和連續性計數器必須不中斷。惟一的例外是媒體播放列表中第一個出如今媒體播放列表中的媒體細分媒體分段明確表示爲不連續(第4.3.2.3節)。未標記的介質不連續能夠觸發播放錯誤。

包含視頻的任何媒體片斷都應該包含足夠的內容信息來初始化視頻解碼器並解碼連續集合包含段中最後一幀的幀; 網絡若是細分中有足夠的信息,效率會獲得優化解碼段中的全部幀。例如,任何媒體細分包含H.264視頻應該包含一個IDR; 以前的幀第一個IDR將被下載,但可能被丟棄。

四、支持的媒體段格式

全部媒體片斷必須採用本節所述的格式。其餘媒體文件格式的傳輸未定義。

一些媒體格式須要一個相同的字節序列來初始化a能夠解析Media Segment以前的解析器。這種格式特定的序列被稱爲媒體初始化部分。媒體初始化部分能夠由EXT-X-MAP指定(第4.3.2.5節)標籤。媒體初始化部分不能夠包含樣本數據。

 

簡單的媒體播放列表

 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXTINF:9.009, http://media.example.com/first.ts
   #EXTINF:9.009, http://media.example.com/second.ts
   #EXTINF:3.003, http://media.example.com/third.ts
   #EXT-X-ENDLIST

Live Media播放列表,使用HTTPS

 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXT-X-MEDIA-SEQUENCE:2680 #EXTINF:7.975, https://priv.example.com/fileSequence2680.ts
   #EXTINF:7.941, https://priv.example.com/fileSequence2681.ts
   #EXTINF:7.975, https://priv.example.com/fileSequence2682.ts

說明:絕對

帶有加密媒體段的播放列表

 #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:7794 #EXT-X-TARGETDURATION:15 #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52" #EXTINF:2.833, http://media.example.com/fileSequence52-A.ts
   #EXTINF:15.0, http://media.example.com/fileSequence52-B.ts
   #EXTINF:13.333, http://media.example.com/fileSequence52-C.ts
 #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53" #EXTINF:15.0, http://media.example.com/fileSequence53-A.ts

主播放列表

 #EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000,AVERAGE-BANDWIDTH=1000000 http://example.com/low.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=2560000,AVERAGE-BANDWIDTH=2000000 http://example.com/mid.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=7680000,AVERAGE-BANDWIDTH=6000000 http://example.com/hi.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5" http://example.com/audio-only.m3u8

主播放列表I幀

 #EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000 low/audio-video.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=86000,URI="low/iframe.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=2560000 mid/audio-video.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=150000,URI="mid/iframe.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=7680000 hi/audio-video.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=550000,URI="hi/iframe.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5" audio-only.m3u8

主播放列表與替代音頻

 #EXTM3U #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English", \ DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en", \ URI="main/english-audio.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Deutsch", \ DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="de", \ URI="main/german-audio.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Commentary", \ DEFAULT=NO,AUTOSELECT=NO,LANGUAGE="en", \ URI="commentary/audio-only.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",AUDIO="aac" low/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",AUDIO="aac" mid/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",AUDIO="aac" hi/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5",AUDIO="aac" main/english-audio.m3u8

主播放列表與替代視頻

 #EXTM3U #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Main", \ DEFAULT=YES,URI="low/main/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Centerfield", \ DEFAULT=NO,URI="low/centerfield/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Dugout", \ DEFAULT=NO,URI="low/dugout/audio-video.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",VIDEO="low" low/main/audio-video.m3u8 #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Main", \ DEFAULT=YES,URI="mid/main/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Centerfield", \ DEFAULT=NO,URI="mid/centerfield/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Dugout", \ DEFAULT=NO,URI="mid/dugout/audio-video.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",VIDEO="mid" mid/main/audio-video.m3u8 #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Main", \ DEFAULT=YES,URI="hi/main/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Centerfield", \ DEFAULT=NO,URI="hi/centerfield/audio-video.m3u8" #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Dugout", \ DEFAULT=NO,URI="hi/dugout/audio-video.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",VIDEO="hi" hi/main/audio-video.m3u8
相關文章
相關標籤/搜索