使用 fluent-ffmpeg 时出现间歇性像素格式错误

Intermittent pixel format error when using fluent-ffmpeg

我正在使用(优秀!)node-fluent-ffmpeg 库作为视频处理管道的第一步。根据我提供给 node-fluent-ffmpeg 的源视频(视频来自同一个提供商,这让这种行为令人惊讶,但我离题了),在将输出管道传输到管道中的下一个 ffmpeg 处理器时,我有时会看到以下错误:

Unable to parse option value "-1" as pixel format

针对每个 this 问题,我尝试设置 inputFormat('mp4')videoCodec('libx264').inputOption('-pix_fmt yuv420p')。前两个似乎没有任何效果,第三个导致以下错误:"Error: ffmpeg exited with code 1: Option pixel_format not found."(为了使事情复杂化,我 运行 这个过程在 Google 云函数中,所以我不清楚如何查询哪些 pix_fmts 可用。)

有谁知道我该如何解决这个问题?

这是我最近的完整尝试:

  const process = ffmpeg({source: stream})
    .inputFormat('mp4')
    .inputOption('-pix_fmt yuv420p')
    .setFfmpegPath(ffmpeg_static.path)
    .videoBitrate(1024)
    .videoCodec('libx264')
    .aspect('1:1')
    .format('mp4')
    .noAudio()
    .seekInput(start)
    .duration(duration)
    .save(destination);

我能够查询 ffmpeg 以获取可用的像素格式,虽然 yuv420p 不可用,但其他一些格式可用。最接近的(文本)匹配是 yuv4mpegpipe,但会导致相同的错误。

yuv4mpegpipe 不是像素格式,它是 input/output 格式。您的代码不起作用的原因是 -pix_fmt yuv420poutputOption 而不是 inputOption。最好也不要设置 inputFormat,让 ffmpeg 自动决定。