AVPlayer播放m3u8視頻的問(wèn)題

問(wèn)題描述

項(xiàng)目中實(shí)現(xiàn)了類(lèi)似“今日頭條”中“西瓜視頻”的功能,在列表Cell上播放視頻,實(shí)現(xiàn)方案中,使用ZFPlayer作為播放器,ZFPlayer是一個(gè)基于AVPlayer的開(kāi)源類(lèi)。

在列表上播放視頻,切換視頻時(shí),為了避免反復(fù)創(chuàng)建和銷(xiāo)毀播放器,ZFPlayer實(shí)現(xiàn)了單例模式,在播放完一個(gè)視頻之后,播放器不會(huì)被銷(xiāo)毀。

通過(guò)Charles抓包,發(fā)現(xiàn)在播放完一個(gè)m3u8視頻之后,還會(huì)隔一段時(shí)間一直加載一個(gè)m3u8文件,抓包截圖如下:

發(fā)現(xiàn)問(wèn)題

網(wǎng)上翻閱資料,對(duì)m3u8做了一些了解,簡(jiǎn)單來(lái)說(shuō),m3u8就是將一整個(gè)視頻分割成小切片,以提高下載播放的速度,以上的例子中,一共加載了8個(gè)視頻切片。

在播放m3u8的時(shí)候,會(huì)先下載一個(gè).m3u8的索引文件,文件中記錄了視頻的一些信息及切片地址等,如下:

從上面這張圖可以發(fā)現(xiàn),文件中并沒(méi)有指明#EXT-X-PLAYLIST-TYPE,翻閱官方文檔可知道,不指明#EXT-X-PLAYLIST-TYPE、指明#EXT-X-PLAYLIST-TYPE:EVENT這兩種情況,都會(huì)被認(rèn)為是一個(gè)直播流,因?yàn)楸徽J(rèn)為是一個(gè)直播流,在播放器沒(méi)銷(xiāo)毀的情況,播放器會(huì)一直加載m3u8索引文件,來(lái)獲取新的視頻切片信息。

只有指明#EXT-X-PLAYLIST-TYPE:VOD的時(shí)候,才會(huì)被認(rèn)為是一個(gè)視頻點(diǎn)播源,通過(guò)Charles將請(qǐng)求回復(fù)Map Local,并添加上#EXT-X-PLAYLIST-TYPE:VOD,經(jīng)檢驗(yàn),播放完視頻之后,不再加載.m3u8索引文件。

之后與后臺(tái)溝通,是否能加上這個(gè)參數(shù),后臺(tái)表示視頻轉(zhuǎn)碼使用的是騰訊的轉(zhuǎn)碼庫(kù),貌似不支持添加這個(gè)參數(shù),表示疑問(wèn)?

挖掘問(wèn)題

沒(méi)能及時(shí)發(fā)現(xiàn)問(wèn)題,主要原因是因?yàn)閷?duì)m3u8的不了解,以后還需要對(duì)這方面多了解多研究。

相關(guān)閱讀

官方文檔-About HTTP Live Streaming
m3u8初步了解-初識(shí) HLS 協(xié)議

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容