ffmpeg concat丢弃音频帧

时间:2017-10-05 03:34:40

标签: audio video ffmpeg mp4 concat

我有一个mp4文件,我希望将视频的两个连续部分输出并将它们渲染为单个文件,然后将它们重新组合回原始视频。例如,通过我的视频video.mp4,我可以运行

ffmpeg -i video.mp4 -ss 56 -t 4 out1.mp4
ffmpeg -i video.mp4 -ss 60 -t 4 out2.mp4

创建out1.mp4,其中包含video.mp4的00:00:56到00:01:00,以及包含00:01:00到00:01:04的out2.mp4。但是,后来我想再次重新组合快速(即没有重新编码),所以我使用concat demuxer

ffmpeg -f concat -safe 0 -i files.txt -c copy concat.mp4

files.txt包含

file out1.mp4
file out2.mp4

理论上应该让我回到video.mp4的00:00:56到00:01:04,但是在连续发生的情况下总会丢失音频帧,从而产生非常令人不愉快的声音伪像,音频 blip ,如果你愿意的话。

missing audio frames

我尝试在最初创建视频的两个部分时使用async-af apad,但我仍面临同样的问题,并且在其他地方找不到解决方案。我在多个不同的用例中遇到过这个问题,所以希望这个简单的例子可以解释真正的问题。

1 个答案:

答案 0 :(得分:6)

我建议您使用PCM音频将片段导出到MOV,然后将这些片段连接到重新编码音频。

ffmpeg -i video.mp4 -c:a pcm_s16le -ss 56 -t 4 out1.mov
...

然后

ffmpeg -f concat -safe 0 -i files.txt -c:v copy concat.mp4