下载ffmpeg源码、编译生成iOS项目可使用的静态库

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、运行脚本,等待静态库的生成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容