我有两个视频需要修剪,然后合并修剪后的输出。它们的大小/编解码器都是相同的,所以我想在不重新编码太多的情况下做到这一点。但如果我这样做:
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)
由于您最终要对合并的段进行重新编码,因此只需用一个命令即可完成,
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)
| 归档时间: |
|
| 查看次数: |
15267 次 |
| 最近记录: |