android播放器和視頻拍攝中的硬解和軟解以及硬編和軟編的卻別


轉載

原文地址:https://blog.csdn.net/ltym2014/article/details/82354606

https://blog.csdn.net/lipengshiwo/article/details/81814160

視頻解碼硬解和軟解的區別

硬解就是硬件解碼,指利用GPU來部分代替CPU進行解碼,軟解就是軟件解碼,指利用軟件讓CPU來進行解碼。兩者的具體區別如下所示:
  硬件解碼:是將原來全部交由CPU來處理的視頻數據的一部分交由GPU來做,而GPU的並行運算能力要遠遠高於CPU,這樣可以大大的降低對CPU的負載,CPU的占用率較低了之后就可以同時運行一些其他的程序了,當然,對於較好的處理器來說,比如i5 2320,或者AMD 任何一款四核心處理器來說,硬解和軟件的區別只是個人偏好問題了吧。
  軟解碼:即通過軟件讓CPU來對視頻進行解碼處理;而硬解碼:指不借助於CPU,而通過專用的子卡設備來獨立完成視頻解碼任務。曾經的VCD/DVD解壓卡、視頻壓縮卡等都隸屬於硬解碼這個范疇。而現如今,要完成高清解碼已經不再需要額外的子卡,因為硬解碼的模塊已經被整合到顯卡GPU的內部,所以目前的主流顯卡(集顯)都能夠支持硬解碼技術。

硬解

字面上理解就是用硬件解碼。通過顯卡的視頻加速功能對高清視頻進行解碼。可以理解為有一個專門的電路板來進行視頻的解碼工作,是依靠GPU。
調用GPU的專門模塊編碼來解碼,減少CPU運算。顯卡核心GPU擁有獨特的計算方法,解碼效率非常高,這樣不但能夠減輕CPU的負擔,還有着低功耗,發熱少等特點。
但是,由於硬解碼起步比較晚,軟件和驅動對他的支持度很低,基本上硬解碼內置什么楊的模塊,就解碼什么樣的視頻,面對網上各色各樣的視頻編碼樣式,兼容性不好。此外,硬解碼的濾鏡、字幕、畫質方面都做的不夠理想。
對於android設備,目前用得比較多的芯片就是高通、海思和聯發科,這些芯片大都集成了很多的功能,CPU、GUP、DSP、ISP包括視頻解碼、音頻解碼等等
在Android中使用硬件解碼直接使用MediaCodec就可以了,雖然MediaPlayer也是硬件解碼,但是被封裝得太死了,支持的協議很少。而MediaCodec就很好拓展,我們可以根據流媒體的協議和設備硬件本身來自定義硬件解碼,代表播放器就是Google的ExoPlayer。

軟解

字面上理解就是用軟件解碼。但是實際上還是要硬件支撐。這個硬件就是CPU。
在軟解碼過程中,需要對大量的視頻信息進行運算,所以對CPU性能的要求非常高。尤其是對高清大碼率的視頻來說,巨大的運算量就會造成轉換效率低,發熱量高等問題。
我們最最常見的視頻軟解碼開源庫就是FFmpeg。目前基於FFmpeg的開源播放器有B站的ijkplayer
不過,軟解碼不需要過多的硬件支持,兼容性非常高,即使出現新的視頻編碼格式,只要安裝好相應的解碼器文件,就可以順利播放。而且軟解碼擁有豐富的濾鏡,字幕,畫面處理優化等效果,只有你CPU夠強悍,就能夠實現更加出色的畫面效果。

總結

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

Android短視頻軟編、硬編、濾鏡、合成等功能解析

在Android上要實現一個錄制功能,需要有幾個方面的知識儲備:自定義相機的開發、視頻數據格式的了解、編碼相關知識以及視頻合成技術,同時如果需要美顏、磨皮等濾鏡操作還需要一定的openGL的知識。

        視頻的編碼錄制主要是軟編和硬編兩種方案:

  軟編即采用CPU對相機采集的原始數據進行編碼后再和音頻一起合並成一個MP4等格式的文件。優點 是技術相對成熟,網上開源的編碼以及合成庫很多,實現相對較快,同時兼容性比較好。缺點 是CPU暫用率高,性能差的手機無法達到較大目標參數,同時引用了大量的第三方庫,導致包很大。

       軟編的具體實現方案如下圖所示,流程相對清晰簡單:

       camera采集YUV數據 ==> 濾鏡 ==> x264編碼器機型編碼 ==> MP4打包合成

 

       硬編即采用手機提供的硬編接口,利用硬件芯片直接進行編碼合成。優點 是速度快、效率高、CPU占用極少,即使長時間高清錄制也不會發燙,同時由於使用系統API,庫相對較小。缺點 是某些奇葩機型需要處理兼容性問題,同時Android上的硬編跟Surface以及openGL關系比較密切,網上相關知識較少,需要自己摸索踩坑。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM