Sha*_*aun 2 audio video mp4 concat ffmpeg
我有一个mp4文件,我想把视频的两个连续部分输出并将它们渲染为单独的文件,然后将它们重新组合回原始视频.例如,通过我的视频video.mp4
,我可以运行
ffmpeg -i video.mp4 -ss 56 -t 4 out1.mp4
ffmpeg -i video.mp4 -ss 60 -t 4 out2.mp4
Run Code Online (Sandbox Code Playgroud)
创建out1.mp4
包含00:00:56到00:01:00 video.mp4
,out2.mp4
其中包含00:01:00到00:01:04.但是,后来我希望能够快速重新组合它们(即没有重新编码),所以我使用了concat demuxer,
ffmpeg -f concat -safe 0 -i files.txt -c copy concat.mp4
Run Code Online (Sandbox Code Playgroud)
哪里files.txt
包含
file out1.mp4
file out2.mp4
Run Code Online (Sandbox Code Playgroud)
理论上应该给我回到00:00:56到00:01:04 video.mp4
,但是在连续发生时总会丢失音频帧,如果你愿意的话,会产生非常不愉快的声音效果,音频短片.
我已经尝试过使用async
和-af apad
最初创建视频的两个部分,但我仍面临同样的问题,并没有在其他地方找到解决方案.我在多个不同的用例中遇到过这个问题,所以希望这个简单的例子可以解释真正的问题.
我建议您使用PCM音频将片段导出到MOV,然后将这些片段连接到重新编码音频.
ffmpeg -i video.mp4 -c:a pcm_s16le -ss 56 -t 4 out1.mov
...
Run Code Online (Sandbox Code Playgroud)
然后
ffmpeg -f concat -safe 0 -i files.txt -c:v copy concat.mp4
Run Code Online (Sandbox Code Playgroud)