目录
2.1 打开MSYS2 MinGW 64-bit终端(mingw64.exe)
前言
记录学习编译android平台的ffmpeg库过程。本次介绍只是编译arm64-v8a
一、编译环境
环境:Win10 + MSYS2
NDK版本: 25.1.8937393
FFmpeg版本:ffmpeg-7.1
二、搭建环境
1.安装MSYS2
请前往MSYS2官方网站下载并按照说明进行安装。
安装一直下一步就可以了。默认安装路径:C:\msys64
2.更新系统包
2.1 打开MSYS2 MinGW 64-bit终端(mingw64.exe
)
在MINGW64 终端下windows的C盘和D盘的盘符显示的/c/ 和/d/, 可以用df -h命令查看(使用命令查看的时候,需要等待一会):
2.2 更新所有软件包到最新版本
pacman -Syu
如果提示需要重启shell,请按指示操作,并再次运行上述命令直到不再提示更新。
2.3 安装必要的工具和库。
pacman -S base-devel mingw-w64-x86_64-toolchain git
3. 克隆FFmpeg源码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
在电脑上的路径:C:\msys64\home\Administrator\ffmpeg
4. 配置编译选项
在ffmpeg下面创建build_android.sh文件。文件内容如下:
/d/Android/SDK/ndk/25.1.8937393 为ndk为我电脑上的位置。其他人使用的时候可以把这个提取出来做一个变量修改一下。我懒的改😀😀
#!/bin/bash
#build arm64-v8a
export CC="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android21-clang"
export CXX="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android21-clang++"
export AR="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar"
export AS="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-as"
export NM="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm"
export STRIP="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip"
export RANLIB="/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib"
echo "CC is set to: $CC"
echo "CXX is set to: $CXX"
echo "AR is set to: $AR"
echo "AS is set to: $AS"
echo "NM is set to: $NM"
echo "STRIP is set to: $STRIP"
echo "RANLIB is set to: $RANLIB"
$CC --version
./configure \
--prefix=android/arm64-v8a \
--target-os=android \
--arch=aarch64 \
--cpu=armv8-a \
--sysroot=/d/Android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot \
--enable-cross-compile \
--enable-shared \
--disable-static \
--disable-doc \
--disable-symver \
--disable-programs \
--disable-everything \
--enable-decoder=libx264,h264,hevc,aac \
--enable-parser=h264,hevc,aac \
--enable-demuxer=mov \
--enable-muxer=rtsp \
--enable-protocol=file,rtsp,rtmp \
--extra-cflags="-Os -fPIC" \
--extra-ldflags="" \
--cc="$CC" \
--cxx="$CXX" \
--strip="$STRIP"
make clean
make -j$(nproc)
make install
里面有好多的echo输出,加这个是刚开始编译的时候一直失败,后来测试发现export的环境变量失败了。
configure 下面的参数还是很多的。不一一介绍了,需要的同学可以怎么搜索一下。可能主要是编码和解码格式的支持,参数是--enable-decoder , --enable-parser
5. 执行编译
给脚本赋予可执行权限并运行
chmod +x build_android.sh
./build_android.sh
编译成功后,直接显示这样:
在ffmpeg目录下会生成一个android文件夹,里面有arm64-v8a
如果有需要的同学也可以直接下载哈
总结
以上就是本次要讲的内容。