Readit News logoReadit News
Posted by u/ketzu 6 years ago
Ask HN: Are there good self-hosted video conference tools?
As we switched to full home office at my university, we started establishing short regular video conferences. Unfortunately, most tools are overwhelmed and we would like to self host our infrastructure.

Do any of you have experience with self hosted tools for video conferences?

londons_explore · 6 years ago
You need a lot of GPU time to run a decent video conferencing system.

That's because every video feed usually needs to be realtime, low-latency transcoded to match the receivers bandwidth requirements. If some people in the meeting are on 3G while others are on fast internet, you can't send the same data to all of them! You can't send the same to all of them if different client devices have different hardware video encoders/decoders. Start doing software decoding and you'll soon end up draining users batteries like Zoom!

In a 10 person meeting, thats 10 incoming video feeds, and 100 outgoing video feeds. Not many machines can encode 100 video feeds in realtime! Obviously you can skimp on quality a bit and bucket users (ie. we'll have a high, a mid, and a low res feed, and just pick which to send).

For all the above reasons, that tends to be why self-hosted video conferencing systems are kinda laggy and gobble battery and have poor client support.

Big companies offering hosted VC solutions tend to have dedicated video encoding chips, so they can cheaply make hundreds of video streams to send to every participant.

littlestymaar · 6 years ago
For a low number of people in the room, WebRTC will work well in a fully P2P way. There's no need for a centralized server unless you have more than 10 users connected.

Also, in practice for a big number of users you won't need to encode the videos streams more than 10 times because most people have the same kind of characteristics (you'll have up to three level of network connectivity, and most of your users will have h264 support so you will have few codecs to support).

For instance, you could go for 720p h264, 480p h264, 240p h264, and audio only for people with too little bandwidth or no h264 support, and you'll be good for most use cases.

eeZah7Ux · 6 years ago
> WebRTC will work well in a fully P2P way. There's no need for a centralized server unless you have more than 10 users connected.

I wish. With 10 users you have 102 - 10 = 90 different (unidirectional) data flows.

Each of them can run into a different bottleneck where person X cannot hear Y and Y cannot hear W...

And they cannot be monitored centrally (!).

Compared to a centralized location where you would have 10 user-->server + 10 server-->user flows.

On top of that, ISPs care about bandwidth between customers and large services e.g. AWS and don't care about ISP-to-ISP traffic.

throw0101a · 6 years ago
> That's because every video feed usually needs to be realtime, low-latency transcoded to match the receivers bandwidth requirements.

Scalable video (and audio) never seemed to have taken off:

> SVC standardizes the encoding of a high-quality video bitstream that also contains one or more subset bitstreams. A subset video bitstream is derived by dropping packets from the larger video to reduce the bandwidth required for the subset bitstream. The subset bitstream can represent a lower spatial resolution (smaller screen), lower temporal resolution (lower frame rate), or lower quality video signal.

* https://en.wikipedia.org/wiki/Scalable_Video_Coding

* https://en.wikipedia.org/wiki/Bitrate_peeling

glup · 6 years ago
Yes, but perhaps now is the time, given the circumstances.
SI_Rob · 6 years ago
nitpick because the slant of your argument is correct, but in a self-hosted system you don't necessarily need a single machine to encode 10 video feeds, each client (assuming this is a P2P approach) only needs to encode one - the user's. It does need to transcode that to 9 outbound streams, which is asking quite a lot of even current high end laptop hardware, and basically impossible on a smartphone.

Add in the unrealistic upstream bandwidth needs and, yeah, your point still stands.

Nihilartikel · 6 years ago
I think a lot of WebRTC video conferencing solutions don't do server side video encoding - the clients encode their own stream(s) for high/low bandwidth, and server side they have a selective-packet-forwarder, or SPF. The clients are usually smart enough to only send the high bandwidth stream when that speaker is in focus.
jupp0r · 6 years ago
Modern video codecs support SVC which makes the computation of several lower quality levels computationally inexpensive.
tydok · 6 years ago
Firstly, a client will have 10 outgoing video streams at most, not 100!

Secondly, if we consider receivers bandwidth, a client can encode 2 or 3 video streams, e.g. low, medium, and high quality video.

woofcat · 6 years ago
I think he's saying the server would have to handle 100 streams. 10 clients * 10 streams each.
mongol · 6 years ago
Is there no video compression algorithm that lets you drop every third "line" or something from a higher resolution feed, to let you downscale video efficiently for bandwidth savings, but using only little CPU, and providing okay-ish quality?
grogenaut · 6 years ago
That's not really how video codecs work. Below is a gross oversimplification to bootstrap the parent's knowledge.

Video is usually both temporally compressed (across frames), and over frequency domain (ala jpeg) in the frame itself.

Transcoding is essentially what you're asking for, it downscales the video. It's the cheapest currently or we'd be using something else.

If you just dropped data you'd get that blocky square thing that you get when watching tv or satellite and the signal goes lossy.

fulafel · 6 years ago
There are, but they are not widely used.
aklemm · 6 years ago
Matrix is a fascinating decentralized chat and VoIP conferencing option that can be self-hosted. I’m running the Synapse server and recently tried it with a couple of friends. The 1 to 1 video experience was noticeably sharper than Google Hangouts.

https://matrix.org/docs/projects/server/synapse/

Edit: This is the client software: https://about.riot.im/features

johnchristopher · 6 years ago
How did you set up video ? Last time I checked it was not straight forward. Do you have any software/plugins/repositories to recommend ?
aklemm · 6 years ago
The official install docs have a TURN server option to help with VoIP and all of it worked without modification. What problems did you run into?
magriz · 6 years ago
You can try Jitsi meet[1]. Open-source and with all the usual features.

[1]https://jitsi.org/jitsi-meet/

hackandtrip · 6 years ago
The CPU usage of their web client is a pity, everything else is perfect.
phillc73 · 6 years ago
We (the company/department I work in) setup Riot.im for chat/room based communication while everyone works remotely. As part of this, we added the Jitsi add-in for conference calls.

At the end of day one I can say that Jitsi audio is pretty good. However, the video does seem to freeze quite regularly. This was in calls with only 3 to 4 people. I don't know if it's a Jitsi problem, or somehow an integration problem with Riot.im.

Then again, because I can imagine that Jitsi has probably experienced astronomical traffic growth over the last few days as more and more people transition to remote working during the corona crisis, I don't want to be overly critical. I'll see how it plays out over the next couple of weeks. However, right now I'm not sure I'd want to use it for client based external calls.

Arathorn · 6 years ago
If you’re using the default jitsi we provided, then yesterday it was incredibly overloaded. We are working on it currently; typically the video quality is rock solid.
ketzu · 6 years ago
That's the only one I found so far, but we'll definitely check it out!
Nihilartikel · 6 years ago
I've recently set jitsi up. Its dockerized version is pretty easy to get working and supports ssl automatically if you have a domain name.
majkinetor · 6 years ago
Yeah, this works like a charm for me. I host daily with 5-10 people without any problems.

Jitsi beats anything else ,including commercial stuff. You don't need any account, just browser.

gregoriol · 6 years ago
It's simple and works very well! maybe a little bit harder to self-host but definitely a top option!
lhoff · 6 years ago
There are .deb packages for Ubuntu and Debian available. I installed it on a freshly provisioned VM running Debian 10 in about 15 minutes. They even provide a shell script to obtain an let's encrypt SSL certificate.

https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-in...

hannob · 6 years ago
If you use it via docker compose there is nothing hard to self host. I literally tried this out within minutes. A few more minutes to put it on the normal port with a real certificate.

https://github.com/jitsi/docker-jitsi-meet

gregoriol · 6 years ago
Thanks to the other comments, I now think it's not that hard to self-host it :-)

edit: still, self-hosted won't have the phone numbers to join the room

jeena · 6 years ago
It says that I should use Chrome instead of Firefox.
jsilence · 6 years ago
Firefox does have issues selecting the correct microphone device.
sirwitti · 6 years ago
A group of friends were and still are evaluating video conferencing for small groups (<6 people).

Here's what we've tried so far:

Nextcloud: I'm running a nextcloud instance since ~2 years (it's awesome) and tried nextcloud talk several times, though for some reason we could not get audio and or video to work.

Just this week we tried jitsi because it's open source and can be self-hosted. Unfortunately while it worked in principle jitsi uses large amounts of cpu cycles when running in the browser and additionally latency and video quality was an issue.

For us the best option as of now is still https://whereby.com which works well regarding stability, audio/video quality and latency, though it's not self-hosted. I'm not affiliated in any way with them, I just like their product.

I'd love nextcloud talk to work, and I'm very curious about other solutions I'm not aware of - self-hosted and otherwise.

Edit:

After reviewing my nextcloud talk setup I saw that I didn't set up a TURN server which might be the reason it's not working. So it's not nextcloud, but incomplete setup.

flas9sd · 6 years ago
I use nextcloud talk with installed coturn (STUN/TURN) to regularly connect with friends. But it is mostly one-on-one, no experience with +4 people. Sometimes there is the issue for browsers to pickup the mic but this will get sorted out. I recommend it. Before we used appear.in (now whereby.com). For work face-to-face is nice and human, but screensharing+audio is where the productivity really is. I think mumble would be fine too if it can be transport encrypted.
punarinta · 6 years ago
Regarding Whereby, I used them actively until they became paid for groups bigger than four and introduced sign-up. Then I decided to build my own free solution porting many features in a form of plugins, to keep the main tool light and fast. You can check it out if interested: https://xroom.app
CrankyBear · 6 years ago
Much as I like Nextcloud, Nextcloud Talk doesn't really scale worth a darn. I'd use it for no more than a dozen or two people. For even a medium-sized business it's way too little.
leesalminen · 6 years ago
Twilio just released a (mostly) full featured client for their Programmable Video service: https://github.com/twilio/twilio-video-app-react

We decided to roll this out to our users as a free service for 6 months. Our users are small business owners in the physical meat-world and don't typically have a Zoom subscription already.

I made a couple tweaks to the app- namely to be able to embed as an iFrame into our web application (and pass the room+user name in as GET parameters).

It works great! We've deployed it to Twilio's infrastructure so we didn't have worry about any of that. Will be rolling out to users today.

TheNetEffect · 6 years ago
Can you share the iframe embed code?
leesalminen · 6 years ago
Sure! Check out https://github.com/leesalminen/twilio-video-app-react and https://github.com/twilio/twilio-video-app-react/pull/95 . It's a single commit to add support for <iframe> embed.
spodek · 6 years ago
Don't forget the value of finding ways to avoid the need for video conferencing. While many may feel unavoidable, alternatives like delegating authority, simplifying tasks, and such can often achieve more than a meeting.

The before covid-19, a friend who organizes conferences told me how his firm achieved more by his not going to the second annual conference he organized in Shanghai and delegating more to his former helper, now main Shanghai organizer.

Even if you can't avoid everything, the more you find ways to simplify, the more you build your experience and skills to do so more the next time.

pmontra · 6 years ago
My experience with my customers is that we hardly need to see each other. Chat all the time, voice calls when they save time, screen sharing about 50% of the time we're in a call, video almost only by misclicks on camera icons.
philbarr · 6 years ago
You can try setting up https://www.kurento.org/

Note that all modern browsers support WebRTC. I wrote a simple server to setup WebRTC sessions between browsers that worked, but it's probably easier to use kurento.

jka · 6 years ago
Kurento looks pretty great. Here's a brief snippet from their 'Getting Started' guide which could be useful too:

"If your intended application consists of a complex setup with different kinds of sources and varied use cases, then Kurento is the best leverage you can use.

However, if you intend to solve a simpler use case, such as those of video conference applications, the OpenVidu project builds on top of Kurento to offer a simpler and easier to use solution that will save you time and development effort."

(edit: and here's a link to OpenVidu: https://openvidu.io/ )

gdi3d · 6 years ago
You could try https://www.yameeting.com/ we give free service for small meetings < 10 ppl with no time restrictions (no enforced limit except server capacity)

You can also use the Ninja Mode (disposables VM's), but you'll have to pay for that.

Disclaimer: I'm the owner of yameeting.com and we use jitsi meet behind the scenes.

clarkevans · 6 years ago
School is closed, but class isn't. Classrooms and play-from-home groups urgently need a solution for parents/teachers. What I'm looking for is a solution for classrooms or other activities for tweens (think 4th graders). I need to be able to limit the users to only those who are authorized, but leave the rooms open for joining/exiting much like a chat server. Jitsi itself is great for that except there is no white-list authorization and that I'd have to host it myself (the free host is overburdened). I think you're targeting a different use case, but schools and parents everwhere need a classroom solution urgently.
gdi3d · 6 years ago
Hey, thanks for you comments. The idea behind yameeting it's the "Ninja Mode" where you have disposable VM's to reduce costs and help to prevent intrusions on the servers where the meetings are taking place.

You can't limit who enters the room using a whitelist with the out-of-the-box jitisi installation but since it's using XMPP you can have that functionality.

I'm pretty sure there are solutions out there that focus on those features.

If you want more information or help with this just contact me hello at yameeting.com

tpetry · 6 years ago
But if you use the jitsi sfu (media server) the streams are not really encrypted between the participants, its only encryped peer1<->sfu and sfu<->peer2
gdi3d · 6 years ago
Yes, that's true it's not end-to-end encrypted as you say.

Here's more information about that https://github.com/jitsi/jitsi-meet/issues/409