我有两个视频(没有其他流),格式为 1440x1080。第一个视频应放在第二个视频的左侧(右侧),而第二个视频必须顺时针旋转 90°(目的是并排比较从两个不同角度录制的运动动作)。我以为我已经理解了背后的scale2ref
想法hstack
https://superuser.com/a/1342314,但显然,我没有:
我的尝试在以下初步测试中出现错误:
ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i first.mkv -i second.mkv -filter_complex_script combine.script -map "[out]" -profile:v high -c:v h264_nvenc -b:v 125M out.mp4
combine.script
看起来像这样:
[1:v]transpose=dir=clock[rot];
[rot]split[rot1][rot2];
[rot1][0:v]scale2ref=iw:main_h[sec];
[sec]setsar=1,drawbox=c=black:t=fill[sec2];
[sec2][rot2]hstack[outtemp];
[outtemp]showinfo[out]
过滤器看起来正确,因为showinfo
控制台上提供了以下输出:
[Parsed_showinfo_6 @ 000002b8d70ea380] n:1420 pts: 7753 pts_time:7.753
duration: 0 duration_time:0 fmt:yuv420p cl:unspecified
sar:1/1 s:2520x1440 i:P iskey:0 type:? checksum:6E7F7B44
plane_checksum:[3481517B 70563476 BFD1F544] mean:[55 129 126] stdev:[54.3 16.0 13.8]
请注意,s:2520x1440
这里提到了,因此scale2ref
和hstack
必须正常工作(1440 + 1080 = 2520
) - 因此[out]
尺寸必须为 2520x1440。但是,查看时out.mp4
,我发现
- 视频格式仍然是1440x1080,
- 内容和 是一样的
first.mkv
。
ffmpeg 的版本是2023-11-15-git-78f55457c9-full_build
我做错了什么?为什么out.mp4
显然没有收到过滤器图的输出?
答案1
您已将参考输出留在
[rot1][0:v]scale2ref=iw:main_h[sec];
未标记,因此它已被发送到第一个(这里,唯一一个)输出文件。
如果我正确理解了您的需求,您想要的是这个:
[1:v]transpose=dir=clock[rot];
[rot][0:v]scale2ref=oh*mdar:ih[sec][pri];
[pri][sec]hstack[out]