Possibilities of creating server to accept and record video from mutiple devices at a time

Indic Software

Active Member
Licensed User
Hello,

I have just received an inquiry in which the client wants to build a desktop application which will stream the screen of user to a remote server and on the remote server these streams should be show on screen as well as saved for later reference.

I have tried WebRTC to build video conference solution but also starts lagging with more then 50 simultaneous connections. Of course here it is different instead of everyone receiving video of all the others, the users will send video stream to one single server which will then process it.

Is something like this possible?

The number of simultaneous users would be around 200 per session.

If anyone has tired to build something like this and can share experience it would be nice.


Regards,
 

emexes

Expert
Licensed User
stream the screen of user to a remote server
number of simultaneous users would be around 200 per session.
That's a hefty workload. You can reduce it by lowering either the resolution or the framerate. Given that it is of screen (computer desktop) then you're probably more interested in resolution, eg so that text is readable. You didn't say anything about audio and so, if just imagery is ok and it can be regular screen captures rather than smooth video, then I'd think about sending them as regular JPEG images.

I just tried here, and the full screen capture at q70 for my 1600x900 screen on a YouTube page with mixed video and text is 185 kB. If I scale it down to 1280x720 then it is 130 kB.

130 kB/frame x 8 bits/byte x 1 frame/second x 1.2 protocol overhead x 200 users = 228 Mbps line speed hitting the remote server. Hmm. 26 MB/second (94 GB/hour) to the hard disk is probably ok, but I'd be thinking about the senders doing a bit of pre-processing and only sending images full size once they've changed by more than a threshold amount, and say quarter-size otherwise. Or split the images into say 64 regions (1/8th x 1/8th) and only send the changed regions.

It is an interesting challenge. Is it for monitoring online examinations? How encompassing does the solution need to be? Does every pixel matter eg like it does with medical imagery?

Perhaps you can piggyback onto existing infrastructure eg YouTube's livestreaming + recording, but I don't know how popular that would make you there, or how much money they'd soon be asking for. :rolleyes:


testscreencapturesizev720q70.jpg
 
Last edited:

Indic Software

Active Member
Licensed User
It is an interesting challenge. Is it for monitoring online examinations?
Not exactly monitoring but conducting online exams. Mostly MCQ based exams.

How encompassing does the solution need to be? Does every pixel matter eg like it does with medical imagery?
It does not need to be very encompassing and pixel perfection is not what I am aiming for.
 
Last edited:

emexes

Expert
Licensed User
Another idea is that, if you already have a solution that works for 40 connections, you could run 5 instances of that on hire-by-the-hour dedicated virtual servers eg Vultr and point 40 candidates to each server, then download the recorded video at a more leisurely pace that doesn't set your own local internet connection on fire.

Not sure how you'd do the live monitoring of 200 screens at once: first approximation would be to use 5 local computers, each one remote-desktopped into one of the 5 virtual servers. TBH that might be more workable anyway, having 40 candidate screens on each monitoring screen, rather than all 200 on a single monitoring screen.

I did a speedtest.net on the most basic Vultr VPS a few months ago, got 1 Gbps, so I doubt their internet connection is going to be a bottleneck.
 

emexes

Expert
Licensed User
I did a speedtest.net on the most basic Vultr VPS a few months ago, got 1 Gbps, so I doubt their internet connection is going to be a bottleneck.

I figured, heck, better just double-check this, logged back in to Vultr, set up a basic Windows VPS, costs 3 cents per hour.

Looks like somebody straightened out the bends in their internet cable:

1628165021075.png
 

moster67

Expert
Licensed User
Longtime User
you could use ffmpeg or VLC to send the screen from clients (perhaps transcoding it to reduce bandwidth/size) and then use ffmpeg/VLC (again) to save stream and view it on the server.
However, as mentioned by @emexes, the server load may be very high.
 
Top