如何用ffmpeg替换给定时间戳的音频?

时间:2018-06-20 07:44:07

标签: audio ffmpeg

我正在尝试使用ffmpeg库获取两个FLAC文件,并在给定的位置将文件A 中的音频替换为文件B 中的音频时间戳。

例如,如果文件B 要在00:02播放并且持续一秒钟,则播放输出将是(00:00-0:01) File A Audio -> (00:02-0:03) File B Audio -> (00:04-...) File A Audio

为此,我尝试了以下方法

ffmpeg -y -i original.flac -i replacement.flac -acodec copy -ss 2 -to 3 -write_xing 0 result.flac

但这只会在指定的时间戳之间产生原始音频。

在ffmpeg中有什么方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

执行此操作的典型方法是concat多路分配器,但是在输出中带有持续时间标头的FLAC提取存在问题,因此可以使用

ffmpeg -y -i original.flac -i replacement.flac \
  -filter_complex "[0]atrim=0:2[Apre];[0]atrim=5,asetpts=PTS-STARTPTS[Apost];\
                   [Apre][1][Apost]concat=n=3:v=0:a=1" out.flac

2是插入点(以秒为单位),5是插入点+ B的持续时间。