Mac系统编译ffmpeg

 

1.Mac系统版本10.14.6,ffmpeg-2.8.15

2.需要的文件ffmpeg,下载地址http://ffmpeg.org/

3.需要的NDK版本,要求比较旧的版本(android-ndk-r10e),因为旧的版本是使用gcc编译的,新的版本是clang编译的

NDK的下载地址:

参考https://www.jianshu.com/p/c5b59cbe65f7

4.Mac解压NDK . bin文件

1.获取文件权限

chmod a+x android-ndk-r10c-darwin-x86_64.bin

2. 解压出文件

./android-ndk-r10c-darwin-x86_64.bin

5.配置环境变量

open ~/.bash_profile打开文件后输入(以下请填入自己的SDK和NDK的路径,不要直接使用Android Studio的NDK路径),输入ndk-build -v判断是否配置成功

export PATH=${PATH}:/Users/kitzzz/Library/Android/sdk/platform-tools  
export NDK_ROOT=/Users/kitzzz/Library/Android/android-ndk-r10e                 
export PATH=$PATH:$NDK_ROOT

6.进入到电脑上存放的ffmpeg的目录,编写脚本文件

注意:为了解决编译成功的文件libavfilter.so.5这样结束符错误的问题,需要进行如下配置

vim configure(这个文件在ffmpeg文件下面)
输入“: ? build setting” 进行搜索
i
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)'
esc
shift+z+z
touch build.sh
chmod 777 build.sh
vim build.sh
i(进入编辑模式)
#!/bin/bash
make clean
export NDK=/Users/kitzzz/Library/Android/android-ndk-r10e//更换成自己的目录
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"

./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
shift+:q!(强制退出)/shift+z+z(保存后退出)




另外一种写法(编译多种CPU): 

# #!/bin/bash
# make clean
# export NDK=/Users/kitzzz/Library/Android/android-ndk-r10e
# export SYSROOT=$NDK/platforms/android-9/arch-arm/
# export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
# export CPU=arm
# export PREFIX=$(pwd)/android/$CPU
# export ADDI_CFLAGS="-marm"

# ./configure --target-os=linux \
# --prefix=$PREFIX --arch=arm \
# --disable-doc \
# --enable-shared \
# --disable-static \
# --disable-yasm \
# --disable-symver \
# --enable-gpl \
# --disable-ffmpeg \
# --disable-ffplay \
# --disable-ffprobe \
# --disable-ffserver \
# --disable-doc \
# --disable-symver \
# --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
# --enable-cross-compile \
# --sysroot=$SYSROOT \
# --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
# --extra-ldflags="$ADDI_LDFLAGS" \
# $ADDITIONAL_CONFIGURE_FLAG
# make clean
# make
# make install

#!/bin/bash
export NDK_HOME=/Users/kitzzz/Library/Android/android-ndk-r10e
export PLATFORM_VERSION=android-9
function build
{
  echo "start build ffmpeg for $ARCH"
  ./configure --target-os=linux \
  --prefix=$PREFIX --arch=$ARCH \
  --disable-doc \
  --enable-shared \
  --disable-static \
  --disable-yasm \
  --disable-asm \
  --disable-symver \
  --enable-gpl \
  --disable-ffmpeg \
  --disable-ffplay \
  --disable-ffprobe \
  --disable-ffserver \
  --cross-prefix=$CROSS_COMPILE \
  --enable-cross-compile \
  --sysroot=$SYSROOT \
  --enable-small \
  --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
  --extra-ldflags="$ADDI_LDFLAGS" \
  $ADDITIONAL_CONFIGURE_FLAG
  make clean
  make
  make install
  echo "build ffmpeg for $ARCH finished"
}

#arm
# ARCH=arm
# CPU=arm
# PREFIX=$(pwd)/android/$ARCH
# TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
# CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
# ADDI_CFLAGS="-marm"
# SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
# build

#x86
ARCH=x86
CPU=x86
PREFIX=$(pwd)/android/$ARCH
TOOLCHAIN=$NDK_HOME/toolchains/x86-4.9/prebuilt/darwin-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/i686-linux-android-
ADDI_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build


7.编译ffmpeg,等待编译完成(生成android的目录)

./build.sh

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值