Android 音視頻編輯經驗總結及開源工程分享

       提到音視頻編輯方案,大家最容易搜到的可能是ffmpeg這個牛X的開源方案。ffmpeg 是基於C語言的著名視頻編解碼方案。國內有也有不少的公司將ffmpeg 移植到iOS和android 平臺進行視頻處理,例如,美拍、秒拍等。但是其實iOS和Android自帶的多媒體框架一點也不比ffmpeg弱。下面就中常遇到的問題談一談在安卓視頻編輯上面的經驗分享。

一.做Android視頻編輯的可行性開源方案有哪些?

第一個就是大家熟知的ffmpeg,將ffmpeg移植到anroid平臺,編譯成so文件,由jni 調用,可以實現音視頻的分離、裁剪、拼合、加字幕、濾鏡等功能。

第二個就是android 自帶的MediaCodec 框架,MediaCodec框架底層調用的是StageFright庫,StageFright庫是默認封裝在android系統裏面的。

第三個,如果只是做視頻音頻混合的話,可以用這個開源工程mp4parser。

二.這幾種框架的優缺點各有哪些?

分析優缺點,那麼就從功能多少、學習門檻、運行效率、穩定性、打包占用空間這幾個方面來總結一下。

a.功能多少方面:

        ffmpeg 無疑排第一位,他集合了視頻編解碼、視頻濾鏡、流媒體推流、音頻各種特效等等,基本上你能想到的功能都在裏面。

        第二位當是Android的親兒子,MediaCodec。MediaCodec涵蓋了音視頻解複用、音頻解碼、視頻解碼、音頻編碼、視頻編碼、音視頻合併的整個流程。跟ffmpeg相比,MediaCodec 更接近底層硬件。這個方案如果想要實現視頻的濾鏡、字幕、拼接等功能的話,需要自己配合OpenGL ES 來實現,另外,音視頻拼接的話,要考慮到不同音頻採樣率的重採樣問題,音頻重採用問題,需要懂得傅立葉變換相關的離散信號變換方法,如果要實現音頻特效,如變聲、均衡器的話,也需要懂得上述信號變換方法。因此,很少公司會採用。

        第三位mp4praser,可以實現音視頻編解碼及編輯。   

        b.學習門檻:

       如果只是做視頻轉碼、加文字、圖片特效等,ffmpeg和MediaCodec 旗鼓相當,mp4parser最低(但是基於mp4parser的資料比較少,其實也未必)。如果是要拼接視頻、做音頻         的變聲、均衡器特效的話,MediaCodec是難度最高的,因爲這一切需要你從底層原理做起。

       c、運行效率:MediaCodec硬解硬編最快,ffmpeg硬解硬編方案稍慢,mp4parser(只能軟解軟編)最慢。

       d、穩定性: MediaCodec和ffmpeg 的硬解硬編方案旗鼓相當,mp4parser在低配的機器上可能出現卡頓的問題。

       f、打包占用空間:國內最得最好的ffmpeg硬解硬編方案,其so文件在10.幾M,MediaCodec由於是純java 代碼,佔用空間很容易做到幾百K甚至幾十K。mp4parser也是純Java,開發包同樣非常小。

三、現有的免費開源方案和收費商業方案介紹。

      基於ffmpeg 的免費軟解軟編方案在github.com有很多,例如:EpMedia,硬解硬編方案還沒有看到。商業收費的方案有趣拍美攝等。不過這些商業方案是按年收費的有點小貴。

      基於MediaCodec 的免費開源方案有m4mvideotranscoder等,不過這些開源方案,表面看上去功能很強大,實際使用的時候會遇到不少坑,只適用於對MediaCodec的原理進行研究。目前尚未發現一個開源成熟的MediaCodec項目。做MediaCodec成熟商業方案的有七牛美視這兩家。其中,七牛的商業方案,筆者親測,到目前爲止,還有一些明顯的bug,可能是起步比較晚吧,請謹慎使用。


       

      



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