混合来自各种来源的音频,无论输入视频是否有声
Mix audio from various sources, regardless if an input video has sound or not
以下代码:
ffmpeg -i test.png
-t 2 -i a.mp3
-t 4 -i video.mp4
-t 1 -i b.mp3
-filter_complex [1]adelay=2000|2000[s1];[3]adelay=5000|5000[s3];[s1][2][s3]amix=inputs=3[outa];[0][2]overlay[outv]^
-map [outa] -map [outv]^
out.mp4 -y
有效,并混合来自 MP3 的音频(根据需要进行时移)和来自 MP4 视频的音频。
但如果MP4没有音频通道(=无声视频)则失败:
Stream specifier '' in filtergraph description ... matches no stream
无论视频是否有音频,我都希望我的脚本在这两种情况下都能正常工作。
当且仅当此视频有声音时,如何将 [2]
包含在 amix
中?
注意:加载 MP4 的一个好方法是 总是 声音流:如果视频有声音则为原始声音流,以及无声音轨如果 MP4 没有声音。 ffmpeg
?
中的单个命令是否可以做到这一点
没有这样的内置功能。您必须使用 ffprobe
检查文件以查看它是否有音频,然后使用 运行 适当的命令。如果您有最喜欢的脚本语言,您可以使用 if 语句.
自动执行此操作
参见。
以下代码:
ffmpeg -i test.png
-t 2 -i a.mp3
-t 4 -i video.mp4
-t 1 -i b.mp3
-filter_complex [1]adelay=2000|2000[s1];[3]adelay=5000|5000[s3];[s1][2][s3]amix=inputs=3[outa];[0][2]overlay[outv]^
-map [outa] -map [outv]^
out.mp4 -y
有效,并混合来自 MP3 的音频(根据需要进行时移)和来自 MP4 视频的音频。
但如果MP4没有音频通道(=无声视频)则失败:
Stream specifier '' in filtergraph description ... matches no stream
无论视频是否有音频,我都希望我的脚本在这两种情况下都能正常工作。
当且仅当此视频有声音时,如何将 [2]
包含在 amix
中?
注意:加载 MP4 的一个好方法是 总是 声音流:如果视频有声音则为原始声音流,以及无声音轨如果 MP4 没有声音。 ffmpeg
?
没有这样的内置功能。您必须使用 ffprobe
检查文件以查看它是否有音频,然后使用 运行 适当的命令。如果您有最喜欢的脚本语言,您可以使用 if 语句.
参见