背景需求
對於攝像機直播,客戶反饋的最多就是實現web直播、擺脫插件,可以自定義集成等問題,
對於熟悉LiveNVR已經完美的解決了這些問題。然而對於web播放也存在一些問題,通常我們web播放RTMP流使用的是flash,在這個過程中就會出現一個問題,隨着web一直播放直播時間的增加,視頻直播的延時也會累積起來,延時也就越大。
問題分析
通過自我調研和客戶反饋得出在ckplayer、videojs、aliplayer等播放器都會有類似問題,出現該問題的原因在於我們播放rtmp視頻流的時候啟用了flash,咱們的LiveNVR調用的videojs播放rtmp視頻流依然會有這個問題的存在。
解決參考
videojs是一款開源的播放器,對於播放器自身定位不一定是實時的直播。我們對他進行了重新的編譯,將緩存設置更小,同時videojs也有對應的參數是用來對應播放實時流的。
經過我們實時的測試發現,編譯出的低延時,追幀版本的播放器在實測過程中對網絡有一定的要求,因為播放器在播放時為了保證實時性就會一直追幀,這樣就不會存在累計延時的情況了,但是,當網絡環境差的時候,我們的網絡無法完全滿足直播視頻數據時就會在直播會面中出現類似掉幀的情況。
LiveNVR的處理方式
LiveNVR是實時的進行直播視頻流,因此在視頻的web直播中我們也有遇到延時累計的問題。我們采用的方式是將兩個播放形式都集成到我們的播放系統中,並且可以通過播放頁面來進行播放模式的選擇
我們將直播分為了實時直播和流暢直播,顧名思義,實時就是保證直播的實時性,保證播放器的低延時直播;流暢直播則為可以在網絡環境不是特別理想的情況下依然可以 進行流暢的視頻直播。
經過播放一段時間的對比就可以看出兩者這件的差別。
注意為了方便用戶的集成,我們將videojs的功能通封裝成播放器 liveplayer
具體調用方式和使用方法見鏈接:https://www.npmjs.com/package/@liveqing/liveplayer
關於LiveNVR
LiveNVR能夠通過簡單的網絡攝像機通道配置,將傳統監控行業里面的高清網絡攝像機IP Camera、NVR等具有RTSP協議輸出的設備接入到LiveNVR,LiveNVR能夠將這些視頻源的音視頻數據進行拉取,轉換為HTTP-FLV/RTMP/HLS,進行全平台終端H5直播(Web、Android、iOS),並且LiveNVR能夠將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發;