Play games remotely with Linux.
This is proof of concept prototype for technical users.
- Lower the latency for streaming
- Minimize streaming buffer(s)
- Tune h264 parameters for lowest latency
- Tune RTP parameters for lowest latency
- Constant or variable bitrate (CBR or VBR)?
- Why h264?
- Because GPU encoding/decoding hardware acceleration
- Why h264 over RTP?
- Because it's a standard - https://tools.ietf.org/html/rfc6184
- Why multicast?
- Eliminates need for extra server software as kernel sends host's stream to everyone connected to the VPN automatically
- Why GStreamer?
- Lots of tuning options
- Lots of plugins
- Debugger - https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html
- View latency issues in the pipeline - https://www.flathub.org/apps/details/org.freedesktop.GstDebugViewer
- Does it matter who hosts VPN (WireGuard)?
- Who has the most bandwidth and stable connection is recommended
- host directory for how to host a game
- remote-player directory for how to connect to a host as a remote player
- Network
- Video/Audio
- GStreamer
If h264 over RTP multicast doesn't pan out there's still many things to try with GStreamer:
- Drop multicast and stream to UDP port in a remote player's machine (this limits player count)
- Try h264 inside MPEG-TS container over multicast
- Try GStreamer's RTSP server if the host doesn't have enough upload bandwidth for all players there's RTSP proxies like rtsp-simple-server
- RTMP
- SRT
- and others
- ffmpeg, mpv, vlc
- too many buffers
- 1000-4000 ms+ latency even locally