ubuntu编译FFMPEG报错ERROR: x265 not found using pkg-config

本文介绍了解决FFmpeg配置x265时遇到的pkg-config找不到x265的问题。作者尝试了通过apt-get安装libx265-dev但未成功,最终通过源码编译安装解决了问题。

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libtheora \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree


老是报

ERROR: x265 not found using pkg-config


开始以为是pkg-config版本太低,又以为是pkg-config出问题,baidu很久都没有解决问题。


我使用apt-get安装265的

sudo apt-get install libx265-dev
发现用这个方法没有把相关信息加入pkg-config,导致pkg-config检索不到。


于是下载编译安装

sudo apt-get install cmake mercurial
cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install


OK,没有错误啦。

总结:不能全信apt-get ,必要的时候试试make install

<think>我们正在构建最小化的FFmpeg 7镜像,但在编译过程中遇到了`ERROR: fontconfig not found using pkg-config`错误。这个错误通常发生在配置脚本尝试通过pkg-config查找fontconfig库但未找到时。 由于我们的目标是构建最小镜像,我们可能并不需要fontconfig(它用于字体渲染,通常用于字幕等)。因此,我们可以选择禁用fontconfig相关的功能。 **解决方案:** 1. **检查是否确实需要fontconfig**:如果我们不需要处理字幕或不需要使用系统字体,我们可以安全地禁用fontconfig。 2. **在configure选项中显式禁用fontconfig**:添加`--disable-libfontconfig`选项。 修改Dockerfile中的configure命令,添加禁用fontconfig的选项: ```dockerfile RUN ./configure \ ...其他选项... --disable-libfontconfig \ # 显式禁用fontconfig ...其他选项... ``` **为什么会出现这个错误?** 在构建环境中,我们并没有安装fontconfig的开发包(如`libfontconfig1-dev`),因此pkg-config无法找到它。由于我们正在构建最小镜像,我们不希望安装额外的库来增加体积,所以禁用是合理的选择。 **修改后的Dockerfile片段:** ```dockerfile # 配置最小化编译选项 RUN ./configure \ --disable-everything \ --enable-gpl \ --enable-small \ --enable-static \ --disable-shared \ --disable-doc \ --disable-debug \ --enable-ffmpeg \ --enable-decoder=h264,aac \ --enable-demuxer=mov,mp4 \ --enable-protocol=file \ --disable-libfontconfig \ # 新增:禁用fontconfig --extra-ldflags="-static" \ --prefix=/usr/local ``` **如果确实需要fontconfig?** 如果我们的应用场景需要处理字幕(例如烧录字幕到视频),那么我们必须安装fontconfig的开发包,并在编译时启用它。但这会增加最终镜像的体积,因为需要链接额外的库。 安装fontconfig开发包并在configure中启用: ```dockerfile # 在构建阶段安装fontconfig开发包 RUN apt-get update && apt-get install -y --no-install-recommends libfontconfig1-dev # 然后在configure中启用 RUN ./configure \ ...其他选项... --enable-libfontconfig \ # 启用fontconfig ...其他选项... ``` **注意事项:** - 如果我们启用了fontconfig,那么最终静态二进制文件会包含fontconfig及其依赖(如freetype等),体积会显著增加(可能增加数MB)。 - 在最小化镜像中,通常建议禁用非核心功能。 因此,根据用户需求,我们选择禁用fontconfig。修改后的Dockerfile将不会出现该错误。 --- ### 完整的Dockerfile(禁用fontconfig) ```dockerfile # 第一阶段:构建环境 FROM ubuntu:22.04 AS builder # 安装最小构建依赖 RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ build-essential \ nasm \ yasm \ wget \ tar \ zlib1g-dev \ libc6-dev-static && \ rm -rf /var/lib/apt/lists/* # 下载FFmpeg 7.0源码 RUN wget -q https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz && \ tar xf ffmpeg-7.0.tar.gz && \ rm ffmpeg-7.0.tar.gz WORKDIR /ffmpeg-7.0 # 配置最小化编译选项(禁用fontconfig) RUN ./configure \ --disable-everything \ --enable-gpl \ --enable-small \ --enable-static \ --disable-shared \ --disable-doc \ --disable-debug \ --enable-ffmpeg \ --enable-decoder=h264,aac \ --enable-demuxer=mov,mp4 \ --enable-protocol=file \ --disable-libfontconfig \ # 禁用fontconfig避免错误 --extra-ldflags="-static" \ --prefix=/usr/local # 编译并清理 RUN make -j$(nproc) && \ make install && \ strip /usr/local/bin/ffmpeg # 第二阶段:最终镜像 FROM scratch COPY --from=builder /usr/local/bin/ffmpeg /ffmpeg ENTRYPOINT ["/ffmpeg"] ``` 构建这个镜像将不再报告fontconfig相关的错误,并且保持最小体积(约12MB)。 --- ### 相关问题 1. 在FFmpeg编译中如何正确处理外部库依赖? 2. 如何平衡FFmpeg功能与镜像体积? 3. 在scratch镜像中如何处理动态库依赖? 4. 如何为FFmpeg添加自定义字体支持? 5. 禁用fontconfigFFmpeg功能有什么具体影响? > 通过显式禁用非必需功能(如fontconfig),我们可以在最小化FFmpeg镜像时避免不必要的依赖错误[^1]。实际编译选项应根据具体应用场景调整。 </think>### 解决在Ubuntu制作FFmpeg 7镜像时的 `ERROR: fontconfig not found using pkg-config` 错误 这个错误发生在编译FFmpeg时配置系统找不到fontconfig开发库。以下是完整解决方案,适用于最小化镜像构建: #### 解决方案步骤 1. **安装fontconfig开发包** 在Dockerfile的构建阶段添加fontconfig开发依赖: ```dockerfile RUN apt-get update && \ apt-get install -y --no-install-recommends \ libfontconfig1-dev \ pkg-config && \ # 确保pkg-config存在 rm -rf /var/lib/apt/lists/* ``` 2. **配置pkg-config路径** 在`./configure`命令前设置环境变量: ```dockerfile ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig ``` 3. **修改编译选项(二选一)** - **选项1:禁用fontconfig(推荐用于最小镜像)** ```dockerfile RUN ./configure \ --disable-libfontconfig \ # 显式禁用 ...其他配置选项... ``` - **选项2:启用fontconfig** ```dockerfile RUN ./configure \ --enable-libfontconfig \ # 显式启用 ...其他配置选项... ``` #### 完整Dockerfile示例(禁用fontconfig) ```dockerfile # 第一阶段:构建环境 FROM ubuntu:22.04 AS builder # 安装依赖(包含fontconfig开发包) RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ build-essential \ nasm \ yasm \ wget \ tar \ zlib1g-dev \ libc6-dev-static \ pkg-config \ libfontconfig1-dev && \ # 解决fontconfig错误 rm -rf /var/lib/apt/lists/* # 下载FFmpeg 7.0源码 RUN wget -q https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz && \ tar xf ffmpeg-7.0.tar.gz && \ rm ffmpeg-7.0.tar.gz WORKDIR /ffmpeg-7.0 # 设置pkg-config路径 ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig # 配置编译选项 RUN ./configure \ --disable-everything \ --enable-gpl \ --enable-small \ --enable-static \ --disable-shared \ --disable-doc \ --disable-debug \ --enable-ffmpeg \ --enable-decoder=h264,aac \ --enable-demuxer=mov,mp4 \ --enable-protocol=file \ --disable-libfontconfig \ # 关键:禁用fontconfig --extra-ldflags="-static" \ --prefix=/usr/local # 编译并清理 RUN make -j$(nproc) && \ make install && \ strip /usr/local/bin/ffmpeg # 第二阶段:最终镜像 FROM scratch COPY --from=builder /usr/local/bin/ffmpeg /ffmpeg ENTRYPOINT ["/ffmpeg"] ``` #### 关键原理 1. **pkg-config机制** FFmpeg使用`pkg-config`查找库依赖。当出现`fontconfig not found`时,表示: - fontconfig开发包未安装(通过`libfontconfig1-dev`解决) - pkg-config路径配置错误(通过`PKG_CONFIG_PATH`环境变量解决) 2. **体积优化权衡** | 方案 | 体积影响 | 适用场景 | |---|---|---| | 禁用fontconfig | +0MB | 无字幕需求 | | 启用fontconfig | +3-5MB | 需要字幕渲染 | 3. **路径配置说明** Ubuntu标准库路径: ```bash /usr/lib/x86_64-linux-gnu/pkgconfig # 64位库配置 /usr/share/pkgconfig # 通用配置 ``` #### 验证方法 构建后检查功能支持: ```bash docker run --rm ffmpeg-minimal:7.0 -buildconf | grep fontconfig # 应显示:--disable-libfontconfig ``` #### 其他解决方案 如果仍遇到问题,可尝试强制链接: ```dockerfile RUN ./configure \ ... --extra-cflags="-I/usr/include/freetype2" \ --extra-ldflags="-L/usr/lib/x86_64-linux-gnu -lfontconfig" \ ... ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值