我正在使用 ffmpeg 转换/缩放视频,并将音频流导出到单个音频文件。
/usr/local/bin/ffmpeg -i video.mov -vf scale="480:480" -c:v libx264 -profile:v baseline -preset ultrafast -crf 22 -c:a aac -pix_fmt yuv420p -y video-output.mp4 -y audio-output.mp3
但是,如果视频缺少音频文件,它就会中断。
如果没有音频,有没有办法忽略音频导出?
有一个条件映射运算符
-map "0:a?"
,例如,如果输入流没有音频(并且该-c:a
选项将被忽略),这将创建一个没有音频的输出文件:但是,如果您想要像您的示例中那样拥有多个输出文件,则必须在构造命令之前以编程方式检测它。否则 ffmpeg 会抱怨你的第二个输出文件不包含任何流。
例如:
audio
如果输入文件有音频流,这将打印一行。当然还有其他方法可以解析forffmpeg
streams的输出。我对此的解决方案是将任务分成两行,一行用于视频,一行用于音频。如果音频失败,它就会继续。