VLC和WebRTC等開源庫關於硬解軟解的策略

VLC和WebRTC等開源庫關於硬解軟解的策略

一、移動端OS角度硬解能力支援情況
Android
4.1.2以前:    不支援
4.1.2-5.0     Java側MediaCodec
5.0以上    Java側MediaCodec,C側nativeMediaCodec

IOS
8.0以前    不支援硬編硬解,僅軟編軟解
8.0及以後    支援硬編硬解VideoToolboxDecoder

二、開源庫角度
WebRTC
檢測是否支援硬解,如果支援,使用OpenGL建立SurfaceView,設定給硬解

VLC
4.3及以上使用MediaCodec硬解
[4.1-4.3) 檢測是否支援硬解

三、自研播放器&採集釋出硬編解策略選擇

【方案一】

【方案二】:僅判斷作業系統,OS<5.0使用ffmpeg軟解;OS>5.0使用ndkMediaCodec硬解碼

 

【方案三】:完美方案:先判斷作業系統版本:

小於4.1.2使用ffmpeg軟解;

[4.1.2,4.3)優先使用java層mediaCodec硬解,同時檢測硬解效果是否達標,如果不達標切換為軟解;

[4.3,5.0)使用java層mediaCodec硬解;

[5.0, ∞),使用C層的ndkMediaCodec硬解;

因為4.3版本以後,mediaCodec硬解能力作為平臺相容性測試CTS(compatility test suit)必備基礎,所以4.3及以上無需再檢測硬解是否達標。

 

結論:鑑於當前軟解效果也不錯,因此我們使用方案二簡單處理,後期看效果再判斷是否啟動方案三優化。