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

FFmpeg在Docker环境中无法正常生成视频文件问题

问题:Docker环境下FFmpeg从PNG生成视频失败,仅生成48字节空文件

目标

从PNG文件生成视频文件。

执行的FFmpeg命令

command: ffmpeg 
args: [
  "-nostdin",
  "-v",
  "error",
  "-stats",
  "-hide_banner",
  "-y",
  "-f",
  "lavfi",
  "-i",
  "color=c=black:size=1080x1350",
  "-f",
  "image2pipe",
  "-c:v",
  "png",
  "-r",
  "25",
  "-i",
  "-",
  "-filter_complex",
  "[0:v][1:v]overlay[o];[o]scale=1080:-2:flags=bicubic[out]",
  "-map",
  "[out]",
  "-c:v",
  "libx264",
  "-profile:v",
  "main",
  "-preset",
  "medium",
  "-crf",
  "20",
  "-movflags",
  "faststart",
  "-pix_fmt",
  "yuv420p",
  "-r",
  "25",
  "-frames:v",
  "175",
  "/Users/tk/projects/lottie-to-mp4/files/xv-DIcVz0rYPZjXalgrnzmkPbqHLe9_generated.mp4"
]

问题现象

  • 该命令在本地Mac机器上可正常运行,生成的视频文件大小为3286531字节
  • 在Docker环境中执行后,生成的视频文件大小始终为48字节(仅含MP4文件头的无效空文件)

视频路径生成代码

const relevantPath = "../../files";    
const videoFilePath = path.resolve(__dirname, relevantPath, `${ generatedFileName }_generated.mp4`);

排查方向

  1. FFmpeg编码器支持问题

    • 检查Docker镜像中的FFmpeg是否编译了libx264编码器,执行ffmpeg -codecs | grep libx264验证;部分基础镜像默认未包含该编码器,会导致视频编码失败生成空文件
    • 对比本地与Docker中FFmpeg的版本差异,低版本可能不支持命令中的部分参数
  2. 标准输入流问题

    • 命令通过-i -从标准输入读取PNG数据流,需确认Docker环境中是否正确将PNG数据传入FFmpeg的标准输入;若输入为空,FFmpeg会生成仅含文件头的48字节空文件
  3. 路径与权限问题

    • 检查Docker容器内的视频输出路径是否存在,容器是否拥有该路径的写入权限
    • 确认path.resolve生成的路径在容器内是否有效,避免因目录映射错误导致文件写入到不存在的路径或容器外部
  4. 日志排查

    • 暂时移除-v error参数,改为-v info或-v debug,查看Docker中FFmpeg执行时的详细日志,定位具体错误原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:15:31