nvvl2decoder when it is available, it basically creates the decode pipeline on its own using the most possible hardware-accelerated elements. This gives the application portability. You could also switch the mp4 URI for RTSP without changing the pipeline.
I haven’t tested this, but I am 90% sure that the approach 2 has better performance that 4.
Have you considered encoding the frame and sending it with RTSP or WebRTC? We have worked with clients offering this kind of solution and it has worked pretty well for them. Since the encoder is HW-accelerated it doesn’t introduce a significant overhead and this way you can control the bitrate to avoid network congestion.
There is an open-source version of WebRTC here, you can give it a try. If you are interested in learning more, we provide a couple of custom solutions for WebRTC and RTSP: GstWebRTC, GStreamer WebRTC Wrapper, and GstRtspSink
We can always talk in more detail about it, send us your requirements to ridgerun.com/contact and or email@example.com and we will be happy to help.