ffmpeg 错误,错误初始化输出流 0:0 用于设置 `-profile:v main`

ffmpeg errors out with Error initializing output stream 0:0 for the setting `-profile:v main`

我们正在使用 ffmpeg 从多种类型的输入视频和音频(如 avi、mp4、mp3、mkv、m4a 等)生成 HSL 流文件(.m3u8、.ts)。我们正在尝试将所有内容编码为 h264 流以支持现代浏览器。但是我们在转换少数 avi 和 mp4 类型的视频(不是全部)时遇到了问题。下面是 ffmpeg 命令(它在 NodeJS 上使用 ffmpeg fluent)。

ffmpeg(fileName)
  .outputOptions([
    '-c:v h264',
    '-profile:v main',
    `-vf scale=1280:-2`,
    '-hls_list_size 0',
    '-start_number 0',
    '-hls_time 10',
    '-loglevel error',
  ])
  .output(output_file_path)

当我们尝试 运行 使用一组特定的 avi 和 mp4 样本时,它会出错 Error: ffmpeg exited with code 1: Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height.

我尝试更改一些命令(例如提供 crf 值)并尝试 运行 它们,唯一一次成功转换转换它们是在我删除输出选项时 -profile:v main。我不确定背后的原因。

I 运行 ffprobe 从无法生成流的视频中获取信息。我已将它们上传到要点:https://gist.github.com/vishwasnavadak/91b5c978e2a3cb7a7c7a2bb505487263

有什么我想念的吗?当存在 -profile:v main 选项时出错的原因是什么?

添加-pix_fmt yuv420p。您的输入正在转换为 yuv444p,这对于 H.264 主配置文件是不可接受的。