我有一个未压缩的视频文件,我想用(无损)编解码器压缩它。
没问题,但是当我执行 SSIM 测试时,当输入视频使用 MKV 容器时,FFmpeg 返回意外结果(即 SSIM <> 1)。
以下是我正在做的事情:
首先,我使用无损编解码器(可以是任意一种)将(未压缩的)输入视频文件压缩为五个不同的(兼容的)容器:
ffmpeg -i input.y4m -c:v libx264 -preset veryslow -qp 0 -g 1 h264.mkv
ffmpeg -i input.y4m -c:v libx264 -preset veryslow -qp 0 -g 1 h264.mp4
ffmpeg -i input.y4m -c:v libx264 -preset veryslow -qp 0 -g 1 h264.ts
ffmpeg -i input.y4m -c:v libx264 -preset veryslow -qp 0 -g 1 h264.avi
ffmpeg -i input.y4m -c:v libx264 -preset veryslow -qp 0 -g 1 h264.nut
然后,我对输出视频执行 SSIM 测试:
ffmpeg -i <input> -i rawvideo.y4m \ -filter_complex \ "[0:v]settb=AVTB,setpts=PTS-STARTPTS[compressed]; \ [1:v]settb=AVTB,setpts=PTS-STARTPTS[rawvideo]; \ [compressed][rawvideo]ssim" -f null -
现在的问题是:
为了全部容器,除了 MKV,我得到了预期的结果:
SSIM Y:1.000000 (inf) U:1.000000 (inf) V:1.000000 (inf) All:1.000000 (inf)
但对于 MKV,我得到以下(意外的)结果:
SSIM Y:0.963931 (14.428696) U:0.994818 (22.855238) V:0.994708 (22.763531) All:0.974209 (15.885241)
我遗漏了什么吗?我正在使用 Linux Debian 10。