Android硬解碼與軟解碼

原文鏈接

一、硬解碼

硬解:就是調(diào)用GPU的專門模塊編碼來解,減少CPU運算,對CPU等硬件要求也相對低點。軟解需要CPU運算,變相加大CPU負擔耗電增加很多。硬件解碼是將原來全部交由CPU來處理的視頻數(shù)據(jù)的一部分交由GPU來做,而GPU的并行運算能力要遠遠高于CPU,這樣可以大大的降低對CPU的負載,CPU的占用率較低了之后就可以同時運行一些其他的程序了。
對于android設備,目前用得比較多的soc就是高通、海思和聯(lián)發(fā)科,這些soc大都集成了很多的功能,CPU、GUP、DSP、ISP包括視頻解碼、音頻解碼等等,所以我們說的是SOC而不是直接說CPU,目前手機的中央處理器的集成度非常高,下面是我們大華為的海思麒麟950的組成圖:

我們可以看到這顆SOC集成了單獨的音視頻解碼單元。
在Android中使用硬件解碼直接使用MediaCodec就可以了,雖然MediaPlayer也是硬件解碼,但是被封裝得太死了,支持的協(xié)議很少。而MediaCodec就很好拓展,我們可以根據(jù)流媒體的協(xié)議和設備硬件本身來自定義硬件解碼,代表播放器就是Google的ExoPlayer。

點擊打開:Google開源ExoPlayer

硬件碼優(yōu)勢:更加省電,適合長時間的移動端視頻播放器和直播,手機電池有限的情況下,使用硬件解碼會更加好。減少CPU的占用,可以把CUP讓給別的線程使用,有利于手機的流暢度。

二、軟解碼

軟解碼:即通過軟件讓CPU來對視頻進行解碼處理,就是通過CPU來運行視頻編解碼代碼,我們最最常見的視頻軟解碼開源看就是FFmpeg:

點擊打開:B站開源播放器ijkplayer

軟解碼優(yōu)勢:具有更好的適應性,軟件解碼主要是會占用CUP的運行,軟解不考慮社備的硬件解碼支持情況,有CPU就可以使用了,但是占用了更多的CUP那就意味著很耗費性能,很耗電,在設備電量充足的情況下,或者設備硬件解碼支持不足的情況下使用軟件解碼更加好!

三、總結(jié)

在Android設備硬件支持的情況下優(yōu)先使用Android設備的硬件解碼,減少CPU的占用,更加省電。
在Android設備硬解不支持的情況下選擇使用軟解碼,不管怎么樣,視頻至少能夠播放,具有更好的適應性,但是增加了CPU的占用,更加費電。
軟硬結(jié)合才是王道,根據(jù)實際情況合理選擇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容