# ffmpeg5-build **Repository Path**: wexiangis/ffmpeg5-build ## Basic Information - **Project Name**: ffmpeg5-build - **Description**: ffmpeg5全平台移植: Linux(Android)、Windows、macOS、iOS、OpenHarmony - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 12 - **Forks**: 2 - **Created**: 2022-09-16 - **Last Updated**: 2025-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux 编译 ### 0. 编译系统相关工具安装(能安装尽量安装) ``` sudo apt-get install yasm gperf autogen autoconf automake libtool ``` ### 1. 准备好编译器,尤其是交叉编译器注意配置好环境变量 ### 2. 编译目标平台的 ffmpeg ### 可选平台名称见 platform 文件夹内配置文件名 ### 目前 PLAT 支持 x64,arm,aarch64,mips64,loongarch64,armv7,arm64-v8a ``` make PLAT=x64 base ffmpeg5 ``` ### 3. 整理生成 shared 和 static 文件夹 ### 生成 install_xxx_shared 和 install_xxx_static 两个目录 ### 其中 install_xxx_shared/lib/libffmpeg.so 是多合一集成动态库,如不需要可以不拷贝 ``` make PLAT=x64 install ``` ### 4. android ndk版编译,注意自行调整 armv7.mk 或者 arm64-v8a.mk 中的 AS_NDK_XX 定义 # Windows 编译 ### 1. 下载安装 msys2 ``` https://www.msys2.org/ ``` ### 2. 运行 msys2.exe 打开命令行窗口,使用下列指令安装x64、x86工具链以及编译过程需要的工具 ``` pacman -S mingw-w64-x86_64-toolchain mingw-w64-i686-toolchain base-devel pacman -S mingw-w64-x86_64-nasm mingw-w64-i686-nasm nasm unzip pacman -S mingw-w64-x86_64-yasm mingw-w64-i686-yasm ## 如过程出现安装失败,可用下面指令升级安装包数据库 pacman -Sy archlinux-keyring && pacman -Su ``` ### 3. 按需要运行下列对应版本的命令窗口程序 ``` 编译x64版本时使用 mingw64.exe 命令行窗口 编译x86版本时使用 mingw32.exe 命令行窗口 ``` ### 4. 在命令行通过cd指令进入到工程所在目录 ``` 例如: cd /c/xxx 进入C盘目录 cd /d/xxx 进入D盘目录 ``` ### 5. 使用脚本自动编译,最终安装内容在 install_x64 和 install_x86 目录 ``` mingw64.exe 命令窗口使用 make -f win_x64.mk base ffmpeg mingw32.exe 命令窗口使用 make -f win_x86.mk base ffmpeg ``` # macOS 编译 ### 1. 安装必要工具 pkg-config ``` ## 安装成功后环境变量不会立即生效,关闭重开终端即可 brew install pkg-config yasm ``` ### 2. 编译 ``` ## x86_64 cpu make -f macos_x86_64.mk base ffmpeg5 make -f macos_x86_64.mk install ## m1 cpu make -f macos_arm64.mk base ffmpeg5 make -f macos_arm64.mk install ``` # iOS 编译 ### 1. 安装必要工具 pkg-config ``` ## 安装成功后环境变量不会立即生效,关闭重开终端即可 brew install pkg-config yasm ``` ### 2. 编译 ``` ## arm64 cpu make -f ios_arm64.mk base ffmpeg5 make -f ios_arm64.mk install ## 其它cpu参考上面两行指令,对应改用ios_armv7.mk、ios_x86_64.mk(x86_64模拟器) ``` # OpenHarmony 编译(ubuntu20环境下) ### 0. 前言 ``` 1. 类似安卓,使用llvm+sysroot目录的方式来编译目标文件。交叉编译器用来通过configure阶段,之后将替换为clang(llvm); 2. 目前(3.2Beta版)支持三种架构:arm(armeabi-v7a)、aarch64(arm64-v8a)、x86_64 在编译时通过"clang --target=aarch64-linux-ohos"来指定架构类型. ``` ### 1. "llvm + sysroot + 交叉编译器"准备 ``` 1. llvm和交叉编译器可以从OpenHarmony的全量源码里取得 prebuilts/clang/ohos/linux-x86_64/llvm prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi (arm/armeabi-v7a) prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu (aarch64/arm64-v8a) 2. sysroot文件夹在安装deveco studio并下载native sdk之后,在native目录内取得,从windows拷贝到ubuntu20; 3. 把 llvm/bin 和交叉编译器的 bin 目录添加到 PATH 环境变量 4. 检查 clang --help aarch64-linux-gnu-gcc -v arm-linux-gnueabi-gcc -v 5. 修改 platform 目录下 ohos-xxx.mk 里面的 LLVM 和 SYSROOT 指向自己的路径 ``` ### 2. 编译(生成文件到libs目录) ``` ## aarch64(arm64-v8a)版本 make -f ohos.mk PLAT=aarch64 base ffmpeg5 make -f ohos.mk PLAT=aarch64 install ## arm(armeabi-v7a)版本 make -f ohos.mk PLAT=arm base ffmpeg5 make -f ohos.mk PLAT=arm install ``` ### 3. 其它提示 ``` 不要被arm、armeabi-v7a、arm64-v8a、arm64、aarch64、armv7这些符号绕晕,他们大致的一个等价关系: arm ~ armv7 ~ armeabi ~ armeabi-v7a arm64 ~ aarch64 ~ arm64-v8a amd64 ~ x86_64 所以看到前面配置写 arm64-v8a 后面又写作 aarch64 时不必奇怪,他们都是同一个架构类型,至少在当前工程如此 ```