[FFmpeg-user] SSIM filter showing (small) differences in identical(?) streams

Paul B Mahol onemda at gmail.com
Sun Feb 28 20:57:47 EET 2021


On Sun, Feb 28, 2021 at 5:31 PM Ian Pilcher <arequipeno at gmail.com> wrote:

> On 2/26/21 9:52 PM, pdr0 wrote:
> > Different timebase means there is potential to compare different frames.
> >
> > Use settb
> >
> > ffmpeg -framerate 60000/1001 -i lossless.mkv -start_number 0 -framerate
> > 60000/1001 -i source/%06d.tif -t 00:01:00 -lavfi
> >
> "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim"
> > -f null -
>
> That seems to work.  It gets rid of the "not matching timebases"
> warning.  It does cause the duration option (-t 00:01:00) to not work,
> but I was able to use the "-frames:v" option instead.  (In fact, I don't
> need specify the framerate of the image sequence at all.)
>
>   $ ffmpeg -i lossless.mkv -start_number 0 -i source/%06d.tif -frames:v
> 3596 -lavfi
> "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim"
>
> -f null -
>   ...
>   Input #0, matroska,webm, from 'lossless.mkv':
>     Metadata:
>       ENCODER         : Lavf58.45.100
>     Duration: 00:00:59.99, start: 0.000000, bitrate: 1223104 kb/s
>       Stream #0:0: Video: huffyuv (HFYU / 0x55594648), bgr0, 1440x1080,
> 59.94 fps, 59.94 tbr, 1k tbn, 1k tbc (default)
>       Metadata:
>         ENCODER         : Lavc58.91.100 huffyuv
>         DURATION        : 00:00:59.994000000
>   Input #1, image2, from 'source/%06d.tif':
>     Duration: 04:17:10.96, start: 0.000000, bitrate: N/A
>       Stream #1:0: Video: tiff, rgb24, 1440x1080, 25 tbr, 25 tbn, 25 tbc
>   ...
>   [Parsed_ssim_4 @ 0x562a600ac780] SSIM R:0.999888 (39.506142)
> G:0.999889 (39.531716) B:0.999887 (39.466715) All:0.999888 (39.501442)
>
> So this gets me to the same result that I got when I compared the
> derived PNG image sequence to the original TIFF sequence.
>
>   $ ffmpeg -start_number 0 -i lossless/%06d.png -start_number 0 -i
> source/%06d.tif -frames:v 3596 -filter_complex ssim -f null -
>   ...
>   [Parsed_ssim_0 @ 0x5630c77ad440] SSIM R:0.999888 (39.506142)
> G:0.999889 (39.531716) B:0.999887 (39.466715) All:0.999888 (39.501442)
>
> Now that I know about the -frames:v option, I decided to try omitting
> the last frame from the comparison.
>
>   $ ffmpeg -start_number 0 -i lossless/%06d.png -start_number 0 -i
> source/%06d.tif -frames:v 3595 -filter_complex ssim -f null -
>   ...
>   [Parsed_ssim_0 @ 0x560797482440] SSIM R:1.000000 (inf) G:1.000000
> (inf) B:1.000000 (inf) All:1.000000 (inf)
>
>   $ ffmpeg -i lossless.mkv -start_number 0 -i source/%06d.tif -frames:v
> 3595 -lavfi
> "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim"
>
> -f null -
>   ...
>   [Parsed_ssim_4 @ 0x5571f0a97780] SSIM R:1.000000 (inf) G:1.000000
> (inf) B:1.000000 (inf) All:1.000000 (inf)
>
> That gets me the expected score.
>
> I don't understand why I have to omit the final frame.  Both ImageMagick
> and ffmpeg show the images as identical.
>
>   $ compare -metric AE lossless/003595.png source/003595.tif /tmp/diff.png
>   0
>
>   $ ffmpeg -i lossless/003595.png -i source/003595.tif -filter_complex
> ssim -f null -
>   ...
>   [Parsed_ssim_0 @ 0x561a6aae1540] SSIM R:1.000000 (inf) G:1.000000
> (inf) B:1.000000 (inf) All:1.000000 (inf)
>
> This is definitely good enough for my purposes, however.  I'm going to
> declare victory and move on.
>

Try ssim=shortest=1

Most likely inputs have not same number of frames.


>
> Thanks for your help!
>
> --
> ========================================================================
>                   In Soviet Russia, Google searches you!
> ========================================================================
>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-user mailing list