I wish to measure how good a encode is.
So I do following but not sure if it's correct:
1. Dump YUV feed to encoder,say first frame. convert YUV to png.
ffmpeg -f rawvideo -pixel_format nv12 -video_size 2160x3840 -i 2160x3840.yuv -vframes 1 in.png
2. Decode output mp4 file to yuv by ffmpeg with below command:
ffmpeg -i 2160x3840.mp4 -vcodec rawvideo -pix_fmt nv12 -vframes 1 out.png
3. then compare in.png and out.png with this online tool
I set the fuzzy to 4, I still can see some red dot there. that means pixel delta almost > 5. if set the fuzzy value to 10, then no any red dot.
Does that means this encoder still not good? I remember the delta should be within 3.
+ Reply to Thread
Results 1 to 3 of 3
It's a lossy encoder, set to lossy settings, there's gonna be some loss. Even with lossless settings, you still need to consider the possibility of loss due to color subsampling. And in your round trip, you have to take into account errors in yuv<->rgb conversion.
But you got to remember the beauty of these modern lossy encoders: since they work using lots of psychovisual tricks, even when there is loss it doesn't mean that is bothersome, or possibly even noticeable.
That's why PSNR, SSIM and the like are important metrics, because they take into account some of the HVS and yet still try to give primarily objective, qualitative scores to performance.
You can use a program like MSU VQMT to compare videos by several metrics.
But those metrics aren't a very good proxy for what you see. I prefer to use an AviSynth script, interleaving or stacking videos, then viewing them with a screen magnifier (or not), in realtime playback, and flipping back and forth between individual frames.