0
Specifying Problem
I want to stream my desktop to another computer over 1Gbps Ethernet with following requirements:
- Resolution: 1920 x 1080
- FPS: 60
- Input Data: raw 24bit true color (3Gbps)
- Max Output Bitrate: 800Mbps
- Latency: < 50ms (Network latency is less than 1ms)
- CPU: Use less than 20% of Intel Core2 Quad Q9300
- Does not depend on specific hardware acceleration
Suppose that I'm playing a game over the stream (which I'm not) so the frame rate and latency is the most critical issue.
Question
I'm looking for a solution where I can compress the raw video data with 10x to 20x speed to real time. I don't care about bitrate.
Tested Software
- RDP: Uses less than 40Mbps in highest quality and there is no option to set frame rate to 60FPS.
- TightVNC: Allows specifing quality and encoding algorithm. Using
"raw tight"
asencoding
parameter with AVB 80Mbps 60FPS reached on a 4GHz Intel Core i7-6700K but on lower end machine some serious lag start to apear. Usingraw
encoder, lag disappeared but the required bandwidth gets over 3Gbps so the fps is limited and some frame are teared - GamingAnywhere: This software uses H264 to encode raw data and send it over the network, but the encoder prevents it from reaching 60FPS (used bandwidth is < 60Mbps)
Tested Encoders
Tested on raw data input – single thread:
H264: runs at 1.33x (1x mean 60FPS)
ffmpeg -i raw.avi -vcodec libx264 -crf 0 -preset ultrafast -threads 1 out.mp4
MJPEG: runs at 0.33x
- PNG: PNG is more computationally complex than MJPEG so I didn't test it.
@user41209 I wonder why GPU encoding is not an option here. H.264 is not so computationally expensive if you don't want high compression ratios. – slhck – 2018-03-22T15:36:54.443