Closed mariomadproductions closed 9 months ago
Why would they be the same? Screenshots, as far as I know, go through mpv's rendering pipeline.
Why would they be the same? Screenshots, as far as I know, go through mpv's rendering pipeline.
So going through the pipeline is a lossy process? Is there a way to get the frame before it goes through the pipeline?
You're assuming that the way you're capturing screenshots right now in ffmpeg isn't "lossy" in some sense, which is not true. Your video is likely YCbCr with some chroma downscaling, if it's like any commonly found video. PNG is RGB, which means the chroma will be upscaled. What filter you use for upscaling is up to whatever does the conversion.
Even for the case of a 4:4:4 YCbCr video, you'd still be doing the conversion to RGB, and while there are matrices in standards for this there's nothing said about the numerical accuracy of the implementation.
I see. I guess I can't really get lossless screenshots then, best I can do is make sure use a consistent method between screenshots. Okay, I suppose this issue should be closed then. Thanks
Try --profile=fast
which should match ffmpeg scaling
Important Information
Provide following Information:
If you're not using git master or the latest release, update. Releases are listed here: https://github.com/mpv-player/mpv/releases
Reproduction steps
Getting a PNG image of the first frame of a video using
ffmpeg -i autodemoA.thp -vf "select=eq(n\,0)" -q:v 3 frame.png
and using the screenshot function of mpv.Expected behavior
Screenshots are the same.
Actual behavior
Screenshots differ.
Log file
log.txt
Sample files
autodemoA.thp frame.png mpv-shot0001.png comparison.png