問題背景:
音視頻相較於其他業務開發,門檻比較高的一個原因開發過程遇到問題比較多,而且每個問題背後都需要一定的理論基礎和豐富的調試經驗的才能分析出來。有些音視頻開發小白,遇到一些諸如視頻卡頓、聲畫不同步等問題完全一臉懵逼,不知道從何處進行分析。我曾經在海康開發維護過一段時間的線上服務和基礎庫,一天基本需要排查十幾個這種疑難雜症,而且這些問題表現形式非常靈活,有些是黑屏、花屏,有些直接播放端卡死發熱。究其背後原因,有些是用戶使用產品的姿勢不對如配置攝像機的參數錯誤,有些是網絡傳輸原因,有些是播放引擎解碼渲染原因等。
總結下來,這些問題雖然表型形式五花八門,背後的原因也各不相同。把這些問題一一講解清楚,是不現實的也是沒必要的。因爲我們只要掌握一套科學的分析方法,觸類旁通,遇到任何問題都按照這種思路分析,基本都能刨根到底,最後拿出好的解決方案進行解決。一款好的產品不一定必須是技術最高端,界面最酷炫,有時穩定性和可用性壓倒一切,對於視頻監控領域,產品low點都沒事,但是一定要穩定。如果剛好在熱點事件敏感時期,你的攝像機丟失錄像或者播放卡頓了,會帶來非常大的用戶損失,一些嚴重問題甚至會帶來法律上的風險。
本系列就是想把我以前給客戶排查問題以及現在我們開發音視頻系統遇到的實際問題作爲案例,然後分析原因,拓展其中的理論,給出好的解決思路,讓你在音視頻開發過程中有章法可尋。當然這些問題不一定和你遇到的問題一樣,希望更多掌握解決這種問題的科學方法,其次希望你多交流,我多補充,成爲一個比較有含金量的系列。
想要了解更多,關注本公衆號!
本系列預告內容:
這裏羅列出我平時遇到最多的音視頻開發問題,後面包括但不限於這些問題,會給大家分享下這些問題的表現形式,原因和解決思路。如果你還想讓分析一些其它問題,歡迎你發消息和郵件,在能力之內會加入到推送計劃。
1. 播放失敗問題,起播黑屏或者loading;
2. 播放卡頓、花屏問題;
3. 視頻聲音不同步,俗稱的聲畫同步問題;
4. 回放的拖動不准問題;
5. 播放有雜音,迴音問題;
6. 直播的高標清切換問題;
7. 倍速播放實現不准問題;
8. 播放首開畫面慢問題;
9. 播放過程中的跳秒,畫面回退問題;
10. 其它問題(待續,歡迎補充);
解決問題的幾個原則:
上面我羅列了各種各樣的播放問題,其實這些問題只是表現的播放端上,給用戶帶來了非常糟糕的用戶體驗,但是這些問題不一定是播放端造成的,有些是在傳輸過程造成的,有些發生在服務端,甚至有些問題出現在視頻源端也就是編碼端。爲了後面分析問題,我這裏放一張音視頻系統經典的架構圖,無論是直播還是點播,也無論你的音視頻系統應用在在線遊戲、遠程教育還是視頻監控,基本都是可以用該圖進行表示,所以掌握這個圖很重要,這也是分析這些問題的基本基本思路:
這些問題排查要掌握三點:
1. 一定要分過程和階段來分析,播放端出問題只是排查的起點但是不是問題的終點,到底哪個階段有問題,需要找到音視頻流的輸入和輸出,一步步來。
2. 要還原到每個階段輸入時的狀態,比如爲了證明不是播放端的問題,那在碼流剛送入播放端就把文件碼流寫下來,用專業工具分析和播放,如果寫的文件播放都有問題,那一定證明問題不在播放端自己,應該在送入之前。可以拿出證據,讓涉及其它階段的人看。如果播放和分析沒問題,但是在自己播放客戶端就有問題,那肯定是出在自己解碼或者渲染階段,需要你自己進一步的定位和分析。
3. 藉助專業工具以他山之石來幫助自己定位,音視頻針對不同的封裝、編碼、傳輸協議有很多專業的工具,要善於用這些開源工具來爲自己問題定位找到答案,甚至花點時間給自己寫寫分析工具,這也是音視頻開發人員值得做的。
音視頻問題分析下來就是核心三點:分階段分析法、還原前一階段原始數據法、讓專業工具幹專業的事情法。只要把上面三點靈活應用在自己問題分析排查階段,基本都是能找到問題的原因和答案的。
問題現象:
下面通過視頻和圖片給大家展現一些常見播放,讓大家有個直觀感受,便於後面這個系列的開展。下面的圖片和視頻都來自實際客戶的反饋和開發一線。
起播失敗導致黑屏
播放花屏馬賽克現象
今天就說這麼多,祝您工作順利!
往期回顧文章: