先放一下FFmpeg的地址:FFmpeg鏈接
最近剛好要做攝像頭的采集編碼以及rtsp推流蘸炸。這里主要用到了ffmeng進(jìn)行壓縮和推流,x264對視頻編碼聊疲,音頻編碼采用fak-acc茬底。本文主要記錄一下交叉編譯ffmeng的過程。
環(huán)境配置
此次編譯還是在linux上完成获洲。需要VMware和ubuntu系統(tǒng)阱表。
配置ndk環(huán)境可以參考上一篇文章ijkplayer編譯。
編譯前先下載 FFmpeg 和 fdk-aac 和 x264 的源碼。
下載FFmpeg源碼以后捶枢,需要對源碼中的configure文件進(jìn)行修改握截,這樣編譯出來的so文件名才能被Android平臺識別。
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
替換為:
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
如下圖:build目錄用來放置編譯后的文件,.sh文件是對應(yīng)的腳本文件
開始編譯
編譯fdkaac
1.配置腳本(對應(yīng)的腳本不需要放在fdkaac文件里面烂叔,放在平級目錄也是可以的)谨胞,腳本網(wǎng)上有很多,我的腳本是公司大佬自己寫的蒜鸡,編譯的時候需要按照不用cpu架構(gòu)編譯胯努。
打開命令終端: 切換到ffmeng目錄(我防止源碼和腳本文件的目錄)
輸入
./build_fdkaac.sh "arm64" 最后arm64代表cpu架構(gòu)類型
依次將自己需要的類型編譯出來。生成的文件在build里面
編譯x264
編譯時還是要在對應(yīng)的目錄下逢防,編譯方法和上面一樣
./build_x264.sh "arm64"
生成的文件在build下面
編譯FFmpeg
輸入
./build_ffmpeg_andriod.sh
編譯完成
可以在build目錄下查看
如果編譯出來是如下.a文件
請檢查腳本文件中配置 (腳本網(wǎng)上有很多叶沛,我的腳本是公司自己編寫的就不放出來了)。
--enable-static:生成靜態(tài)鏈接庫
--enable-shared:生成動態(tài)鏈接庫
靜態(tài)庫的命名規(guī)則通常為lib*.a
動態(tài)庫的命名通常是*.so
我們需要so文件 只需將配置改成上圖所示即可忘朝。
最后編譯出來so
將so導(dǎo)入AndroidStudio中jni調(diào)用即可灰署。