使用 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 yuv420p
是 outputOption
而不是 inputOption
。最好也不要设置 inputFormat
,让 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 yuv420p
是 outputOption
而不是 inputOption
。最好也不要设置 inputFormat
,让 ffmpeg 自动决定。