How would one formulate a command for point-to-point 2K 60-90Hz streaming from one PC to another with lowest possible latency using ffmpeg?
I built a VR headset from an eyebox off Amazon, gyro + arduino and 2K HDMI display off Alibaba. It works well with Blender Game engine but the wire drives me crazy.
I'm trying to make it wireless with a Raspberry Pi or some other small computer. (I need to add a weight at the back to balance the headset anyway)
This is how I imagine setting things up -
Server (PC): Stream 2K application window with lowest possible latency to one of the ports on the IP
Client (HMD): Run Mplayer in benchmark mode for lowest latency possible (per FFmpeg documentation)
FFmpeg is integrated fully into Blender but the input stream can be just a desktop screen capture.
The home router from my ISP supports 5Ghz Wifi. I also have a 5Ghz Wifi CSL USB stick which is plug-and-pay with Linux.
As latency is really bad for VR I guess I can shave off few milliseconds by streaming uncompressed? As streaming is only over LAN bandwidth is only limited I think by 5GHz Wifi which is I think like 100Mb/s.
There are hundreds of ways to interpret ffmpeg documentation, it looks like you can only really understand what options to use from experience. I can't see anyone else trying the same thing.
I could spend a week trying every possible setting but I'm pretty sure someone who deals with ffmpeg every day would know the best settings for this straight away.
This command gives about a second of delay and 25 FPS:
Server: avconv -f x11grab -s 2160x1200 -r 60 -i :0.0 -f mpegts udp://192.168.0.2:1234
Client: mplayer -benchmark udp://192.168.0.2:1234
If I use 'rawvideo' the stream won't be picked up by mplayer. It will say just "stream not seekable".