Audio 特定时间的ffmpeg混合音频

Audio 特定时间的ffmpeg混合音频,audio,ffmpeg,mp3,Audio,Ffmpeg,Mp3,我想混合2个音频文件-一个文件的长度为2分钟,另一个是10秒的声音。我希望两个文件都混合在一起,这样两种声音仍然可以听到。我希望这段10秒的视频在10秒的时间里正好是30秒,所以它将在40秒结束 我知道如何使用ffmpeg将2个音频文件混合在一起 ffmpeg -i input.mp3 -i input2.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3 但是,我不知道如何在特定的时间启动这个10秒的声音 自从发布这篇文章

我想混合2个音频文件-一个文件的长度为2分钟,另一个是10秒的声音。我希望两个文件都混合在一起,这样两种声音仍然可以听到。我希望这段10秒的视频在10秒的时间里正好是30秒,所以它将在40秒结束

我知道如何使用ffmpeg将2个音频文件混合在一起

ffmpeg -i input.mp3 -i input2.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3

但是,我不知道如何在特定的时间启动这个10秒的声音

自从发布这篇文章以来,我找到了一个解决这个问题的方法——我想分享给其他人使用,因为我花了很多时间寻找这篇文章

创建比最长剪辑长的空白音频文件

ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -t <seconds> -q:a 9 -acodec libmp3lame <blank audio>
ffmpeg-f lavfi-i anullsrc=r=44100:cl=mono-t-q:a9-acodec libmp3lame

从这里你需要在你想要的空白音频文件的时候添加10秒的剪辑。

ffmpeg -i <blank audio> -i < audio file 2> -filter_complex "aevalsrc=0:d= <time> [s1];[s1][1:a]concat=n=2:v=0:a=1[aout]" -c:v copy -map 0:v -map [aout] <output file>
ffmpeg-i-i
从这里开始,将现在最长的剪辑覆盖到原始的较长剪辑上

ffmpeg -i <output from silent and short clip> -i <original long clip> -filter_complex "amix=inputs=2:duration=longest:dropout_transition=0, volume=2" <output audio file>
ffmpeg-i-i-filter\u complex“amix=inputs=2:duration=longest:dropout\u transition=0,volume=2”

我的音频采样率是8000。我在没有合成音频的情况下使用以下命令在特定时间插入3个音频文件。请注意,以秒为单位的延迟必须是整数。对于精确的位置,可以使用“S”(示例)而不是“S”(秒)来定义延迟

ffmpeg -y -i earth.mp4 -i 1.wav -i 2.wav -i 3.wav -filter_complex "[1]adelay=delays=5s:all=1[r1]; [2]adelay=delays=8000S:all=1[r2]; [3]adelay=delays=15s:all=1[r3]; [r1][r2][r3]amix=inputs=3[a]"  -map 0:v -map "[a]" -codec:v copy output.mp4

应该移到SuperUser.com,因为有一个类似的问题:谢谢你,但这个解决方案对我不起作用,因为我需要将文件保持在mp4格式。我可以在一行中完成所有这些吗?我尝试过了,但你的第二个脚本正在将空白音频剪辑到短音频长度。我有很多音频文件,我想在特定时间合并。在循环中运行您的脚本时,可以使用类似于
ffmpeg-y-i file.mp3-i 1.mp3-filter_complex“aevalsrc=0:d=0[s1];[s1][1:a]concat=n=2:v=0:a=1[aout]”-c:v copy-map[aout]file.mp3