我正在尝试使用ffmpeg将一些视频合并为一个视频。
输入信息:
a.mp4 1920x808,b.mkv 1280x720
首先我尝试了下面的命令,它运行正常:
ffmpeg -i a.mp4 -i b.mkv -f lavfi -t 0.1 -i anullsrc -filter_complex [1:v] scale = 1920:808:force_original_aspect_ratio = recrease,pad = 1920:808:(ow-iw )/ 2:(oh-ih)/ 2 [v1]; [0:v] [0:a] [v1] [1:a] concat = n = 2:v = 1:a = 1 [outv] [outa] -map [outv] -map [outa] -vcodec libx264 -crf 27-预设超快速-threads 2 out.mp4
然后我将“ b.mkv”放在首位:
ffmpeg -i b.mkv -i a.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex [0:v] scale = 1920:808:force_original_aspect_ratio = recrease,pad = 1920:808:(ow-iw )/ 2:(oh-ih)/ 2 [v0]; [v0] [0:a] [1:v] [1:a] concat = n = 2:v = 1:a = 1 [outv] [outa] -map [outv] -map [outa] -vcodec libx264 -crf 27-预设超快速-threads 2 out.mp4
但是这次我得到了错误:
输入链接in1:v0参数(大小1920x808,SAR 0:1)与相应的输出链接in0:v0参数(1920x808,SAR 3232:3231)不匹配
我不明白为什么?
有任何想法吗?
非常感谢。
答案 0 :(得分:1)
concat过滤器要求所有段具有相同的属性,包括长宽比。您可以告诉过滤器将其忽略
concat=n=2:v=1:a=1:unsafe=1
(不推荐)
或为两个视频流设置相同的长宽比,
ffmpeg -i b.mkv -i a.mp4
-f lavfi -t 0.1 -i anullsrc
-filter_complex
[0:v]scale=1920:808:force_original_aspect_ratio=decrease,pad=1920:808:(ow-iw)/2:(oh-ih)/2,setsar=1[v0];
[1:v]setsar=1[v1];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]
-map [outv] -map [outa] -vcodec libx264 -crf 27
-preset ultrafast -threads 2 out.mp4