windows11交叉编译ffmpeg的android版本库

目录

1、工具准备

(1)MSYS2

[(2)NDK(也可直接用android studio安装的)](#(2)NDK(也可直接用android studio安装的))

(3)ffmpeg源码

2、环境配置

3、创建编译脚本

4、编译


曾经看到一个博客说,不要用windows编译,很麻烦,容易出错,还担心windows有很多坑,然而参考了一些博客,发现用MSYS2编译好简单。我之前用ubuntu18.04没编成功(报一些工具找不到,安装又提示依赖不匹配,搞了一个晚上没成功,先放弃了,也可能是我镜像的问题。后面有时间重装系统试试),才换windows的。

1、工具准备

(1)MSYS2

MSYS2,该网页有安装教程,其实一路默认安装就行(安装成功默认会打开命令行窗口,此时千万先不要装任何东西,下面会说需要安装哪些组件)。

(2)NDK(也可直接用android studio安装的)

NDK 下载 | Android NDK | Android Developers,我是直接用android studio下载安装的(27.0.12077973),找到路径就行,一般在用户路径下。

(3)ffmpeg源码

Download FFmpeg,我是直接下载当前最新的(7.0.2),将压缩包解压到某个目录。

2、环境配置

这里主要需要配置MSYS2,看了一些博客,发现自己操作时并不成功,我是执行以下步骤就能安装成功了。

bash 复制代码
pacman -S gcc make nasm yasm diffutils

3、创建编译脚本(四个平台)

该编译脚本主要是调用ffmpeg的configure做编译前的配置,后期可以根据需要增删某些配置。注意,参考一些博客会报strip和nm找不到的问题,记得指定这两个选项(--strip、--nm)。

创建build_ffmpeg_android.sh(注意修改TOOLCHAIN的路径为自己NDK bin的路径):

bash 复制代码
#ndk工具链路径 -可配置
TOOLCHAIN=C:/Users/13658/AppData/Local/Android/Sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/windows-x86_64
#ndk api版本 -可配置
API=30
SYSROOT=$TOOLCHAIN/sysroot
function build_start() {
make clean
./configure --target-os=android \
--prefix=$PREFIX \
--arch=$ARCH \
--cpu=$CPU \
--cc=$CC \
--cxx=$CXX \
--strip=$TOOLCHAIN/bin/llvm-strip \
--nm=$TOOLCHAIN/bin/llvm-nm \
--enable-shared \
--disable-static \
--enable-gpl \
--cross-prefix=$CROSS_PREFIX \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make -j24
make install 
}
CPU=armv7-a
ARCH=arm
CROSS_PREFIX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-
CC=${CROSS_PREFIX}clang
CXX=${CROSS_PREFIX}clang++
PREFIX=./android/${API}/${CPU}/
OPTIMIZE_CFLAGS="-march=$CPU"
build_start
CPU=armv8-a
ARCH=arm64	
CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android$API-
CC=${CROSS_PREFIX}clang
CXX=${CROSS_PREFIX}clang++
PREFIX=./android/${API}/${CPU}/
OPTIMIZE_CFLAGS="-march=$CPU"
build_start
CPU=i686
ARCH=x86
CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android$API-
CC=${CROSS_PREFIX}clang
CXX=${CROSS_PREFIX}clang++
PREFIX=./android/${API}/${CPU}/
OPTIMIZE_CFLAGS="-march=i686"
ADDITIONAL_CONFIGURE_FLAG=--disable-asm 
build_start
CPU=x86-64
ARCH=x86_64
CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android$API-
CC=${CROSS_PREFIX}clang
CXX=${CROSS_PREFIX}clang++
PREFIX=./android/${API}/${CPU}/
OPTIMIZE_CFLAGS="-march=$CPU"
ADDITIONAL_CONFIGURE_FLAG=
build_start

4、编译

打开MSYS2,执行:

bash 复制代码
./build_ffmpeg_android.sh

相关库及头文件都放在android目录下:

相关推荐
Sugobet3 小时前
【安卓][Mac/Windows】永久理论免费 无限ip代理池 - 适合临时快速作战
android·tcp/ip·macos·网络安全·渗透测试·ip代理池·接入点
fatiaozhang95277 小时前
创维智能融合终端SK-M424_S905L3芯片_2+8G_安卓9_线刷固件包
android·电视盒子·刷机固件·机顶盒刷机
来来走走7 小时前
Flutter开发 了解Scaffold
android·开发语言·flutter
哆啦A梦的口袋呀9 小时前
Android 底层实现基础
android
闻道且行之9 小时前
Android Studio下载及安装配置
android·ide·android studio
alexhilton9 小时前
初探Compose中的着色器RuntimeShader
android·kotlin·android jetpack
小墙程序员9 小时前
kotlin元编程(二)使用 Kotlin 来生成源代码
android·kotlin·android studio
小墙程序员10 小时前
kotlin元编程(一)一文理解 Kotlin 反射
android·kotlin·android studio
fatiaozhang952711 小时前
创维智能融合终端DT741_移动版_S905L3芯片_安卓9_线刷固件包
android·电视盒子·刷机固件·机顶盒刷机
fareast_mzh11 小时前
Remove anti-piracy XML in media (.mp4,.mkv) files using ffmpeg, mkvproedit
xml·ffmpeg·反反盗版