![使用 complex_filter 进行时移视频时视频质量较差](https://linux22.com/image/1395465/%E4%BD%BF%E7%94%A8%20complex_filter%20%E8%BF%9B%E8%A1%8C%E6%97%B6%E7%A7%BB%E8%A7%86%E9%A2%91%E6%97%B6%E8%A7%86%E9%A2%91%E8%B4%A8%E9%87%8F%E8%BE%83%E5%B7%AE.png)
我正在使用一个有效的复杂过滤器,但当我稍微改变它时,结果质量很差。此版本似乎运行良好:
[0:v]scale=640:480 [temp0];
[0:v] setpts=PTS-STARTPTS-1/TB, scale=128x96 [firsthistory];
[0:v] setpts=PTS-STARTPTS-1/TB, scale=128x96 [secondhistory];
[temp0][firsthistory] overlay=shortest=1:x=480:y=28 [temp1];
[temp1][secondhistory] overlay=shortest=1:x=480:y=139
这是拍摄一段视频,然后在右侧放置两个子屏幕叠加层,显示视频时间向前移动。要将字幕的时间向前设置,我使用 setpts=PTS-STARTPTS-n/TB,其中 n 是移动时间的秒数。这有效,但老实说我不明白。
无论如何,当 n=1 时,这种方法是可行的。如果我将视频进一步向前移动,则产生的视频质量很差。视频输出很不流畅,例如使用以下 n=2,4:
[0:v]scale=640:480 [temp0];
[0:v] setpts=PTS-STARTPTS-2/TB, scale=128x96 [firsthistory];
[0:v] setpts=PTS-STARTPTS-4/TB, scale=128x96 [secondhistory];
[temp0][firsthistory] overlay=shortest=1:x=480:y=28 [temp1];
[temp1][secondhistory] overlay=shortest=1:x=480:y=139
完整的 ffmpeg 参数是
'-i',
'b77b24e5-27a6-459b-aa11-8f79e0162659.mpeg',
'-filter_complex',
'[0:v]scale=640:480 [temp0];[0:v] setpts=PTS-STARTPTS-2/TB, scale=128x96 [firsthistory];[0:v] setpts=PTS-STARTPTS-4/TB, scale=128x96 [secondhistory];[temp0][firsthistory] overlay=shortest=1:x=480:y=28 [temp1];[temp1][secondhistory] overlay=shortest=1:x=480:y=139',
'-c:v',
'libvpx',
'-b:v',
'1M',
'-c:a',
'libvorbis',
'-vf',
'scale=960:-1',
'50649689680c6e5976d1d7fb3fd603259c2ab6e0.webm'
答案1
我最终没有使用 setpts 来延迟叠加视频。相反,我从同一个文件中获取多个输入,其中一些使用 -itsoffset 进行时间偏移。参数:
'-i',
'2c15d5be-2b61-4c0d-b394-7f3d45f6ca7f.mpeg',
'-itsoffset',
-6,
'-i',
'2c15d5be-2b61-4c0d-b394-7f3d45f6ca7f.mpeg',
'-itsoffset',
-3,
'-i',
'2c15d5be-2b61-4c0d-b394-7f3d45f6ca7f.mpeg',
'-filter_complex',
'[0:v] scale=640:480 [temp0];[1:v] scale=128x96 [firsthistory];[2:v] scale=128x96 [secondhistory];[temp0][firsthistory] overlay=x=480:y=28 [temp1];[temp1][secondhistory] overlay=x=480:y=144',
'-c:v',
'libvpx',
'-b:v',
'1M',
'-c:a',
'libvorbis',
'-vf',
'scale=960:-1',
'50649689680c6e5976d1d7fb3fd603259c2ab6e0.webm'