我正在開發Android硬件加速視頻解碼器,用於解碼實時H264 Annex B流。經過一番研究,似乎我需要弄髒手才能做到這一點。我找到了幾個關鍵字,如OMXCodec
,Android的OS stagefright
和ffmpeg的stagefright
,MediaCodec
API,GStreamer
。同時我也瞭解到 - 硬件不可知的實現無法支持所有供應商的硬件。在這個階段,所有這些都讓我感到非常困惑,因爲我沒有找到任何直接的資源來推進它們中的任何一個。我的要求是 -用於H264流的Android硬件加速視頻解碼器
- Android的硬件支持至少對於高通的Snapdragon,三星的Exynos和Tegra的
- 執行必須在本地C/C++層(不是Java層)
- 支持從Android 4.1.x開始Jellybean就足夠了
- 無需執行後續階段 - 像渲染,因爲它們已經在工作。只需要解碼輸入緩衝區併產生解碼輸出緩衝區即可繼續到現有的管道。
我試圖從Android的stagefright的AwesomePlayer.cpp,SimplePlayer.cpp和ffmpeg stagefright的命令行可執行代碼中獲得一些提示。但是沒有什麼比我選擇和處理這些東西更有意義。
我該怎麼辦?有沒有任何有用的資源來獲得清晰的直覺?
在此先感謝!
感謝您的建議。是的,我也被告知要避免ffmpeg的許可證問題。我還提出了'MediaCodec API的JNI接口方法',但如果我可以在純C/C++層中完成,那將會更好。有一個問題,你是否需要做額外的工作來支持不同廠商的硬件?或者你的實現是硬件獨立的? –
從理論上講,MediaCodec API是硬件不可知的,事實上我迄今已經注意到了這一點 - 它已經在我嘗試過的每一種設備上工作過。 –
僅供參考我正在進行編碼和解碼,並使用API級別18中引入的MediaCodec功能。由於您只需要解碼,因此可能會回到API級別16. –