HLS協(xié)議實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一.HLS介紹
HLS,Http Live Streaming 是由Apple公司定義的用于實(shí)時(shí)流傳輸?shù)膮f(xié)議,HLS基于HTTP協(xié)議實(shí)現(xiàn),傳輸內(nèi)容包括兩部分,一是M3U8描述文件,二是TS媒體文件。
1、M3U8文件
用文本方式對(duì)媒體文件進(jìn)行描述,由一系列標(biāo)簽組成。
#EXTM3U
#EXT-X-TARGETDURATION:5
#EXTINF:5,
./0.ts
#EXTINF:5,
./1.ts
#EXTM3U:每個(gè)M3U8文件第一行必須是這個(gè)tag。
#EXT-X-TARGETDURATION:指定最大的媒體段時(shí)間長(zhǎng)度(秒),#EXTINF中指定的時(shí)間長(zhǎng)度必須小于或等于這個(gè)最大值。該值只能出現(xiàn)一次。
#EXTINF:描述單個(gè)媒體文件的長(zhǎng)度。后面為媒體文件,如./0.ts
2、TS文件
DVB定義的文件格式,用于音視頻的網(wǎng)絡(luò)傳輸,其中音視頻按時(shí)間戳進(jìn)行交織。每個(gè)數(shù)據(jù)包大小為188個(gè)字節(jié)。
二.HLS實(shí)現(xiàn)類結(jié)構(gòu)圖
CHLSServer:進(jìn)行Socket偵聽(tīng),管理所的客戶端HLS請(qǐng)求。
CHLSClient:實(shí)現(xiàn)HTTP的請(qǐng)求響應(yīng),根據(jù)客戶端請(qǐng)求的HLS內(nèi)容,交給CHLSSource進(jìn)行處理。
CHLSSourceManager:所有HLS源管理器,HLS源可以是本地的文件,也可以是來(lái)自網(wǎng)絡(luò)或設(shè)備的實(shí)時(shí)數(shù)據(jù)源。
CHLSSource:實(shí)現(xiàn)具體的HLS請(qǐng)求,包括M3U8文件獲取和TS片段的獲取。
三.代碼片段





