Mac编译ffmpeg Android平台库

编译ffmpeg版本:ffmpeg-4.2.1

ndk版本:android-ndk-r17c

准备工作:

一:通过brew下载wget工具。

brew install wget

二:下载mac os平台下的 ndk17

wget https://dl.google.com/android/repository/android-ndk-r17c-darwin-x86_64.zip?hl=zh_cn

三:下在ffmpeg 4.2.1

wget  https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2

四:下载下来的是tar包,解压

tar xvf ffmpeg-4.3.1.tar

五:现在进入解压后的ffmpeg文件下,查看configure(脚本文件),可以通过

./configure --help 来查看参数信息,然后编写脚本运行配置参数,来运行configure。

另外提一句。可以进入ffmpeg-4.2.1/doc/examples目录,有ffmpeg如何编解码等代码试例,自行学习。

编写脚本

#! /bin/bash
  
PREFIX=`pwd`/../android/armeabi-v7a
NDK_ROOT=/Users/7invensun/Desktop/macndk/android-ndk-r17c
TOOLCHAINS=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
CPU=arm-linux-androideabi-
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC"
INCLUDES="-isystem $NDK_ROOT/sources/android/support/include"
#--prefix 执行我们生成的文件在那个目录
# \ :换行连接符。一条命令很长,\ 起到了方便查看作用
./ffmpeg-4.2.1/configure \
--prefix=$PREFIX \
--disable-programs \
--enable-small \
--disable-avdevice \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAINS/bin/$CPU \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS $INCLUDES" \
--extra-cflags="-isysroot $NDK_ROOT/sysroot/" \
--arch=arm \
--target-os=android \
#清理一下
make clean
#清理makefile
make install

#!/bin/bash:指定bash解析器

参数描述:

--prefix:我们编译后的文件输出目录

--disable-programs:不编译执行文件(.exe)

--enable-small:编译的ffmpeg,是否进行优化

--disable-avdevice: 需要通过ffmpeg打开摄像头的话,就不要禁用

--cross-prefix:指明ndk中,编译的头文件和库文件地址

--enable-static:允许编译静态库,动态库默认编译

--arch=arm:编译arm平台的库

--target-os=android:编译android平台可用的库

以上的参数信息都可以在./configure --help中查看具体.

注意:在ffmpeg-4.2.1中,默认使用的是clang编译,但在ndk17中使用的是gcc,所以打开configure文件,关闭默认clang配置。

如何使用vim查看,set number 可以显示行号。

注释4210-4213行,简单粗暴:
4209 
4210 #set_default target_os
4211 #if test "$target_os" = android; then
4212 #   cc_default="clang"
4213 #fi
4214 

最后  ./执行脚本。

 

cmake配置ffmpeg参考https://blog.csdn.net/wangchao1412/article/details/103454371

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值