使用msys2编译 ffmpeg.
第一步下载安装 msys2 :msys2 下载地址:https://sourceforge.net/projects/msys2/
安装完成后打开Mingw-w64,输入命令:pacman -Syu 进行更新
执行完成后会报如下警告,按ctrl + c 退出即可
然后执行:pacman -S yasm 和 pacman -S make 安装对应的包
第二步下载NDK,ndk下载地址:https://developer.android.google.cn/ndk/downloads/
第三步下载 ffmpeg, 我下载的是 ffmpeg-4.0.3(不同的版本编译可能会不成功)
ffmpeg下载地址:http://www.ffmpeg.org/download.html 。
第四步:在ffmpeg里新建一个shell脚本 ,build_android.sh
build_android.sh 内容:
#!/bin/bash
export TMPDIR=$(pwd)/temp
NDK=C:/android/sdk/ndk-bundle
SYSROOT=$NDK/platforms/android-18/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-Os -fpic -marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--enable-asm \
--enable-neon \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--enable-pthreads \
--enable-small \
--enable-jni \
--enable-mediacodec \
--enable-runtime-cpudetect \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
--enable-cross-compile 打开交叉编译。
–cross-prefix=PREFIX 设定交叉编译工具链的前缀,不算gcc/nm/as命令
--arch=arm 目标架构
--prefix=$PREFIX 生成文件保存路径
--enable-shared 生成动态库
--disable-static 禁止生成静态库
更多的configure选项说明: https://blog.csdn.net/fengsh998/article/details/79443503 可以参考这篇文章
然后到 ffmpeg 更目录下执行命令 : ./build_android.sh 就已经开始编译了。
等待编译完成就会在ffmpeg 目录下多一个 android 目录,
能找到这几个so 文件就已经编译成功
下面说一下遇到的坑:
1.NDK路径填错,直接复制目录,"\" 没有改成 "/",
2. 下载的NDK,没有 include 包
3. 报xxx命令找不到,编译需要的包没有安装完全。要是不知道是那个包没有装 ,试下这个命令:pacman -S base-devel 。
网友评论