Highest quality way to extract a still from video
I doubt there will be much difference in the rendering capabilities between any of the software you list, as long as they play the video correctly. The biggest quality loss has already happened when the video was compressed to mp4. 

Use whatever is easier. This is how you do it with ffmpeg

ffmpeg -i themovie.mp4 -ss 1.23 -t 1 -r 1 -f image2 outputImage.png


where 1.23 is the time in seconds you want to capture. 

How that works is it tells ffmpeg to -ss search to 1.23, then -t 1 means only export 1 second's worth of video, -r 1 means at frame rate 1 frame per second (i.e. export only one frame). If you don't do the -t 1 -r 1 dance it will complain about not being able to export the entire movie as a frame sequence. -f image2 just telss ffmpeg to export as a still frame (it's probably redundant because you're specifying a .png as your output).

Many free, video players like MPV, MPC-HC or VLC can do this from a gui, meaning you can line up the exact frame by eye. They all use high quality video renderers which share a lot of code with ffmpeg. Using one of these, the task would be basically hitting the s key (or whatever) when you find the frame you want.