- 硬解摊册,用自帶播放器播放肤京,android中的VideoView
- 軟解,使用音視頻解碼庫(kù)茅特,比如FFmpeg
一忘分、硬解碼
硬解:就是調(diào)用GPU的專門模塊編碼來(lái)解,減少CPU運(yùn)算白修,對(duì)CPU等硬件要求也相對(duì)低點(diǎn)妒峦。軟解需要CPU運(yùn)算,變相加大CPU負(fù)擔(dān)耗電增加很多兵睛。硬件解碼是將原來(lái)全部交由CPU來(lái)處理的視頻數(shù)據(jù)的一部分交由GPU來(lái)做肯骇,而GPU的并行運(yùn)算能力要遠(yuǎn)遠(yuǎn)高于CPU,這樣可以大大的降低對(duì)CPU的負(fù)載祖很,CPU的占用率較低了之后就可以同時(shí)運(yùn)行一些其他的程序了笛丙。
對(duì)于android設(shè)備,目前用得比較多的soc就是高通假颇、海思和聯(lián)發(fā)科胚鸯,這些soc大都集成了很多的功能,CPU拆融、GUP蠢琳、DSP、ISP包括視頻解碼镜豹、音頻解碼等等傲须,所以我們說(shuō)的是SOC而不是直接說(shuō)CPU,目前手機(jī)的中央處理器的集成度非常高趟脂,下面是我們大華為的海思麒麟950的組成圖:
我們可以看到這顆SOC集成了單獨(dú)的音視頻解碼單元泰讽。
在Android中使用硬件解碼直接使用MediaCodec就可以了,雖然MediaPlayer也是硬件解碼,但是被封裝得太死了已卸,支持的協(xié)議很少佛玄。而MediaCodec就很好拓展,我們可以根據(jù)流媒體的協(xié)議和設(shè)備硬件本身來(lái)自定義硬件解碼累澡,代表播放器就是Google的ExoPlayer梦抢。
點(diǎn)擊打開:Google開源ExoPlayer
硬件碼優(yōu)勢(shì):更加省電,適合長(zhǎng)時(shí)間的移動(dòng)端視頻播放器和直播愧哟,手機(jī)電池有限的情況下奥吩,使用硬件解碼會(huì)更加好。減少CPU的占用蕊梧,可以把CUP讓給別的線程使用霞赫,有利于手機(jī)的流暢度。
二肥矢、軟解碼
軟解碼:即通過(guò)軟件讓CPU來(lái)對(duì)視頻進(jìn)行解碼處理端衰,就是通過(guò)CPU來(lái)運(yùn)行視頻編解碼代碼,我們最最常見的視頻軟解碼開源看就是FFmpeg:
FFmpeg官網(wǎng):https://ffmpeg.org/
國(guó)內(nèi)FFmpeg教程:雷霄驊(leixiaohua1020)的專欄
目前基于FFmpeg的開源播放器有B站的ijkplayer甘改,教程請(qǐng)移步:http://blog.csdn.net/u010072711/article/details/51728537
點(diǎn)擊打開:B站開源播放器ijkplayer
軟解碼優(yōu)勢(shì):具有更好的適應(yīng)性旅东,軟件解碼主要是會(huì)占用CUP的運(yùn)行,軟解不考慮社備的硬件解碼支持情況楼誓,有CPU就可以使用了玉锌,但是占用了更多的CUP那就意味著很耗費(fèi)性能,很耗電疟羹,在設(shè)備電量充足的情況下主守,或者設(shè)備硬件解碼支持不足的情況下使用軟件解碼更加好!
三榄融、總結(jié)
在Android設(shè)備硬件支持的情況下優(yōu)先使用Android設(shè)備的硬件解碼参淫,減少CPU的占用,更加省電愧杯。
在Android設(shè)備硬解不支持的情況下選擇使用軟解碼涎才,不管怎么樣,視頻至少能夠播放力九,具有更好的適應(yīng)性耍铜,但是增加了CPU的占用,更加費(fèi)電跌前。
軟硬結(jié)合才是王道棕兼,根據(jù)實(shí)際情況合理選擇。