1、到ffmpeg官网下载ffmeg源码,下载后解压ffmpeg源码
2、生成编译脚本,创建文件build_ffmpeg_ios.sh。
在文件中添加以下内容:
#!/bin/bash
set -e
# 配置
FFMPEG_SRC="/Users/xrh/Downloads/ffmpeg-8.0"
DEPLOYMENT_TARGET="13.0" # 最低支持iOS版本
OUTPUT_DIR="$FFMPEG_SRC/ios-build"
ARCHS="arm64 x86_64" # 架构
# SDK 路径
PLATFORM_IOS=$(xcrun --sdk iphoneos --show-sdk-path)
PLATFORM_SIM=$(xcrun --sdk iphonesimulator --show-sdk-path)
# 清理旧输出
rm -rf "$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR"
build_arch() {
ARCH=$1
# ...按架构设置SYSROOT、HOST等...
if [ "$ARCH" == "arm64" ]; then
SYSROOT=$(xcrun --sdk iphoneos --show-sdk-path)
CC="xcrun -sdk iphoneos clang"
else
SYSROOT=$(xcrun --sdk iphonesimulator --show-sdk-path)
CC="xcrun -sdk iphonesimulator clang"
fi
PREFIX="$OUTPUT_DIR/$ARCH"
mkdir -p "$PREFIX"
cd "$FFMPEG_SRC"
make distclean || true
./configure \
--prefix="$PREFIX" \
--arch="$ARCH" \
--enable-cross-compile \
--target-os=darwin \
--cc="$CC" \
--sysroot="$SYSROOT" \
--enable-pic \
--disable-programs \
--disable-doc \
--enable-static \
--disable-shared \
--enable-avformat \
--enable-avcodec \
--enable-swresample \
--enable-swscale \
--enable-protocols \
--extra-cflags="-arch $ARCH -mios-version-min=$DEPLOYMENT_TARGET" \
--extra-ldflags="-arch $ARCH -mios-version-min=$DEPLOYMENT_TARGET"
# 检查 configure 成功否
if [ $? -ne 0 ]; then
echo "Configure 失败!"
exit 1
fi
make -j$(sysctl -n hw.logicalcpu)
make install
}
# 编译每个架构
for ARCH in $ARCHS; do
echo "==== 编译 $ARCH ===="
build_arch $ARCH
done
# 合并静态库
mkdir -p "$OUTPUT_DIR/universal"
cd "$OUTPUT_DIR/arm64/lib"
for lib in *.a; do
[ -e "$lib" ] || continue
if [ -e "$OUTPUT_DIR/x86_64/lib/$lib" ]; then
lipo -create "$OUTPUT_DIR/arm64/lib/$lib" "$OUTPUT_DIR/x86_64/lib/$lib" -output "$OUTPUT_DIR/universal/$lib"
else
cp "$lib" "$OUTPUT_DIR/universal/$lib"
fi
done
echo "静态库可在 $OUTPUT_DIR/universal 查找"
3、运行脚本,等待静态库的生成