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

Docker部署Django时出现No such file or directory: 'ffmpeg'错误求助

解决Docker中Django调用ffmpeg报错[Errno 2] No such file or directory: 'ffmpeg'的问题

1. 优化Dockerfile,确保ffmpeg正确安装

你的Dockerfile存在多次重复执行apt-get update的问题,可能导致缓存混乱或依赖安装不完整。建议合并所有系统依赖安装命令,确保ffmpeg被正确安装并清理冗余缓存:

修改后的Dockerfile:

# Pull base image
FROM python:3.11.4-slim-bullseye

# Set environment variables
ENV PIP_NO_CACHE_DIR off
ENV PIP_DISABLE_PIP_VERSION_CHECK 1
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV COLUMNS 80

# 合并所有系统依赖安装命令,减少镜像分层并确保ffmpeg安装完整
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        nano python3-pip gettext chrpath libssl-dev libxft-dev \
        libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev \
        git libmagic-dev libpq-dev gcc ffmpeg \
    && apt-get upgrade -y \
    && rm -rf /var/lib/apt/lists/*

# Set working directory for Docker image
WORKDIR /code/

# Install Python dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt

# Copy project files
COPY . .

2. 验证容器中ffmpeg的存在

构建镜像后,运行临时容器确认ffmpeg是否安装成功:

docker run --rm -it [你的镜像名称] which ffmpeg

如果输出/usr/bin/ffmpeg,说明ffmpeg已正确安装且在系统PATH中。

3. 检查转录库调用ffmpeg的方式

不同的转录库对ffmpeg的调用逻辑不同,可针对性调整:

  • 如果使用pydub,在代码开头显式指定ffmpeg路径:
    from pydub import AudioSegment
    AudioSegment.converter = "/usr/bin/ffmpeg"
    
  • 如果使用whisper,在转录时指定ffmpeg可执行文件路径:
    import whisper
    model = whisper.load_model("base")
    result = model.transcribe(path_string, language=audio_language, ffmpeg_executable="/usr/bin/ffmpeg")
    
  • 如果是自定义的transcribe_file函数,检查内部调用ffmpeg的代码,确保使用绝对路径或依赖系统PATH查找。

4. 确认容器的PATH环境变量

若上述步骤无效,检查容器的PATH是否包含/usr/bin(ffmpeg默认安装目录):

docker run --rm -it [你的镜像名称] echo $PATH

确保/usr/bin在PATH列表中,否则需要在Dockerfile中添加ENV PATH="/usr/bin:$PATH"。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:51:34