栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

macOS--编译FFmpeg For Android

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

macOS--编译FFmpeg For Android

FFmpeg Android build script 测试环境:
  • FFmpeg 4.3.3
  • NDK-R21C
  • MacOS 11.6.1 (20G221)
使用方法

配置脚本

# 编译平台
# "aarch64 arm"
ARCH=""
# 目标Android版本
API="24"
# 支持的CPU架构
CPU="armv8-a"
# so库输出目录
OUTPUT="../FFMpeg-$CPU-Android"
# NDK的路径
NDK=""

进入到当前目录直接执行脚本即可,如遇无法执行,可能是文件权限问题

# 进入目录
cd android-ffmpeg-build-script-ilongge
cd ffmpeg-4.3.3
# 赋予脚本可执行权限
chmod +x buidl-ffmpeg-android.sh
# 执行脚本
./buidl-ffmpeg-android.sh  

Thanks

本脚本是摘抄自 Mac环境下编译ffmpeg生成so库文件-CSDN

学习后加以改造

感谢原作者!!!

Gitee仓库
Github仓库

脚本内容

#!/bin/bash

# FFmpeg版本
FFMPEG_VERSION="4.3.3"
if [ ! -n "$FFMPEG_VERSION" ]; then
	$FFMPEG_VERSION="4.3.3"
fi
# 编译平台
# "aarch64 arm"
ARCH=""
# 目标Android版本
API="24"
# 支持的CPU架构
CPU="armv8-a"
# so库输出目录
OUTPUT="FFMpeg-$CPU-Android"
# NDK的路径
NDK="/Users/ilongge/MineCode/android-ndk-r22b"
if [ ! -n "$NDK" ]; then
	echo "请配置NDK路径!!!"
	exit 1
fi

# 编译工具链路径
TOOLCHAIN="$NDK/toolchains/llvm/prebuilt/darwin-x86_64"
# 编译环境
SYSROOT="$TOOLCHAIN/sysroot"
# 编译参数
CONFIGURE_FLAGS=""
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-cross-compile"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-debug"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-programs"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-doc"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-ffplay"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-ffprobe"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-symver"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-ffmpeg"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-avdevice"
# 动态库
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-shared"
# 静态库
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-static"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-pic"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-neon"

CROSS_PREFIX_CLANG="$TOOLCHAIN/bin"
EXTRA_CFFLAGS="-fPIC"
CROSS_PREFIX=""
if [ $CPU = "armv8-a" ]; then
	ARCH="aarch64"
	CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-x86asm"
	CROSS_PREFIX="$CROSS_PREFIX_CLANG/$ARCH-linux-android-"
	CROSS_PREFIX_CLANG="$CROSS_PREFIX_CLANG/$ARCH-linux-android$API-"
elif [ $CPU = "armv7-a" ]; then
	ARCH="arm"
	CROSS_PREFIX="$CROSS_PREFIX_CLANG/arm-linux-androideabi-"
	CROSS_PREFIX_CLANG="$CROSS_PREFIX_CLANG/armv7a-linux-androideabi$API-"
	CONFIGURE_FLAGS="$CONFIGURE_FLAGS  --enable-asm"
fi

echo "./configure"
echo "    --prefix=$OUTPUT"
echo "    --target-os=android"
echo "    --arch=$ARCH"
echo "    --cpu=$CPU"
for FLAG in $CONFIGURE_FLAGS; do
	echo "    "$FLAG
done
echo "    --sysroot=$SYSROOT"
echo "    --cross-prefix=$CROSS_PREFIX""clang"
echo "    --cross-prefix-clang=$CROSS_PREFIX_CLANG""clang"
echo "    --extra-cflags=$EXTRA_CFFLAGS"

./configure 
	--prefix=$OUTPUT 
	--target-os=android 
	--arch=$ARCH 
	--cpu=$CPU 
	$CONFIGURE_FLAGS 
	--sysroot=$SYSROOT 
	--cross-prefix=$CROSS_PREFIX 
	--cross-prefix-clang=$CROSS_PREFIX_CLANG 
	--extra-cflags=$EXTRA_CFFLAGS || exit 1
#获取机器CPU核心数 尽可能加快编译
THREAD_COUNT=$(sysctl -n machdep.cpu.thread_count)
echo "make -j $THREAD_COUNT install"
make -j$THREAD_COUNT install || exit 1
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "+  Congratulations ! ! !                            +"
echo "+  Build FFMpeg-Android Success ! ! !               +"
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "make clean"
make clean
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号