若要保留原视频的音频,同时添加新的配音(即混合两个音频流),需要使用 FFmpeg 的 amix 滤镜来合并音频。以下是具体命令和说明:
实现命令(保留原音频 + 新增配音)
bash
ffmpeg -i "1.mp4" -i "2.wav" -vf "subtitles=2.srt" -filter_complex "[0:a][1:a]amix=inputs=2:duration=shortest:dropout_transition=0" -c:v libx264 -c:a aac -b:a 128k -y "2ok.mp4"
关键参数说明
-filter_complex "[0:a][1:a]amix=..."
[0:a]:表示第一个输入文件(1.mp4)的音频流
[1:a]:表示第二个输入文件(2.wav)的音频流
amix=inputs=2:指定混合 2 个音频流
duration=shortest:混合后的音频时长与最短的流(视频 / 音频)一致(避免一方结束后另一方继续播放)
dropout_transition=0:当某个音频流提前结束时,平滑过渡(避免突然静音)
-c:a aac -b:a 128k确保混合后的音频以 AAC 编码输出(兼容性好),并指定比特率(128k 为常用值,可调整)。
其他场景处理
若配音音量过大 / 过小:可在混合前单独调整音量,例如将配音音量降低 50%:
bash
ffmpeg -i "1.mp4" -i "2.wav" -vf "subtitles=2.srt" -filter_complex "[0:a][1:a]volume=0.5,amix=inputs=2:duration=shortest" -c:v libx264 -c:a aac -b:a 128k -y "2ok.mp4"
(volume=0.5 表示将第二个音频流音量调整为原音量的 50%)
若原视频音频需要静音(仅保留配音):用 volume=0 静音原音频:
bash
ffmpeg -i "1.mp4" -i "2.wav" -vf "subtitles=2.srt" -filter_complex "[0:a]volume=0[a0];[a0][1:a]amix=inputs=2:duration=shortest" -c:v libx264 -c:a aac -b:a 128k -y "2ok.mp4"
执行上述命令后,输出视频会同时包含原视频的音频和新增的配音,且字幕正常显示。