ffmpeg - 修剪和合并视频剪辑而不重新编码

Gui*_*uig 6 video ffmpeg

我有两个视频需要修剪,然后合并修剪后的输出。它们的大小/编解码器都是相同的,所以我想在不重新编码太多的情况下做到这一点。但如果我这样做:

ffmpeg -i clip1.mp4 -ss 1.2 -t 2.0 -c copy clip1.trimmed.mp4
ffmpeg -i clip2.mp4 -ss 0.2 -t 2.0 -c copy clip2.trimmed.mp4
ffmpeg -filter_complex '[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]'\
-map [v] -map [a] -c:v libx264 merge.mp4
Run Code Online (Sandbox Code Playgroud)

合并的视频存在音频/视频同步问题。如果我在修剪命令中替换-c copy为 by ,则不会发生这种情况。-vcodec libx264如果不重新编码,时间是否有可能出现问题?


Mulvya 的正确答案:

ffmpeg -ss 1.2 -t 2.0 -i clip1.mp4 -ss 0.2 -t 2.0 -i clip2.mp4 \
   -filter_complex '[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" \
   -map [v] -map [a] -c:v libx264 merge.mp4
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我会补充一点,添加剪辑特定过滤器的语法如下:

ffmpeg -ss 1.2 -t 2.0 -i clip1.mp4 -ss 0.2 -t 2.0 -i clip2.mp4 \
   -filter_complex '[0:v]scale=1920:960[v0]; [v0] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" \
   -map [v] -map [a] -c:v libx264 merge.mp4
Run Code Online (Sandbox Code Playgroud)

Gya*_*yan 5

由于您最终要对合并的段进行重新编码,因此只需用一个命令即可完成,

ffmpeg -ss 1.2 -t 2.0 -i clip1.mp4 -ss 0.2 -t 2.0 -i clip2.mp4 \
       -filter_complex '[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" \
       -map [v] -map [a] -c:v libx264 merge.mp4
Run Code Online (Sandbox Code Playgroud)