- 先到官網(wǎng)下載最新版(我用的是3.3.4)并解壓
有時候編譯還需要yasm,因此可以先通過homebrew 安裝yasm
brew install yasm
- 因為是在Mac下編譯呆抑,而且是給安卓用的岂嗓,需要改幾個參數(shù)。
根目錄下找到configure文件鹊碍,用編輯器打開(比如sublime)
找到如下的代碼塊厌殉,大概在3304行:
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)'
然后在終端上cd 進入解壓的ffmpeg文件夾根目錄
輸入
sh build.sh
先別按enter鍵食绿,這個時候,你可能發(fā)現(xiàn)公罕, build.sh還沒創(chuàng)建 ??
別擔心器紧,咱創(chuàng)建一下,文件內容如下楼眷,請根據(jù)注釋修改:
#!/bin/bash
#換成自己的NDK地址
NDK=/Users/apple/Documents/Android/NDK/android-ndk-r14b
#換成自己要指定的API版本铲汪,這里是min_sdk為16 編譯arm架構的意思
SYSROOT=$NDK/platforms/android-16/arch-arm/
#目標機器架構平臺對應的工具鏈,我們是arm就選arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
# 目標機器架構平臺
CPU=armv7-a
#輸出路徑 換成自己的罐柳,真實存在的路徑掌腰,真實存在,重要的事情說兩遍
PREFIX=/Users/apple/Documents/ffmpeg/output
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-gpl \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--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_one
然后就可以愉快的按下enter鍵张吉,會在我們指定好的文件夾下生產(chǎn)對應的文件齿梁。
注意生成的so文件必須是以.so結尾,不然肯定是編譯出問題了芦拿,而AS也是靠.so的后綴來識別是so文件的士飒。
參考自:
在Mac下編譯 FFmpeg
FFMPEG學習第一篇--android studio 2.3 Cmake 編譯并使用ffmpeg的動態(tài)so庫
感謝~