Mac下cmake编译FFmpeg-4.0

本文提供了一种在Mac环境下编译FFmpeg-4.0的具体步骤,包括所需NDK版本的选择、配置文件的编写及常见错误处理方法。作者建议保持NDK与FFmpeg版本一致以避免编译过程中出现错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译FFmpeg-4.0

网上找了大多数资料Mac下编译ffmpeg,基本上都不成功,也不知道怎么的,这玩意就这么浪费时间?

官方真的该出一个教程了,免得每个开发者都得重复一次这个过程。

NDK 下载地址

FFmpeg 下载地址

ffmpeg每个版本编译方式还不一样,NDK的版本也有差异,建议保持一致,免得出错。

ffmpeg版本:4.0

ndk版本:android-ndk-r16b

可以选择去官网下载,国内的地址参考 Android NDK下载(r10d r13b r14b)

下载源码并解压后,在目录下新建文件ffmpeg_build.sh文件,内容如下:

#!/bin/bash
ADDI_CFLAGS="-marm"
API=27
PLATFORM=arm-linux-androideabi
CPU=armv7-a
NDK=/Users/xxx/Downloads/android-ndk-r16b # 修改自己本地的ndk路径
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
OUTPUT=/Users/xxx/share #自己指定一个输出目录
function build_one
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
  make clean
  make 
  make install
}

build_one

然后执行./ffmpeg_build.sh,等待编译结果吧。

说明:ffmepg编译过程出错的地方太多,建议大家保持环境一致,如有问题,欢迎大家讨论!

我的编译结果如下:


### 使用 CMake 在 Windows 环境下编译 FFmpeg 为了在 Windows 系统上使用 CMake 编译 FFmpeg,可以按照以下方法操作。此过程涉及多个工具链和依赖项配置。 #### 工具准备 首先需要确保已安装必要的开发环境和工具: - 安装 **vcpkg** 并通过其管理依赖关系 `vcpkg install ffmpeg:x64-windows`[^1]。 - 如果计划手动构建源码,则需克隆官方仓库 `git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg`[^3]。 - 配置好支持跨平台项目的 **CMake** 和适合目标架构的编译器(如 MinGW 或 MSVC)。 #### 创建项目结构 对于集成到现有 IDE 的情况,在 Visual Studio 中新建一个工程并设置路径指向 FFmpeg 源目录;或者采用 Android Studio 结合 cmakeLists.txt 文件来定义外部 native 库链接规则[^4]。 #### 设置 CMake 参数 运行命令行界面指定选项完成定制化版本生成: ```bash mkdir build && cd build cmake -G "Visual Studio 17 2022" \ -DENABLE_STATIC=ON \ -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake .. ``` 上述脚本片段展示了如何调用 cmake 来针对特定解决方案格式生成项目文件的同时启用静态库模式以及关联由 vcpkg 提供的支持包。 另外一种常见做法是从零开始搭建适用于移动设备端口的应用场景——即把预构建好的 so 动态共享对象复制粘贴至 assets 资源夹内,并修改 application.mk 加入对应 ABI 类型声明以便于后续加载时匹配正确体系结构下的二进制组件[^5]。 最终产物应当包含完整的功能模块集合连同相应文档说明一起打包分发给终端使用者群体享用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值