Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么FFMPEG SSIM会产生不同的比较结果,这取决于这些未压缩视频中的哪一个是第一个/第二个?_Ffmpeg - Fatal编程技术网

为什么FFMPEG SSIM会产生不同的比较结果,这取决于这些未压缩视频中的哪一个是第一个/第二个?

为什么FFMPEG SSIM会产生不同的比较结果,这取决于这些未压缩视频中的哪一个是第一个/第二个?,ffmpeg,Ffmpeg,ffmpeg的ssim指令说参考应该放在第二位,当我按顺序比较这些视频时,(其中“copy.avi”应该是“original.avi”的无损H.264副本),ssim和PSNR返回无损结果。但是如果我颠倒顺序,性能就不是无损的 为什么会这样 先复印,后原件 先原件,后复印 一种格式是yuv420p,另一种是灰色。因此,为了比较它们,可以将灰色转换为yuv420p,或者将yuv420p转换为灰色。正如您所注意到的,此操作并不总是无损的。要仅比较Y平面,请在调用psnr/ssim之前使用extrac

ffmpeg的ssim指令说参考应该放在第二位,当我按顺序比较这些视频时,(其中“copy.avi”应该是“original.avi”的无损H.264副本),ssim和PSNR返回无损结果。但是如果我颠倒顺序,性能就不是无损的

为什么会这样

先复印,后原件 先原件,后复印
一种格式是yuv420p,另一种是灰色。因此,为了比较它们,可以将灰色转换为yuv420p,或者将yuv420p转换为灰色。正如您所注意到的,此操作并不总是无损的。要仅比较Y平面,请在调用psnr/ssim之前使用extractplanes=Y过滤器。

有两件事很突出:1)
[avi@0x7ffdee002000]流0的解码失败
,即使过程已完成2)copy.avi的tbc为120,而original.avi的tbc为60(我不知道这意味着什么)Ok这是有意义的。ThanksI在psnr/ssim之前用“extractplanes=y”为yuv420p视频运行了这段视频,但仍然没有达到1.0等。他说,也许我应该相信,正确使用ssim/psnr确实会产生预期的无损结果……ssim是对称的,只要格式相同,结果应该是相同的。奇怪的是,我得到了相反的结果——首先是原件,然后是副本,SSIM为1。两种格式都是yuv420p。
> ffmpeg -hide_banner -i copy.avi -i original.avi -lavfi "ssim;[0:v][1:v]psnr" -f null –


[avi @ 0x7ffdee002000] decoding for stream 0 failed
Input #0, avi, from 'copy.avi':
  Metadata:
    encoder         : Lavf58.20.100
  Duration: 00:00:10.67, start: 0.000000, bitrate: 644937 kb/s
    Stream #0:0: Video: h264 (High 4:4:4 Predictive) (H264 / 0x34363248), yuv420p(progressive), 2048x1536, 645930 kb/s, 60 fps, 60 tbr, 60 tbn, 120 tbc
Input #1, avi, from 'original.avi':
  Metadata:
    encoder         : Lavf54.35.100
  Duration: 00:00:10.67, start: 0.000000, bitrate: 1509965 kb/s
    Stream #1:0: Video: rawvideo (Y800 / 0x30303859), gray, 2048x1536, 1512312 kb/s, 60 fps, 60 tbr, 60 tbn, 60 tbc
Stream mapping:
  Stream #0:0 (h264) -> ssim:main
  Stream #0:0 (h264) -> psnr:main
  Stream #1:0 (rawvideo) -> ssim:reference
  Stream #1:0 (rawvideo) -> psnr:reference
  ssim -> Stream #0:0 (wrapped_avframe)
  psnr -> Stream #0:1 (wrapped_avframe)
Press [q] to stop, [?] for help
Output #0, null, to '–':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: wrapped_avframe, yuv420p(progressive), 2048x1536, q=2-31, 200 kb/s, 60 fps, 60 tbn, 60 tbc
    Metadata:
      encoder         : Lavc58.35.100 wrapped_avframe
    Stream #0:1: Video: wrapped_avframe, yuv420p, 2048x1536, q=2-31, 200 kb/s, 60 fps, 60 tbn, 60 tbc
    Metadata:
      encoder         : Lavc58.35.100 wrapped_avframe
frame=  640 fps= 72 q=-0.0 Lq=-0.0 size=N/A time=00:00:10.66 bitrate=N/A speed=1.21x    
video:670kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_ssim_0 @ 0x7ffdef8024c0] SSIM Y:1.000000 (inf) U:1.000000 (inf) V:1.000000 (inf) All:1.000000 (inf)
[Parsed_psnr_1 @ 0x7ffdef802940] PSNR y:inf u:inf v:inf average:inf min:inf max:inf
> ffmpeg -hide_banner -i original.avi -i copy.avi -lavfi "ssim;[0:v][1:v]psnr" -f null –


Input #0, avi, from 'original.avi':
  Metadata:
    encoder         : Lavf54.35.100
  Duration: 00:00:10.67, start: 0.000000, bitrate: 1509965 kb/s
    Stream #0:0: Video: rawvideo (Y800 / 0x30303859), gray, 2048x1536, 1512312 kb/s, 60 fps, 60 tbr, 60 tbn, 60 tbc
[avi @ 0x7fb74680d600] decoding for stream 0 failed
Input #1, avi, from 'copy.avi':
  Metadata:
    encoder         : Lavf58.20.100
  Duration: 00:00:10.67, start: 0.000000, bitrate: 644937 kb/s
    Stream #1:0: Video: h264 (High 4:4:4 Predictive) (H264 / 0x34363248), yuv420p(progressive), 2048x1536, 645930 kb/s, 60 fps, 60 tbr, 60 tbn, 120 tbc
Stream mapping:
  Stream #0:0 (rawvideo) -> ssim:main
  Stream #0:0 (rawvideo) -> psnr:main
  Stream #1:0 (h264) -> ssim:reference
  Stream #1:0 (h264) -> psnr:reference
  ssim -> Stream #0:0 (wrapped_avframe)
  psnr -> Stream #0:1 (wrapped_avframe)
Press [q] to stop, [?] for help
Output #0, null, to '–':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: wrapped_avframe, gray(progressive), 2048x1536, q=2-31, 200 kb/s, 60 fps, 60 tbn, 60 tbc
    Metadata:
      encoder         : Lavc58.35.100 wrapped_avframe
    Stream #0:1: Video: wrapped_avframe, gray, 2048x1536, q=2-31, 200 kb/s, 60 fps, 60 tbn, 60 tbc
    Metadata:
      encoder         : Lavc58.35.100 wrapped_avframe
frame=  640 fps= 72 q=-0.0 Lq=-0.0 size=N/A time=00:00:10.66 bitrate=N/A speed=1.19x    
video:670kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_ssim_0 @ 0x7fb748101780] SSIM Y:0.998296 (27.684975) All:0.998296 (27.684975)
[Parsed_psnr_1 @ 0x7fb748101c40] PSNR y:56.840774 average:56.840774 min:56.812125 max:56.871584