You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac下为Android编译带x265的FFmpeg报错:pkg-config未找到x265

解决FFmpeg交叉编译Android版时找不到x265的问题

你这是踩了交叉编译里最常见的架构不匹配坑——你之前编译的x265是适配Mac主机的x86架构版本,但FFmpeg要编译给Android ARM平台,两者架构完全不兼容,所以即使本地pkg-config能找到x265,FFmpeg的交叉编译脚本也没法正确识别它。下面是具体的解决步骤:

1. 先交叉编译对应Android架构的x265

你之前直接用make & make install编译的是Mac主机版x265,必须用Android NDK的工具链重新编译ARM版的x265。这里以armeabi-v7a为例,给你一个参考脚本:

# 替换成你的NDK实际路径
NDK_HOME=/Users/yourname/Library/Android/sdk/ndk/25.2.9519653
TOOLCHAIN=$NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64
# armeabi-v7a对应的目标架构标识
TARGET=armv7a-linux-androideabi
# 最低支持的Android API级别,建议选21及以上
API=21

# 配置交叉编译工具链
AR=$TOOLCHAIN/bin/llvm-ar
CC=$TOOLCHAIN/bin/$TARGET$API-clang
CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
LD=$TOOLCHAIN/bin/ld
RANLIB=$TOOLCHAIN/bin/llvm-ranlib
STRIP=$TOOLCHAIN/bin/llvm-strip

# 进入你的x265源码目录
cd /path/to/your/x265-source
# 创建编译目录
mkdir -p android-build && cd android-build

# 用cmake配置编译参数
cmake .. \
  -DCMAKE_SYSTEM_NAME=Android \
  -DCMAKE_SYSTEM_VERSION=$API \
  -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a \
  -DCMAKE_ANDROID_NDK=$NDK_HOME \
  -DCMAKE_ANDROID_STL_TYPE=c++_shared \
  -DCMAKE_C_COMPILER=$CC \
  -DCMAKE_CXX_COMPILER=$CXX \
  -DCMAKE_AR=$AR \
  -DCMAKE_RANLIB=$RANLIB \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_SHARED_LIBS=OFF \ # 编译静态库,方便FFmpeg静态链接
  -DENABLE_SHARED=OFF \
  -DENABLE_CLI=OFF # 不需要x265命令行工具,加快编译速度

# 编译并安装到指定输出目录
make -j4
make install DESTDIR=./output

编译完成后,./output/usr/local目录下会生成ARM版的libx265.a、头文件和x265.pc配置文件。

2. 修改FFmpeg交叉编译脚本,指向ARM版x265

你需要调整FFmpeg的configure参数,让它找到刚才编译的ARM版x265,而不是主机的x86版本:

方式一:修正PKG_CONFIG_PATH

把脚本中的PKG_CONFIG_PATH替换成ARM版x265的pkgconfig目录:

# 替换成你刚才编译的x265的pkgconfig路径
PKG_CONFIG_PATH=/path/to/x265-source/android-build/output/usr/local/lib/pkgconfig

方式二:直接指定头文件和库路径(更可靠,绕开pkg-config问题)

如果pkg-config还是出现识别问题,可以在FFmpeg的configure中直接添加头文件和库的路径,跳过pkg-config检测:

./configure \
--disable-yasm \
--disable-debug \
--disable-doc \
... # 保留你原来的其他参数
--enable-libx265 \
--extra-cflags="-I/path/to/x265-source/android-build/output/usr/local/include" \
--extra-ldflags="-L/path/to/x265-source/android-build/output/usr/local/lib -lx265 -lstdc++" \
... # 保留你原来的剩余参数

同时注意:把你原来LOCAL_CFLAGS中的-I/usr/local/include替换成ARM版x265的include路径,避免引用主机的x86头文件。

3. 重新编译验证

先执行make distclean清理之前的编译残留,然后运行修改后的脚本,应该就能正常识别x265并完成FFmpeg的编译了。


内容的提问来源于stack exchange,提问作者timweiliu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:48:46