首页 > 解决方案 > 使用 fluent-ffmpeg 时出现间歇性像素格式错误

问题描述

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

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

根据这个问题,我尝试设置inputFormat('mp4'),videoCodec('libx264').inputOption('-pix_fmt yuv420p'). 前两个似乎没有任何效果,第三个导致以下错误:“错误:ffmpeg exited with code 1: Option pixel_format not found.” (为了使事情复杂化,我在谷歌云函数中运行这个过程,所以我不清楚如何查询哪些 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,但这会导致相同的错误。

标签: node.jsffmpeggoogle-cloud-functionsfluent-ffmpeg

解决方案


yuv4mpegpipe不是像素格式,它是输入/输出格式。您的代码不起作用的原因-pix_fmt yuv420poutputOption不是inputOption. 最好都不设置inputFormat,让ffmpeg自动决定。


推荐阅读