案例現象-H5播放FLV起播慢
阿裡雲視訊直播服務提供了RTMP/FLV/HLS 三種協定格式的播放位址。本案例遇到的問題是,同一路直播流,使用H5播放器播放RTMP和HLS流正常,而播放FLV流則起播速度非常慢,超過2分鐘才能播放出畫面。
使用Flash播放器正常
由于RTMP和HLS是正常的,是以可以排除是GOP引起的起播慢。為了對比測試,用Flash去測試播放FLV流,發現速度非常快。這裡推薦兩個Flash播放器
(1)阿裡雲Web播放器
Aliplayer
(2)第三方Flash播放器,示例HTML代碼以及播放效果如下
<object>
<embed src="http://www.cutv.com/demo/live_test.swf" width="100%" height="100%"></embed>
</object>
使用FFplay播放器異常
為了增加可比性以及分析下直播流音視訊格式,是以用FFMPEG的播放工具FFplay去播放測試,發現同樣是播放FLV流速度很慢。播放RTMP原始流檢視Meta資訊發現該路直播流隻有視訊資訊,無音頻資訊,具體結果如下圖所示
直播實時監控分析
直播服務控制台提供了實時監控,參考阿裡雲官網幫助文檔
檢視直播推流實時監控,可以看到直播流的音頻頭和視訊頭資訊。其中AAC是音頻頭,AVC是視訊頭,如果推流端沒有推音頻和音頻頭,那麼這裡的AAC監控項資料就會是0,本案例就是這種情況。
結論和解決方案
通過以上測試結果和相關排查可以确認該問題跟不同播放器解碼特性有關,結合相關資料進一步分析确認,大部分播放器器預設會等FLV流的音頻,本案例中由于FLV流沒有音頻,導緻播放器一直在"傻等",是以起播非常慢。
目前阿裡雲直播支援
純音頻和純視訊直播,可以通過在播放URL後加onlyvideo=1參數來實作純視訊直播,加onlyaudio=1參數來實作純音頻直播。增加onlyvideo=1以後,阿裡雲直播服務在FLV封裝格式中會明确聲明沒有音頻,可以避免播放"傻等"。