温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to add multiple audio files at specific times, on a silence audio file using ffmpeg?
ffmpeg

其他 - 如何使用ffmpeg在特定时间在静音音频文件上添加多个音频文件?

发布于 2020-04-12 12:12:32

我需要在特定时间将音频文件覆盖在现有的silence.mp3上。像这样:

[----[...audio1...]----------[...audio2...]---------------]

我尝试了以下操作,但不起作用:

ffmpeg -y -i silence.mp3 -itsoffset 4 -i audio1.mp3 -itsoffset 30 -i audio2.mp3 -c:a copy final.mp3

任何帮助将被申请。谢谢。

查看更多

提问者
boblapointe
被浏览
76
llogan 2020-02-12 03:02

有几种方法。

阿德莱

使用adelayamix过滤器:

ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "[0]adelay=4s:all=1[0a];[1]adelay=30s:all=1[1a];[0a][1a]amix=inputs=2[a]" -map "[a]" output.mp3

请注意,混合滤波器会减小输出的音量,以防止削波。如果需要,可使用dynaudnorm或体积过滤器进行随访。

阿德莱,康卡特过滤器

或adelay和concat过滤器。假定audio1.mp4是10秒长,并且两个输入具有相同的采样率和通道布局:

ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "[0]adelay=4s:all=1[0a];[1]adelay=16s:all=1[1a];[0a][1a]concat=n=2:v=0:a=1[a]" -map "[a]" output.mp3

conull demuxer,anullsrc

或使用anullsrc过滤器生成无声文件作为分隔

ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -t 4 4.mp3
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -t 16 16.mp3

创建input.txt:

file '4.mp3'
file 'audio1.mp3'
file '16.mp3'
file 'audio2.mp3'

然后使用concat demuxer

ffmpeg -f concat -i input.txt -c copy output.mp3