android平臺,視頻轉碼加速思路(FFMPEG)

最近正在做手機上視頻轉碼相關的工作,就把最近的心得體會寫一下。以前手機的處理能力有限,CPU和GPU都不行,手機上頂多也就解碼播放個視頻看看,要是想在手機上整個圖像視頻處理,視頻轉碼這樣的計算量大的活,估計用戶也就得等到天荒地老了。但最近隨着手機硬件的不斷提升,2核,4核的都出來了,這方面的需求開始出現。

目標就是在一定的碼率和視頻清晰度要求下,能儘快的轉碼視頻文件,當然很多應用轉碼不是目的,而是手段,如要對視頻或者音頻內容添加一些處理,減小碼率,加些濾鏡等,這就只能在轉碼的過程的實現了。比如帶2M碼率264流的MP4文件(640*480,H264+AAC)轉成500K碼率的MP4文件(還是264+AAC),用正常編譯的FFMPEG+x264,在小米1S上測試,3分鐘的視頻文件轉碼要10多分鐘,那叫一個痛苦,下面是我對FFMPEG轉碼加速的優化過程:

1:優化X264,打開NEON彙編,X264沒有針對ARM平臺的多線程編譯選項(pthreads),對CONFIUGRE文件進行HACK,打開多線程

2:把針對QCOM等芯片的硬件編碼庫嵌入到FFMPEG,替代X264,進行編碼

3:把硬件解碼庫也嵌入到FFMPEG

經過上面的優化後,在小米1S手機上,2分鐘的視頻轉碼時間由開始的5分鐘縮小到40秒左右。

本人將在另外的博文中對上面3個方面進行詳細介紹。


本文版權歸作者所有,歡迎轉載,但需在文章頁面明顯位置給出原文連接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章