天天看點

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) 檢測是否支援硬解

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

【方案一】

VLC和WebRTC等開源庫關于硬解軟解的政策

【方案二】:僅判斷作業系統,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及以上無需再檢測硬解是否達标。

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

繼續閱讀