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

时间:2019-04-03 02:34:19

标签: node.js ffmpeg google-cloud-functions fluent-ffmpeg

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

  

无法将选项值“ -1”解析为像素格式

对于每个this问题,我都尝试设置inputFormat('mp4')videoCodec('libx264').inputOption('-pix_fmt yuv420p')。前两个似乎没有任何作用,第三个导致以下错误:“错误:ffmpeg退出,代码1:找不到选项pixel_format。” (要使事情复杂化,我正在Google Cloud Function中运行此过程,所以我不清楚如何查询可用的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,但这会导致相同的错误。

1 个答案:

答案 0 :(得分:1)

yuv4mpegpipe不是像素格式,它是输入/输出格式。您的代码无法正常运行的原因是-pix_fmt yuv420poutputOption而不是inputOption。最好也不要设置inputFormat,然后让ffmpeg自动决定。