ffmpeg concat 丢弃音频帧
ffmpeg concat drops audio frames
我有一个 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,以及 out2.mp4
,其中包含 00:01:00 到 00:01:04 .然而,稍后我希望能够再次快速重新组合它们(即,无需重新编码),所以我使用concat demuxer,
ffmpeg -f concat -safe 0 -i files.txt -c copy concat.mp4
其中 files.txt
包含
file out1.mp4
file out2.mp4
理论上应该让我返回 00:00:56 到 video.mp4
的 00:01:04,但是在连接发生的地方总是有丢失的音频帧,创建一个非常令人不快的声音伪影,一个音频blip,如果你愿意的话。
我已经尝试使用 async
和 -af apad
来最初创建视频的两个部分,但我仍然面临同样的问题,并且没有在其他地方找到解决方案。我在多个不同的用例中遇到过这个问题,所以希望这个简单的例子能对真正的问题有所启发。
我建议您将带有 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
我有一个 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,以及 out2.mp4
,其中包含 00:01:00 到 00:01:04 .然而,稍后我希望能够再次快速重新组合它们(即,无需重新编码),所以我使用concat demuxer,
ffmpeg -f concat -safe 0 -i files.txt -c copy concat.mp4
其中 files.txt
包含
file out1.mp4
file out2.mp4
理论上应该让我返回 00:00:56 到 video.mp4
的 00:01:04,但是在连接发生的地方总是有丢失的音频帧,创建一个非常令人不快的声音伪影,一个音频blip,如果你愿意的话。
我已经尝试使用 async
和 -af apad
来最初创建视频的两个部分,但我仍然面临同样的问题,并且没有在其他地方找到解决方案。我在多个不同的用例中遇到过这个问题,所以希望这个简单的例子能对真正的问题有所启发。
我建议您将带有 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