互聯網內容創新的道路上短視頻源碼必走的路
實際上,互聯網的內容行業正在進階,從文字、圖片到視頻、直播,再到能填補用戶碎片時間的短視頻開發,這是一個趨于互動性、實時性的迭代。
從4G普及、資費下調、編解碼技術進步和移動硬件的品質提升,也為短視頻的發展提供了良好客觀因素。從產品形態層面看,短視頻本身也擁有創作門檻低、內容精煉、易于發酵等屬性,更易于傳播。綜合這幾點,短視頻源碼創業才如此蓬勃。那作為國內領先的云服務廠商,釋放更多技術能力,給開發者帶來便利是阿里云義不容辭的責任。
功能說明
1.錄制:支持斷點錄制、回刪、點擊拍攝、長按拍攝、美顏、實時濾鏡、閃關燈、攝像頭切換、分辨率設定等功能;
2.導入:支持從相冊選擇視頻、按視頻時長和畫面進行裁剪;
3.上傳:上傳本地文件到阿里云視頻點播平臺。
核心優勢
1.提供產品級SDK,最快2小時接入,節省自行開發耗費的人力物力,助你快速實現APP 短視頻功能;
2.接口簡單易用,開放性強,標準版(UI開源)可以根據業務自由定制UI;
3.錄制功能自帶斷點錄制、實時濾鏡、高效美顏功能,支持本地視頻導入壓縮裁剪;
4.迭代打磨,穩定可靠,視頻技術經釘釘、美柚、梨視頻、迅雷、貝貝網、寶寶樹、螞蜂窩等1000+應用商用驗證,穩定可靠;
基礎知識:I幀、B幀、P幀
I幀表示關鍵幀。你可以理解為這一幀畫面的完整保留;解碼時只需要本幀數據就可以完成。(因為包含完整畫面)
P幀表示這一幀跟之前的一個關鍵幀(或P幀)的差別。解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,P幀沒有完整畫面數據,只有與前一幀的畫面差別的數據)
B幀是雙向差別幀。B幀記錄的是本幀與前后幀的差別(具體比較復雜,有4種情況)。換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數據的疊加取得最終的畫面。
B幀壓縮率高,但是編解碼時會比較耗費CPU,而且在直播中可能會增加直播延時,因此在移動端上一般不使用B幀。
短視頻源碼關鍵幀緩存策略
一個典型的視頻幀序列為IBBPBBPBBP……
對于直播而言,為了減少直播的延時,通常在編碼時不使用B幀。P幀B幀對于I幀都有直接或者間接的依賴關系,所以播放器要解碼一個視頻幀序列,并進行播放,必須首先解碼出I幀,其后續的B幀和P幀才能進行解碼,這樣服務端如何進行關鍵幀的緩存,則對直播的延時以及其他方面有非常大的影響。
比較好的策略是服務端自動判斷關鍵幀的間隔,按業務需求緩存幀序列,保證在緩存中存儲至少兩個或者以上的關鍵幀,以應對低延時、防卡頓、智能丟包等需求。
延遲與卡頓的折中
直播的延時與卡頓是分析直播業務質量時,非常關注的兩項指標。互動直播的場景對延時非常敏感,新聞體育類直播則更加關注播放的流暢度。
然而,這兩項指標從理論上來說,是一對矛盾的關系——需要更低的延時,則表明服務器端和播放端的緩沖區都必須更短,來自網絡的異常抖動容易引起卡頓;業務可以接受較高的延時時,服務端和播放端都可以有較長的緩沖區,以應對來自網絡的抖動,提供更流暢的直播體驗。
當然,對于網絡條件非常好的用戶,這兩項是可以同時保證的,這里主要是針對網絡條件不是那么好的用戶,如何解決延時與卡頓的問題。
這里通常有兩種技術來平衡和優化這兩個指標。
一是服務端提供靈活的配置策略,對于延時要求更敏感的,則在服務端在保證關鍵幀的情況下,對每個連接維持一個較小的緩沖隊列;對于卡頓要求更高的直播,則適當增加緩沖隊列的長度,保證播放的流暢。
二是服務端對所有連接的網絡情況進行智能檢測,當網絡狀況良好時,服務端會縮小該連接的緩沖隊列的大小,降低延遲;而當網絡狀況較差時,特別是檢測到抖動較為明顯時,服務端對該連接增加緩沖隊列長度,優先保證播放的流暢性。
從技術角度來講短視頻SDK架構,分為四個層面,底層拆分成一個一個組件,在這些組件上組建自己的業務組件,包括編輯和播放。在這之上,我們再提供比較穩定恩UI控件。這個架構有幾個特點,我們提供產品級別的DEMO,用戶可以不做任何修改直接上線,SDK的易用性比較強。底層是高度模塊化的,開發者可以根據不同的業務場景來按需求打包,控制包的大小。
除短視頻端功能外,做好一個短視頻源碼SDK的核心我們認為有幾個要點:清晰度,穩定性,合成速度可結合全鏈路的視頻云服務和云計算產品,短視頻開發需求一站式解決。