XXX客戶的直播流是rtmp push 進入Wowza Streaming Engine的,在確認流已經(jīng)注入成功后,客戶用Http REST API 去啟動錄制。要求錄制的文件格式是flv。比如這是一堂在線教育的課程,可能要錄制30分鐘到1個小時。
錄制完成后,客戶將flv文件下載下來,再用ffmpeg轉(zhuǎn)換為mp4后提供給老師,用于事后本地觀看(當然Wowza也支持錄制為mp4,只是在這個案例中客戶將它錄制為flv了)。 例如用Windows Media player播放視頻文件,但發(fā)現(xiàn)音視頻不同步,聲音落后于畫面的播放進度(大概遲了1秒)。 同時,發(fā)現(xiàn)用VLC本地播放或者用H5網(wǎng)絡播放(HLS)并沒有音視頻不同步的現(xiàn)象。
然后客戶用flvAnalyser軟件對這個flv做了分析,如下圖所示:


根據(jù)這個軟件的分析,在flv的script信息之后緊跟著視頻(H.264)的AVC Sequence Header,里面包含SPS和PPS信息,而在1秒多以后才有了第一個視頻關鍵幀。
另外,據(jù)客戶介紹,這個情況只是偶爾發(fā)生,特別是針對GOP比較大的情況下(比如GOP大于8秒)。而且只要這個視頻關鍵幀滯后了,在Windows Media player下一定會出現(xiàn)音視頻不同步的情況。
當然,你可以說這可能是WindowsMedia Player的兼容性問題,因為畢竟VLC、QQ影音、H5網(wǎng)絡播放都是正常的。
但是,客戶還是希望能讓WowzaStreaming Engine在錄制時避免這個問題。
根據(jù)前面的錄制參數(shù),我們大體清楚了WowzaStreaming Engine在開始錄制時的幾種可能的策略,再結(jié)合這個案例的情況,應該可以推測出來Wowza Streaming Engine在開始錄制時確實等了至少1秒后才 檢測到了視頻關鍵幀。那么解決的方法/思路大致如下:
1. 讓編碼端(比如主播端)采用更小的GOP,比如2秒。這樣檢測到(遇到)關鍵幀的速度會更快。
2. 設定2-3倍GOP大小的backBufferTime,這樣至少可以讓Wowza Streaming Engine快速找到2-3個關鍵幀。如果說找到一個關鍵幀還不足以開始錄制的話,2-3個總是可以啟動錄制了吧?不至于在視頻關鍵幀前錄了過多的音頻。
3.其它Wowza StreamingEngine的錄制參數(shù),采用默認值即可,即startOnKeyFrame為true, defaultAudioSearchPostion為true。
其實,大家可以看出來,問題的關鍵還是在于編碼端的GOP設置。如果GOP設置過大,對于直播業(yè)務,無論如何也是不可取的。
其實也沒有太復雜。還是得多做測試。
Wowza Streaming Engine 4是業(yè)界功能全面、API接口豐富的流媒體Server產(chǎn)品,采用它作為流媒體服務器產(chǎn)品的案例很多,直播、在線教育、IPTV都有它的用武之地。
京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室
北京哲想軟件集團旗下網(wǎng)站:哲想軟件 | 哲想動畫