最近對視頻處理有了很大的興趣,想著利用閑暇的時(shí)間把這個(gè)東西補(bǔ)一補(bǔ),深知這是一個(gè)比較難啃的東西,但還是打算堅(jiān)持下去,希望這一系列的筆記不要斷吧,如果能夠幫助到也想要學(xué)習(xí)的小伙伴的話,那就更好了。
一、下載
直接百度ffmpeg 進(jìn)入到他的官網(wǎng),直接下載就行了,不大,不到10m,但是功能卻異常強(qiáng)大,膜拜。。。
二、修改配置文件
因?yàn)槭亲詫W(xué),所以通過度娘找到了其他的貼子,都說如果想要支持android,那么最開始的時(shí)候就要修改配置文件
解壓第一步下載的文件,然后打開ffmpeg,通過記事本等工具打開configure文件,
搜索SLIBNAME_WITH_VERSION字段,定位,然后做如下修改
把
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
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_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
如圖
暫時(shí)不知道什么意思,編譯完之后再深究
三、編寫腳本文件 config.sh
還是在ffmpeg文件夾中,新建config.sh文件,然后里面添加如下內(nèi)容
#ndk 環(huán)境
NDK=/Users/maimingliang/Documents/NDK/android-ndk-r12b
SYSROOT=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
# cpu 架構(gòu)平臺,若要編譯 x86 則指定 x86
CPU=armv7-a
如圖
四、我們再來創(chuàng)建第二個(gè)腳本文件build_android.sh
如圖
里面的內(nèi)容為:
#!/bin/sh
#引入配置文件
. config.sh
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
function build_android
{
./configure \
#編譯輸出前綴
--prefix=$PREFIX \
#啟動生成動態(tài)庫
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_android
五、給剛才創(chuàng)建的兩個(gè)文件更改權(quán)限,這里我建議調(diào)成任何人都可用的權(quán)限即777
操作如下:
先進(jìn)入ffmpeg目錄,然后執(zhí)行
chmod 777 build_android.sh config.sh
即可,如圖
六、通過以上的五部操作,我們就準(zhǔn)備好了,現(xiàn)在開始對ffmpeg進(jìn)行編譯
還是進(jìn)入到ffmpeg目錄中,然后執(zhí)行./build_android.sh即可
但是我到這里遇到了問題,這里也一同貼出,如果有相同的小伙伴,可以參考下
這是因?yàn)?FFMPEG為了提高編譯速度,使用了匯編指令,如果系統(tǒng)中沒有yasm指令的話,就會出現(xiàn)上述的問題。根據(jù)提示,我可以使用--disable-x86asm去執(zhí)行一個(gè)閹割的編譯
但是,畢竟我是一個(gè)追求完美的人,不想要閹割的。。。
so,我們可以執(zhí)行
brew install yasm
這個(gè)命令安裝這個(gè)yasm,但是這個(gè)時(shí)候,會自動檢測homebrew是否版本過低,如果版本合適,就會直接更新或者安裝yasm,如果版本低,那么會先升級homebrew,然后再更新或安裝yasm.
ok,如果沒有報(bào)上邊的錯(cuò)誤的話,正常來說就會開始編譯你的ffmpeg了,由于我這個(gè)電腦是i7的,感覺速度還行,編譯了5分鐘左右。所以需要有點(diǎn)耐心~~~
如圖