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

Ubuntu 18.04中FFmpeg未启用libx264编解码器的Docker镜像问题

问题:Docker镜像中FFmpeg无法启用libx264编解码器

我使用以下Dockerfile构建镜像:

ARG PYTORCH="1.8.0"
ARG CUDA="11.1"
ARG CUDNN="8"
FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 8.0+PTX"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"

# https://github.com/NVIDIA/nvidia-docker/issues/1632
RUN apt-key del 7fa2af80
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub

RUN apt-get update && apt-get install -y \
        git nano ninja-build p7zip-full imagemagick wget unzip \
        libglib2.0-0 libsm6 libxrender-dev libxext6 libturbojpeg \
        libxrender1 libfontconfig1 freeglut3-dev llvm-6.0-tools curl \
        amqp-tools ffmpeg libx264-dev \
    && apt --fix-broken install \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    # for visualizing
    && wget https://github.com/mmatl/travis_debs/raw/master/xenial/mesa_18.3.3-0.deb \
    && dpkg -i ./mesa_18.3.3-0.deb || true \
    && apt install -f \
    && git clone https://github.com/mmatl/pyopengl.git \
    && pip install ./pyopengl

在Ubuntu 18.04.5环境中,执行apt-get install ffmpeg后安装日志显示完成,但执行ffmpeg -codecs | grep 264仅能看到h264、libopenh264,找不到libx264。尝试按照官方指南从源码编译FFmpeg并明确启用libx264,问题仍未解决。

解决方案

1. 排查基础镜像的FFmpeg优先级

pytorch/pytorch:1.8.0-cuda11.1-cudnn8-devel基于Ubuntu 20.04,基础镜像可能已预装FFmpeg,且该版本未关联系统安装的libx264。执行以下命令确认FFmpeg路径:

which ffmpeg

如果输出为/usr/local/bin/ffmpeg,说明基础镜像自带的FFmpeg优先于apt安装的版本,自带版本未编译libx264支持。

2. 替换基础镜像的FFmpeg

在Dockerfile中添加步骤,卸载自带FFmpeg后重新安装带libx264的版本:

# 卸载基础镜像自带的FFmpeg(若存在)
RUN if [ -f /usr/local/bin/ffmpeg ]; then rm -rf /usr/local/bin/ffmpeg /usr/local/bin/ffprobe; fi

# 重新安装FFmpeg及对应libx264依赖
RUN apt-get update && apt-get install -y --reinstall ffmpeg libx264-dev libx264-155

3. 源码编译时确保依赖路径正确

若坚持源码编译,需保证FFmpeg编译时能找到libx264的头文件和库:

# 安装编译基础依赖
RUN apt-get update && apt-get install -y build-essential yasm pkg-config

# 编译安装最新libx264
RUN git clone https://code.videolan.org/videolan/x264.git && \
    cd x264 && \
    ./configure --enable-shared --enable-static && \
    make -j$(nproc) && \
    make install && \
    ldconfig

# 编译FFmpeg并启用libx264
RUN git clone https://git.ffmpeg.org/ffmpeg.git && \
    cd ffmpeg && \
    ./configure --enable-gpl --enable-libx264 && \
    make -j$(nproc) && \
    make install && \
    ldconfig

编译完成后,执行ffmpeg -codecs | grep 264即可看到libx264。

4. 验证库路径配置

确认libx264库被系统识别:

ldconfig -p | grep x264

若输出为空,手动添加库路径并更新:

echo "/usr/local/lib" >> /etc/ld.so.conf.d/x264.conf && ldconfig

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:20:28