FFmpeg:当输入使用 MKV 容器时,SSIM 返回意外结果

FFmpeg:当输入使用 MKV 容器时,SSIM 返回意外结果

我有一个未压缩的视频文件,我想用(无损)编解码器压缩它。

没问题,但是当我执行 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。

相关内容