FFmpeg合并多个分辨率不同的视频时遇到的问题

使用ffmpeg开发混剪视频工具的时候遇到了下面的问题

尝试使用-filter_complex 复杂滤镜对视频进行拼接

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex 'concat=n=2:v=1'  output.mp4

报错如下:

[Parsed_concat_0 @ 00000170685eee80] Input link in0:v0 parameters (size 576x956, SAR 1:1) do not match the corresponding output link in0:v0 parameters (720x1280, SAR 1:1)

原因是两个视频的分辨率不同,尝试通过scale命令修改分辨率后再合并:

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex '[1]scale=720:1280[v1];[0][v1]concat=n=2:v=1[v]' -map [v] output.mp4

依旧报错:

[Parsed_concat_1 @ 000001b7eb4de940] Input link in0:v0 parameters (size 720x1280, SAR 256:239) do not match the corresponding output link in0:v0 parameters (720x1280, SAR 1:1)

没看懂,但是发现这个是SAR不一致导致的,这查了一下个SAR 1:1是像素比,应该是用scale修改分辨率后像素比变了,于是考虑如果保持宽高比缩放,然后多余的部分用黑色像塑填充,于是修改命令:

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex '[1]scale=720:-1,pad=720:1280:(iw+ow)/2:0:black[v1];[0][v1]concat=n=2:v=1[v]' -map [v] output.mp4

运行之后成功合成视频。但是同时修改为1080*1920的分辨后又报错了:

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex '[0]scale=1080:-1,pad=1080:1920:(iw+ow)/2:(ih+oh)/2:black[v0];[1]scale=1080:-1,pad=1080:1920:(iw+ow)/2:(ih+oh)/2:black[v1];[v0][v1]concat=n=2:v=1[v]' -map [v] output.mp4

发现依然是像塑比不对了,于是经过一番查证,终于找到解决方法,只需要在缩放视频后架上setsar=1即可解决。

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex '[1]scale=720:1280,setsar=1[v1];[0][v1]concat=n=2:v=1[v]' -map [v] output.mp4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值