ts流在flush播放器中無法正常播放問題及解決(只有聲音沒有畫面)

問題描述:

第一次遇到這個問題是複用後的TS流在VLC上播放正常,但在蘋果手機的瀏覽器上無法正常播放,只有聲音沒有畫面。

注:蘋果手機自帶的瀏覽器播放器是flash的,所以在flash播放器上一般都會有這種問題,其他播放器不確定會不會導致此問題。

爲什麼這麼做?

在網上搜索資料查到,蘋果官網說法:查看第10條 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html

一般文檔沒有對AUD進行描述,其實這是一個幀開始的標誌,字節順序爲:00 00 00 01 09 f0,從結構上看,有start_code, 所以確實是一個NALU,類型09在H264定義裏就是AUD(分割器)。大部分播放器可以在沒有AUD的情況下正常播放。緊隨AUD,一般是SPS/PPS/SEI/IDR的組合或者簡單就是一個SLICE,也就是一個幀的開始。像Flash這樣的播放器,每次需要一個完整的幀數據,那麼把2個AUD之間的數據按照格式打包給播放器就可以了。

解決辦法:

在真正的幀數據之間加上AUD幀就可以了。

在ES層數據上檢測到起始頭start_code後判斷幀類型;如果是幀類型爲09不添加AUD,如果是其他則添加上AUD幀(即00 00 00 01 09 f0)。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章