FMUSER更輕鬆地傳輸視頻和音頻!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
HLS和Http Live Streaming是Apple定義的用於實時流傳輸的協議。 HLS是基於HTTP協議實現的。 傳輸內容包括兩部分,一個是M3U8描述文件,另一個是TS媒體文件。
1. M3U8文件
媒體文件以文本形式描述,該文本由一系列標籤組成。
#EXTM3U
#EXT-X-TARGETDURATION:5
#EXTINF:5,
./0.ts
#EXTINF:5,
./1.ts
#EXTM3U:每個M3U8文件的第一行必須是此標記。
#EXT-X-TARGETDURATION:指定最大媒體段時間長度(秒)。 #EXTINF中指定的時間長度必須小於或等於此最大值。 該值只能出現一次。
#EXTINF:描述單個媒體文件的長度。 隨後是媒體文件,例如./0.ts
可以通過HTTP在iOS設備和Mac上分發它。 播放列表標準是m3u擴展的m8u3文件,媒體文件是MPEG2-TS或AAC文件(僅音頻)。
m3u8文件有兩種應用方案:
多速率自適應流
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 1280000
#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 2560000
#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 7680000
#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 65000,CODECS =“ mp4a.40.5”
http://example.com/audio-only.m3u8
單速率適配流
#EXTM3U
#EXT-X-TARGETDURATION:5220
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
國際標準組織(International Standards Organization)定義了該rfc文檔:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
m3u8文件是m3u文件的擴展。 擴展關鍵字在rfc中定義:
其中:
#EXT-X-TARGETDURATION
定義每個TS的最大持續時間。
#EXT-X-MEDIA-SEQUENCE
定義當前m3u8文件中第一個文件的序列號。 每個ts文件在m3u8文件中都有一個固定且唯一的序列號。 序列號用於切換MBR期間對齊的編碼率。
#EXT-X-KEY
定義密鑰文件的加密方法和URL,以獲取16字節密鑰文件來解碼ts文件。
屬性:
方法
網址
#EXT-X-PROGRAM-DATE-TIME
第一個文件的絕對時間
#EXT-X-ALLOW-CACHE
是否允許緩存。
#EXT-X-ENDLIST
指示m3u8文件的結尾。 Live m3u8沒有此標籤。
#EXT-X-STREAM-INF
屬性:
BANDWIDTH指定比特率
程序ID唯一ID
CODECS指定流的編碼類型
#EXT-X不連續
遇到標籤時,以下屬性已更改:
文件格式
曲目數量和類型
編碼參數
編碼順序
時間戳序列
#EXT-X-VERSION可以使用或不使用此屬性,您不能使用
M3U8分為頂級M3U8和第二級M3U8。 頂級M3U8主要用於多速率適配。 第二級M3U8是真實的切片文件。
默認情況下,客戶端將首先選擇比特率最高的請求。 如果發現無法達到比特率,它將請求一個低比特率的流
實際使用的頂級M3U8文件如下:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID = 201273221265,BANDWIDTH = 358400
11.立方米
#EXT-X-STREAM-INF:PROGRAM-ID = 201273221265,BANDWIDTH = 972800
22.立方米
上面的頂級M3U8文件定義了兩個第二級文件11.m3u8和22.m3u8,客戶端將選擇其中一個文件來獲取其內容。
輔助M3U8文件的內容如下:
#EXTM3U
#EXT-X-VERSION:1
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3,
1-4.ts
#EXTINF:8,
1-6.ts
#EXTINF:8,
1-8.ts
#EXTINF:8,
1-10.ts
#EXTINF:8,
1-12.ts
#EXTINF:8,
1-14.ts
#EXTINF:8,
1-16.ts
#EXTINF:9,
1-18.ts
#EXTINF:6,
1-20.ts
#EXTINF:8,
1-22.ts
#EXTINF:9,
1-24.ts
#EXTINF:3,
1-26.ts
#EXT-X-ENDLIST
客戶端獲取上述輔助M3U8文件後,它將繼續在內部請求文件,然後可以播放該文件。
上面是關於點播情況和實時廣播的情況,M3U8文件中將包含一些屬性以告知它是實時的,並且客戶端將定期請求新的M3U8文件。
//當HLS實現點播和直播時,M3U8文件的區別
1.問題描述
最近,我使用HLS(HTTP實時流)進行了轉碼切片回放測試,以進行實時廣播。 每個TS分割時間為10s,並根據TS分割文件生成以下實時m3u8文件
複製代碼
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:10
#EXTINF:10
hls / 1.ts
#EXTINF:10
hls / 2.ts
#EXTINF:10
hls / 3.ts
#EXTINF:10
hls / 4.ts
#EXTINF:10
hls / 5.ts
#EXTINF:10
hls / 6.ts
#EXTINF:10
hls / 7.ts
#EXTINF:10
hls / 8.ts
#EXTINF:10
hls / 9.ts
#EXTINF:10
hls / 10.ts
複製代碼
將上面的m3u8文件另存為live.m3u8,將其放在Apache文檔目錄中,並使用VLC播放以下URL:
http://localhost/live.m3u8
測試發現開始播放的第一個文件不是1.ts。 經過幾次測試,發現:
只要列表中有三個以上文件,列表中的最後三個文件將始終播放
2。 解決問題
很可悲的是,在搜索互聯網之後,我沒有找到任何有效的信息。 一個夥伴遇到了同樣的情況,解決問題後他是否分享了他的經驗?
與同事協商後,該同事說這是可能的,因為實時m3u8文件列表需要實時更新。 如果我們進行測試,則可以先在最後添加#EXT-X-ENDLIST。 此方法已經過測試,可以工作,但是不再使用m3u8模式
再次搜索互聯網後,我確認我終於找到了實時的m3u8描述
實時播放列表(滑動窗口)
對於實時會話,通過在創建新媒體文件並使之可用時從文件中刪除媒體URI來更新索引文件。
重要:實時播放列表中不存在EXT-X-ENDLIST標記,這表示新的媒體文件將在可用時添加到索引文件中。
請參見清單3,獲取示例實時播放列表,該示例將在會話開始時出現。
清單3在會話開始時的實時播放列表。
複製代碼
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10,
文件序列1.ts
#EXTINF:10,
文件序列2.ts
#EXTINF:10,
文件序列3.ts
#EXTINF:10,
文件序列4.ts
#EXTINF:10,
文件序列5.ts
複製代碼
對於從播放列表文件中刪除的每個媒體URI,EXT-X-MEDIA-SEQUENCE標籤的值必須增加1。 媒體URI必須按照它們在播放列表中出現的順序從播放列表文件中刪除。 更新後的索引文件將移動窗口呈現為連續流。 這種類型的會話適用於連續廣播。
使用新的媒體URI更新播放列表後,以下是同一播放列表:
清單4更新媒體URI後的實時播放列表。
複製代碼
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:2
#EXTINF:10,
文件序列2.ts
#EXTINF:10,
文件序列3.ts
#EXTINF:10,
文件序列4.ts
#EXTINF:10,
文件序列5.ts
#EXTINF:10,
文件序列6.ts
複製代碼
3.live m3u8更新規則
實時m3u8文件列表需要不斷更新,更新規則為:
刪除文件播放列表中的頂部文件(認為已播放)
不斷更新EXT-X-MEDIA-SEQUENCE標籤,以1遞增
4.實驗
編寫一個小程序以生成實時m3u8進行測試
用法:
m3u8_gen.exe start_num list_count持續時間filename.m3u8 [prefix]
用法示例:
m3u8_gen.exe 1 3 10 live.m3u8 hls /
生成live.m3u8文件為
複製代碼
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:10
#EXTINF:10
hls / 1.ts
#EXTINF:10
hls / 2.ts
#EXTINF:10
hls / 3.ts
複製代碼
編寫BAT腳本每3秒更新一次live.m8u10文件
複製代碼
關閉@echo
f
|
輸入電子郵件以獲取驚喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
FMUSER更輕鬆地傳輸視頻和音頻!
聯絡我們
分類
電子通訊