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
相关产品推荐
相关产品推荐

