cracker0dks / Accelerator

Online Conference and Collaboration Tool
GNU General Public License v3.0
65 stars 26 forks source link

Give the ability to stream 200 video cameras at the same time #28

Open emaalouf opened 3 years ago

emaalouf commented 3 years ago

This will take time, but I guess we can make it with the right infrastructure, provide 200 video cameras at the same time is amazing, let us work on this in javascript, I currently can stream up to 20, but multiplying that with 10 more times is something I look to achieve with this software.

cracker0dks commented 3 years ago

this is not so easy as it sounds, this has to do with encoding and webrtc encryption... webrtc is very cpu heavy on the server side... so you cant use it with more than 6 Cams on. If you turn it of, you need to use wasm on the client... but you only have 1 cpu / stream for decoding... so it depends a lot on your client how much is possible. But maybe we find a way around that.

emaalouf commented 3 years ago

What if we had separate encoding server, maybe something with GPU encoding, to help encode the video at lightning speeds, let me know if you think that would be feasible.

Best,

cracker0dks commented 3 years ago

If you have the correct hardware you should be able to use hardware acceleration right away (if you force h264 video encoding through the config) But common codecs today are VP8 and VP9 also AV1 is coming... hardware acceleration is very bad for all of them on server hardware. The best way I see atm is client side encoding in combination with e2e described here: https://jitsi.org/blog/e2ee/ This way the server don't need to do encoding and we can use hardware acceleration on the client + some webrtc features. The problem here is that is only supported on chrome for now, that's why I didn't implemented it back than.