FFmpeg 映射可选(音频)流

tom*_*msv 4 audio video ffmpeg

我使用这个命令来生成一个经过缩放并带有覆盖图像的文件:

ffmpeg 
-i input.* -i overlay.png 
-filter_complex "[0:v]...; ...[1:v]overlay=... ... [resultingvideo]" 
-map "[resultingvideo]" -vcodec libx264 -f mp4 
-acodec libmp3lame -q:a 50 
outputfilename.mov
Run Code Online (Sandbox Code Playgroud)

其中“...”代表一些遗漏的过滤。

问题是,没有音频。

如果我添加-map 0:a,如果输入有音频,则有音频,如果输入没有音频,则会出现错误且没有输出文件。

我怎样才能让 ffmpeg 有选择地使用来自输入的音频(如果存在),否则忽略音频或产生静音或其他什么?

或者,我是否必须先使用 ffprobe 分析文件,然后才能生成脚本命令?

slh*_*hck 6

ffmpeg 的最新版本支持条件映射选项

ffmpeg -i input.mp4 -map "0:a?" output.mp4
Run Code Online (Sandbox Code Playgroud)

这将忽略输入文件中不存在的音频流。

  • `[0:a?]` 我怎样才能在 `filter_complex` 中做这样的事情 (2认同)