使用 FFmpeg 替换视频中的部分音频

使用 FFmpeg 替换视频中的部分音频

我有一个录音A(视频和音频),时长约42分钟。

我还有一个单独的音频流B同一事件,与视频中的音频完全相同,但 a) 质量好得多,并且 b) 仅涵盖前 29:34 分钟。

是否可以直接用音频流 B 替换录音 A 的前 29:34 分钟音频,同时保留录音 A 剩余的 12 分钟左右的音频?换句话说,将音频流 B “覆盖”在录音 A 的音频流之上。

理想情况下,解决方案是将录音 A 的前 29:34 分钟的音频从文件中删除(从而减小文件大小),但即使只是将其静音而不减小文件大小,也是可以接受的。

答案1

你需要做的是从中提取原始音频录音A,剪辑它,以便只保留最后 12 分钟左右的音频,然后将其合并音频流B,最后将其与视频文件再次合并。

步骤 1:提取原始音频

要提取原始音频,您首先需要知道录音 A 的音频格式,您可以通过运行来找出它ffprobe Recording A。为了举例说明,我假设视频文件为.mp4,音频为.ogg

ffmpeg -i RecordingA.mp4 -vn -acodec copy audio.ogg

这应该创建一个名为 的新文件audio.ogg

第 2 步:剪辑原始音频

提取出来之后,你需要剪辑它以便只剩下最后 12 分 26 秒(假设录音 A 正好是 42 分钟):

ffmpeg -ss 1774 -t 2520 -i audio.ogg clipped.ogg

这应该创建一个名为 的新文件clipped.ogg

步骤 3:与音频流 B 合并

现在,您需要将剪辑的音频与音频流 B 合并。为此,请运行以下命令:

ffmpeg -i "concat:AudioStreamB.ogg|clipped.ogg" -i file2.mp3 -acodec copy final.ogg -map_metadata 0:1

这应该创建一个名为 的新文件final.ogg

最后一步:与视频合并

重新编译音频后,您需要将其替换为视频。为此,请运行以下命令:

ffmpeg -i RecordingA.mp4 -i final.ogg -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 RecordingB.mp4

新文件,名为RecordingB.mp4,应该是您想要的。

相关内容