windows11交叉编译ffmpeg的android版本库

随笔3个月前发布 优弧同学
39 0 0

目录

1、工具准备

(1)MSYS2

(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,看了一些博客,发现自己操作时并不成功,我是执行以下步骤就能安装成功了。




pacman -Syu           #核心组件包


pacman -Su


pacman -S base-devel  #问了AI这个会包含gcc,实际安装时并没有,所以还要再安装gcc


pacman -S gcc


 


#检查以下make和gcc,能输出版本号说明没问题


make --version


gcc --version

3、创建编译脚本

该编译脚本主要是调用ffmpeg的configure做编译前的配置,后期可以根据需要增删某些配置,创建build_ffmpeg_android.sh(注意修改源码路径和NDK bin的路径):




#!/bin/bash


set -e


SRC_DIR=C:/software/ffmpeg/ffmpeg-7.0.2/ffmpeg-7.0.2


DST_DIR=C:/software/ffmpeg/ffmpeg_build_out


NDK=C:/Users/xxx/AppData/Local/Android/Sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/windows-x86_64


API=30


 


cd $SRC_DIR


 


function build_onearch


{


	echo ">> configure $CPU"


	./configure --enable-cross-compile --target-os=android  


	--prefix=$DST_DIR/$ANDROID_ABI  --cross-prefix=$CROSS_PREFIX  


	--cc=$CLANG_PREFIX --cxx=$CLANG_PREFIX++  


	--arch=$ARCH  --cpu=$CPU  --sysroot=$NDK/sysroot 


	--enable-shared --disable-static 


	--enable-small --disable-programs --disable-doc 


	--enable-asm --enable-neon 


	--enable-jni --enable-mediacodec 


	


	echo "<< configure $CPU"


	make clean


	make


	make install


}


 


#根据需要选择平台arm64-v8a是64位,armeabi-v7a是32位


ANDROID_ABI=arm64-v8a


ARCH=arm64


CPU=armv8-a


CROSS_PREFIX=$NDK/bin/aarch64-linux-android-


CLANG_PREFIX=$NDK/bin/aarch64-linux-android$API-clang


build_onearch


 


#ANDROID_ABI=armeabi-v7a


#ARCH=arm


#CPU=armv7-a


#CROSS_PREFIX=$NDK/bin/arm-linux-androideabi-


#CLANG_PREFIX=$NDK/bin/armv7a-linux-androideabi$API-clang


#build_onearch

4、编译

打开MSYS2,执行:

./build_ffmpeg_android.sh

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

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...