我正在使用(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,但这会导致相同的错误。
答案 0 :(得分:1)
yuv4mpegpipe
不是像素格式,它是输入/输出格式。您的代码无法正常运行的原因是-pix_fmt yuv420p
是outputOption
而不是inputOption
。最好也不要设置inputFormat
,然后让ffmpeg自动决定。