使用一對一交友app源碼實作平台搭建的過程中,經常會遇到很多坑。主要可以總結為兩個方面:裝置差異及網絡環境等場景下帶來的技術考驗。在推流端可以檢測網絡狀态或動态切換碼率,以保障網絡切換時的推流流暢。其次,編碼、推流和封包這一部分的邏輯也可以進行微調,可以嘗試選擇性丢幀(比如優先丢視訊參考幀),這樣也可以減少要傳輸的資料内容,同時又達到了不影響直播畫質和視聽流暢的目的。
1.一對一直播技術延遲優化原理
(1)影響視訊清晰度的名額:幀率、碼率、分辨率、量化參數(壓縮比)。
(2)影響視訊流暢度的名額:碼率、幀率。
其他名額:直播是耗費流量和性能較大的一類行業,耗電量和發熱都算作其他名額之一,大部分情況下發熱和耗電量正比,可以使用耗電量暫時替代。

2.直播卡頓和首幀優化
大部分直播app都會出現網絡不穩定的情況,有可能是CDN節點不足,也有可能是主播端自身和代碼的各種問題。通常出現卡頓的直接原因是本地buffer為空導緻播放停止,但是從主播端到觀看端整個流程看,網絡狀況和伺服器性能都可能會導緻問題加劇。視訊中的原始圖像資料會采用H.264編碼格式進行壓縮,音頻采樣資料會采用AAC編碼格式進行壓縮。
3.服務端的優化
在直播伺服器中,支援設定一個cache用于存放GOP用戶端播放。當直播伺服器緩存了目前的GOP序列,然後播放端請求資料的時候,CDN會從I幀傳回給用戶端,進而保證用戶端能夠快速擷取I幀進行顯示。當然,由于緩存的是之前的視訊資訊,當音頻資料達到播放端之後,為了音視訊同步,播放器會進行視訊的快進處理。(這種情況的影響很小)
4.播放端的優化
DNS解析意味着要将一個域名為xxx.com解析成為ip的過程。修改播放器邏輯,基于FFmpeg二次開發,FFmpeg啟播視訊都是拿到視訊完整資訊才能啟播。如果隻拿到部分資訊就啟播,那麼就需要修改代碼了。
5.視訊的優化
如果僅僅隻是優化首開延遲,可以在視訊幀之間插入較多的關鍵幀,這樣一來,用戶端收到視訊流之後可以盡快解碼。但是如果需要優化傳輸過程中的累積延遲,就會盡可能減少使用關鍵幀,在保證同等視訊品質的情況下,I幀越多碼率越大,傳輸所需要的網絡帶寬也就越多。這意味着什麼?意味着累積延遲可能越大。當然,這個優化效果可能在秒級延遲的系統中并不是很明顯,但是在100ms甚至更低延遲的系統中就會非常明顯。此時,盡量使用ACC-LC Codec 來編碼音頻。雖然HE-ACC和HE-ACC 2 編碼效率高,但是編碼所需時間相對更長,而産生更大體積的音頻所造成的傳輸延遲對于視訊流的傳輸來說影響更小。
以上就是一對一交友app源碼實作平台搭建時經常會遇到的坑,雖然都是一些小的細節部分,俗話說“細節決定成敗”,但是如果在開發過程中不把細節工作做好,那麼也是沒有辦法在直播行業中長期發展下去的。
本文聲明原創,轉載請注明出處。