对于PSNR过滤器,FFMPEG是否被修整而-t被忽略?

时间:2018-11-14 15:18:39

标签: ffmpeg

我想对已编码的段进行PSNR检查,但要避免先在无损编解码器中提取该段以进行比较。我只是想修剪输入,但是好像已禁用。

我的命令:

ffmpeg -i original.mp4 -i segment.mp4 -filter_complex "[0:v]trim=10:20,setpts=PTS-STARTPTS[0v];[1:v]setpts=PTS-STARTPTS[1v];[0v][1v]psnr" -f null -

这将遍历整个原始输入文件,并且不会修剪过滤器中的视频。

如果我尝试使用-ss-t修剪输入,则只有输入-ss标志有效。它将设置正确的输入,但忽略-t时间戳。

ffmpeg -ss 10 -i original.mp4 -t 10 -i segment.mp4 -filter_complex [0:v][1:v]psnr -f null - 

-t的不同放置将无效。

我还尝试调整duration的设置,同时保持-ss输入正常工作。

ffmpeg -ss 10 -i original.mp4 -i segment.mp4 -filter_complex "[0:v]trim=duration=10,setpts=PTS-STARTPTS[0v];[1:v]setpts=PTS-STARTPTS[1v];[0v][1v]psnr" -f null - 

我确实使用endend_frame进行了尝试,但是没有一个起作用。

如果我使用-lavfi而不是-filter_complex,同样适用。

我确实简要了解了PSNR滤波器的源代码,但是找不到对trim-t的任何引用。

此功能是否被阻止或我做错了什么? 是否会有另一种方法可以执行此操作,而无需编码要比较的同一段的无损版本?

1 个答案:

答案 0 :(得分:1)

原始命令几乎没问题。但是,应该交换输入顺序,并且如果有音频,则应将其禁用。

ffmpeg -i original.mp4 -i segment.mp4 -filter_complex "[0:v]trim=10:20,setpts=PTS-STARTPTS[0v];[1:v]setpts=PTS-STARTPTS[1v];[1v][0v]psnr" -an -f null -

此外,在下面的代码段中

ffmpeg -ss 10 -i original.mp4 -t 10 -i segment.mp4

如果您想限制original.mp4的持续时间,则应将-t 10放在-i original.mp4之前。