Try the following instead:
ffplay -vcodec h264_v4l2m2m -i big_buck_bunny.mp4
For gstreamer you can use the following pipeline for mp4 (with audio):
GST_GL_PLATFORM=egl gst-launch-1.0 \
filesrc location=./big_buck_bunny.mp4 ! qtdemux name=m \
m.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! autoaudiosink \
m.video_0 ! queue ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! glimagesink
or for mkv (with audio):
GST_GL_PLATFORM=egl gst-launch-1.0 \
filesrc location=./Panasonic_HDC_TM_700_P_50i.mkv ! matroskademux name=m \
m.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! autoaudiosink \
m.video_0 ! queue ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! glimagesink
The GST_GL_PLATFORM=egl
is supposed to also contribute to reducing cpu usage, but if it causes some strange rendering actifacts, just remove it. Moreover the mkv version does not work on release 20.02, I need to check that.