視頻軟編碼與硬編碼


視頻軟編碼與硬編碼

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

在Android系統下視頻編碼有硬編和軟編兩種方式。顧名思義,硬編是通過手機提供的硬件模塊進行編碼;軟編就是通過軟件程序進行編碼。硬編的好處是編碼快,不占用CPU資源。缺點是Android機型比較多,坑也比較多。軟編正好與硬編相反,優點是無論什么機型都一樣處理。缺點則是占用大量CPU資源。

硬編碼、軟編碼有什么區別,歸納如下。

一、軟編碼和硬編碼如何區分

       軟編碼:使用CPU進行編碼

       硬編碼:使用非CPU進行編碼,如顯卡GPU、專用的DSP、FPGA、ASIC芯片等

二、軟編碼和硬編碼比較

       軟編碼:實現直接、簡單,參數調整方便,升級易,但CPU負載重,性能較硬編碼低,低碼率下質量通常比硬編碼要好一點。

       硬編碼:性能高,低碼率下通常質量低於硬編碼器,但部分產品在GPU硬件平台移植了優秀的軟編碼算法(如X264)的,質量基本等同於軟編碼。

三、目前的主流GPU加速平台

       Intel、AMD、NVIDIA

四、目前主流的GPU平台開發框架

       CUDA:NVIDIA的封閉編程框架,通過框架可以調用GPU計算資源。

       AMD APP:AMD為自己的GPU提出的一套通用並行編程框架,標准開放,通過在CPU、GPU同時支持OpenCL框架,進行計算力融合。

       OpenCL:開放計算語言,為異構平台編寫程序的該框架,異構平台可包含CPU、GPU以及其他計算處理器,目標是使相同的運算能支持不同平台硬件加速。

       Inel QuickSync:集成於Intel顯卡中的專用視頻編解碼模塊。

Intel視頻硬編碼

 Intel二代Core i3/i5/i7處理器,支持了Intel Quick Sync技術(英特爾高速視頻同步技術),利用CPU進行硬件編碼,能大幅度提高編碼效率,理想情況相比傳統的軟件編碼提高N倍,同時也遠遠超過NVIDIA CUDA或者AMD Stream顯卡硬件編碼的速度。英特爾高速視頻同步技術支持AVC(H.264)、VC1、MPEG2三種主流的編碼格式,基本主流手持設備都支持這些編碼,所以說這項技術對於常“壓片”的用戶來說,是非常實用的。        

        Intel提供了開發包media-sdk(http://software.intel.com/en-us/vcsource/tools/media-sdk),包含一些頭文件,庫文件跟例子,其中sample_encode用於開發硬編碼。

        例子的的編譯需要C++編譯器(http://software.intel.com/zh-cn/c-compilers/),編譯器可以集成到vc2005以上的版本。

Android下視頻H264編碼

在移動端通過Camera采集到視頻數據后,不會直接發送出去。因為采集后的視頻數據量非常大,比如 1280x720 分辨率的一幀數據,就有可能達到6M大小(碼率越高,圖像越清晰)。這6M數據如果送到網上傳輸,會給網絡帶來非常大的負擔。

另外,人眼對圖像的識別是有限的。拿手機屏幕來說,1K屏與2K屏對於人眼來說是看不出來區別的,視頻也是同樣的道理。視頻的壓縮編碼技術,通過對視頻的有損壓縮,減少數據大小。

視頻縮碼最常用的是 H264,H265,VP8, VP9等。

編碼結構與方式

下圖是視頻編碼的結構,結構很清楚。

 

 

 編碼結構圖

介紹一下硬件編碼。

如何獲取Camera中采集到的數據

從Camera獲取視頻數據有兩種方式,一種是通過向Camera設置預覽Callback來讀取原始數據;另一種高效的方式是通過MediaCodec的Surface獲取數據。而第二種更高效,更靈活。很容易從網上找到第一種獲取數據的方式,這里介紹第二種方式。

從Camera獲取數據的基本方法如下:

1. 創建 EGL 環境(如果使用 GLSurfaceView則可省略該步驟)。

2. 構建 OpenGL ES程序,將原始數據渲染到Surface中。

3. 生成紋理,並打開Camera預覽。

4. 創建編碼器,將編碼器中的Surface與EGL關聯。

5. Camera捕獲數據后,調用 EGL的swapBuffer方法,就可以拿到數據了。

視頻編碼

視頻編碼,就是一個死循環不斷的從編碼器中查詢編碼狀態。如果編碼狀態大於0, 則說明已經有編好的數據了。

 

 

參考連接:

https://cloud.tencent.com/developer/article/1608313?from=information.detail.linux%E4%B8%8B%E7%9A%84h264%E7%A1%AC%E7%BC%96%E7%A0%81

http://blog.csdn.net/charleslei/article/details/44599041


免責聲明!

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



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