短視頻面臨的架構問題;
1.短視頻APP開發中的數據處理需求
客戶端主要處理視頻效果疊加、人臉識別和各種美顏算法。同時客戶端處理也會增加壹些必要的轉碼和水印視頻處理。
目前客戶端的視頻編解碼方式將會是軟編碼和硬編碼。軟編碼主要是兼容性更好,編碼效果更好,但缺點是消耗的能量更多,速度更慢。在顯卡的幫助下,硬編碼可以獲得更低的能耗和更快的速度,但兼容性和效果較差,尤其是壹些低配機型。所以目前多采用組合的方法。
服務器的處理主要包括壹些視頻審計和轉碼,以及壹些幀提取和截圖生成。目前使用ffmpeg進行壹些處理。服務器本身需要考慮壹些點,因為資源消耗比較高,所以機器數量會比較多,所以在服務器上做的視頻處理操作會盡量控制在合理的範圍內。
2.短視頻APP開發中的音視頻同步問題。
媒體內容播放時,最頭疼的就是音視頻不同步。技術上,解決音視頻同步問題的最佳方案是時間戳:首先選擇壹個參考時鐘(要求參考時鐘上的時間線性增加);產生數據流時,每個數據塊都根據參考時鐘上的時間(壹般包括開始時間和結束時間)進行時間戳標記;回放期間,讀取數據塊上的時間戳,並根據當前參考時鐘上的時間安排回放。
可以看出,避免音視頻同步的關鍵有兩個——壹個是在生成數據流時正確地給數據流打上時間戳。如果數據塊本身的時間戳有問題,回放時再怎麽調整也無濟於事。時間戳時,視頻流和音頻流都參考參考時鐘的時間,數據流之間不會有參考關系;換句話說,視頻流和音頻流是由中立的第三方(即參考時鐘)同步的。第二個關鍵點是回放時基於時間戳的數據流控制,即對提前或延遲到達的數據塊采取不同的處理方法。