Excited to share Unnamed SFU, it's creator just sent out an email asking people to try it out. It is designed for one to many communication (conferencing/webinars)! It does one thing and does it REALLY well. The minimalism helps concentration/lowers barrier of entry a lot. Now that WebRTC is getting easier to build things with, I hope to see a lot more special purpose software like this. It is nice having heavyweight video solutions, but attacking the problem from different angles I think is going to bring a lot of innovation as well :)
-----
Dear colleagues,
A friend of mine just did a three-hour first-year lecture over my unnamed
SFU with 12 students. The students didn't switch on their camera (except
during the break), the lecturer was streaming three flows: audio, video,
and lecture slides.
The total amount of network traffic oscillated between 4Mbps and 10Mbps
(380kps to 800kbps for each receiver), which indicates that the congestion
control algorithm is working as designed. The CPU load oscillated between
10% and 20% (of a $5/month VPS), which is more than in previous tests,
I suspect that the CPU accounting of the VPS I'm renting is not accurate.
Neither the lecturer nor the students (first years, non-STEM) had any
problems with the software. One student reported problems with the video,
which went away after a while. The students initially complained about the
primitive UI (« au début, ça fait un peu peur »), then got used to it
(« mais après, ça va »).
I think the software is ready for a test at larger scale, say, a seminar
with a hundred listeners or so. If anyone is organising a seminar and is
willing to take the risk, please let me know. (You are welcome to forward
this mail.) https://www.irif.fr/~jch/software/sfu/
Best,
-- Juliusz
-----
It uses a library I work on Pion WebRTC (https://github.com/pion/webrtc) the Go implementation of WebRTC. If you aren't familiar with WebRTC, now is a great time to learn it! It was designed for conferencing, but everyone realized it can do a lot of amazing things! It is used for things like WebTorrent, Tor, Mixer.com etc...
Sorry I am not the author of the linked software. I made a mistake, I thought it was Free Software from my conversations with the author I missed that notice :(
Awesome! I was just playing with pion(&ion)! Very cool tech. Curious what you use it for and if it has much scale in production?
I almost wish there was something between ion (very distributed) and pion (very low-level), this might be a good example to include in the pion examples. Light single node SFU, which I can imagine you can add a routing layer to shard scale pretty easily.
Thanks for all your work on the tool! Got up and running very quickly (still looking into some MediaInfo issues).
Thank you so much! I don't use it myself for work, I just work on Pion because I think it is an important problem to solve :)
One company uses Pion for media distribution (not ingestion). I don't know where they are at on the project, but the traffic was ~15 million viewer! They have a bunch of custom infrastructure and what not, but 'at scale' is being done with Pion :)
I would love to have that Pion example! If you get a chance you should open an issue, and would love to throw out ideas. I am always looking for ways to make it better, I was just unaware that this would be helpful :(
Thats awesome! Thanks, I'll probably send a PR soon myself. Do you have a pion chat as well? I couldn't get on the one linked. Can point out some things as I play with the implementation.
Also, it doesn't seem to be open source. From sfu.go:
// Copyright (c) 2020 by Juliusz Chroboczek.
// This is not open source software. Copy it, and I'll break into your
// house and tell your three year-old that Santa doesn't exist.
(Developer on Pion so take my opinion with a grain of salt)
Janus does WAY more (audiobridge, RTP ingestion etc...) so I think if you need all that Janus is your best choice! Pion is more for people that want fundamental building blocks.
There are also other SFUs using Pion! The goal of the project was to make it easier to build software like this.
As far as I have been able to tell, after having done a few full days of research recently on SFUs (mostly as a side project), is that they are very complicated to do well: the work being poured in to, for example, Janus is not at the WebRTC layer, but is instead in dealing with stuff like VP9 SVC, doing H.264 in an end-to-end encrypted context, how to handle a large number of receivers at different quality levels when someone new joins and needs a key frame... there are a lot of (supposedly) hard challenges here, and no SFUs that seem to do it well.
Are you saying Pion does that stuff--as the library doing "all the heavy lifting" (which you say in another comment, but I am responding here as what I am writing might be useful to the people interested in Janus)--or is it, as I had understood, merely the WebRTC protocol implementation? Like, I appreciate that WebRTC isn't a small protocol to implement, but it is specified pretty fully and has an open source reference implementation: if you tasked me with writing one it would be "nothing but a lot of typing"... I am sure I would get frustrated occasionally with some implementation quirk, but it isn't exactly "heavy lifting".
However, building a good SFU is (supposedly) still an area of active research, and all of them still only support a scant subset of expected functionality. I watched a talk on Medooze and got super excited about it, but then it turned out to have just been bought by some other company and isn't really available and frankly never even really got finished (like, that entire presentation seemed ended up feeling like the developer was massively over promising what his system could actually handle).
Janus only just got around to end-to-end encryptions stuff weeks ago and it is more of a prototype, it technically does VP9 SVC but the client has to manually request different quality levels as it doesn't take advantage of any of the control feedback, it requires separate high-overhead peer connections for every single video feed due to an architectural decision made a long time ago (there is a patch from the developer to fix this but it has been sitting unmerged for a year or two, and now he says he needs to rewrite it from scratch), and has a really awkward "room" abstraction coupled together with its SFU as it doesn't need have very good layering.
I had actually found this "Unnamed SFU" project a while ago as it got released and was momentarily interested in it, but it isn't even trying to support the new end-to-end encryption features.
Jitsi now supposedly has end-to-end support but no VP9 SVC, and isn't really designed as a reusable component at the SFU level in the first place.
(I am not able to off of my head make comments about Mediasoup.)
If you are actually saying an SFU is a simple project, you should really build one so we can actually have a good one finally: I have gotten the feeling you would come up with an API surface for it that would be extremely flexible and compose-able for all our myriad use cases. Or if Pion is already doing most of this, as the library doing "all the heavy lifting", it would be fascinating to see a comparison of which of these various SFU-level features it is handling (all of them? that would be awesome ;P).
Janus is a great piece of software. It's extremely flexible due to its plugin system, and implements all of the fun bits of the WebRTC protocol suite that make it so challenging to build a performant SFU.
The unnamed SFU has different goals. It's aimed at doing just one thing — lectures and talks —, but to scale to thousands of users on a $10 VPS, and to be trivial to deploy (just copy a single binary and a few HTML files to your server).
In a sense, Janus pays the price of its flexibility: there are just too many options that the user has to choose among. The Unnamed SFU tries to eschew options, and therefore be simple enough for your mother to install on her VPS (or even on her laptop — why not?).
Sorry I am not the author of the linked software. I made a mistake, I thought it was Free Software from my conversations with the author I missed that notice :(
I'm the author of the software. The plan is to distribute it under a free license, most probably the MIT license, when I'm confident it's stable enough to be widely used.
Sorry for the hassle, but I have some experience with distributions packaging early versions of my software and then failing to update them in a timely manner.
Very interesting project.
if you are looking for a 1:1 solution for video calls that you can embed on websites (to give support or to assist sales), take a look at https://github.com/chaskiq/chaskiq , it also has similar features found at Intercom or Drift
23 comments
[ 0.25 ms ] story [ 76.2 ms ] threadExcited to share Unnamed SFU, it's creator just sent out an email asking people to try it out. It is designed for one to many communication (conferencing/webinars)! It does one thing and does it REALLY well. The minimalism helps concentration/lowers barrier of entry a lot. Now that WebRTC is getting easier to build things with, I hope to see a lot more special purpose software like this. It is nice having heavyweight video solutions, but attacking the problem from different angles I think is going to bring a lot of innovation as well :)
-----
Dear colleagues,
A friend of mine just did a three-hour first-year lecture over my unnamed SFU with 12 students. The students didn't switch on their camera (except during the break), the lecturer was streaming three flows: audio, video, and lecture slides.
The total amount of network traffic oscillated between 4Mbps and 10Mbps (380kps to 800kbps for each receiver), which indicates that the congestion control algorithm is working as designed. The CPU load oscillated between 10% and 20% (of a $5/month VPS), which is more than in previous tests, I suspect that the CPU accounting of the VPS I'm renting is not accurate.
Neither the lecturer nor the students (first years, non-STEM) had any problems with the software. One student reported problems with the video, which went away after a while. The students initially complained about the primitive UI (« au début, ça fait un peu peur »), then got used to it (« mais après, ça va »).
I think the software is ready for a test at larger scale, say, a seminar with a hundred listeners or so. If anyone is organising a seminar and is willing to take the risk, please let me know. (You are welcome to forward this mail.) https://www.irif.fr/~jch/software/sfu/
Best,
-- Juliusz
-----
It uses a library I work on Pion WebRTC (https://github.com/pion/webrtc) the Go implementation of WebRTC. If you aren't familiar with WebRTC, now is a great time to learn it! It was designed for conferencing, but everyone realized it can do a lot of amazing things! It is used for things like WebTorrent, Tor, Mixer.com etc...
A good jumping off point to see what can be built is github.com/pion/awesome-pion or a talk I gave recently that is targeted at people who have never done anything with WebRTC before! https://www.youtube.com/watch?v=FdgoOrJH8ok&feature=youtu.be...
So I am confused, you are asking us to clone the git repository, but the closest thing to a license I see is:
// Copyright (c) 2020 by Juliusz Chroboczek.
// This is not open source software. Copy it, and I'll break into your
// house and tell your three year-old that Santa doesn't exist.
This copyright notice means I am not touching it. I would recommend editing your license so I can understand the terms come with using it.
there are also other SFUs using Pion
* https://github.com/pion/ion
* https://github.com/peer-calls/peer-calls
* https://github.com/fox-one/mornin.fm
You can also see a bunch of other projects https://github.com/pion/awesome-pion
Sorry I am not the author of the linked software. I made a mistake, I thought it was Free Software from my conversations with the author I missed that notice :(
Sorry, got mixed up, it looked like you were the author.
I almost wish there was something between ion (very distributed) and pion (very low-level), this might be a good example to include in the pion examples. Light single node SFU, which I can imagine you can add a routing layer to shard scale pretty easily.
Thanks for all your work on the tool! Got up and running very quickly (still looking into some MediaInfo issues).
One company uses Pion for media distribution (not ingestion). I don't know where they are at on the project, but the traffic was ~15 million viewer! They have a bunch of custom infrastructure and what not, but 'at scale' is being done with Pion :)
I would love to have that Pion example! If you get a chance you should open an issue, and would love to throw out ideas. I am always looking for ways to make it better, I was just unaware that this would be helpful :(
(it's Go)
Also, it doesn't seem to be open source. From sfu.go:
I also already have Zoom and BlueJeans binaries on this Ubuntu laptop... I'm not rms, I can't get away with closed source-aversion.
Janus does WAY more (audiobridge, RTP ingestion etc...) so I think if you need all that Janus is your best choice! Pion is more for people that want fundamental building blocks.
There are also other SFUs using Pion! The goal of the project was to make it easier to build software like this.
* https://github.com/pion/ion
* https://github.com/peer-calls/peer-calls
* https://github.com/fox-one/mornin.fm
You can also see a bunch of other projects https://github.com/pion/awesome-pion
Are you saying Pion does that stuff--as the library doing "all the heavy lifting" (which you say in another comment, but I am responding here as what I am writing might be useful to the people interested in Janus)--or is it, as I had understood, merely the WebRTC protocol implementation? Like, I appreciate that WebRTC isn't a small protocol to implement, but it is specified pretty fully and has an open source reference implementation: if you tasked me with writing one it would be "nothing but a lot of typing"... I am sure I would get frustrated occasionally with some implementation quirk, but it isn't exactly "heavy lifting".
However, building a good SFU is (supposedly) still an area of active research, and all of them still only support a scant subset of expected functionality. I watched a talk on Medooze and got super excited about it, but then it turned out to have just been bought by some other company and isn't really available and frankly never even really got finished (like, that entire presentation seemed ended up feeling like the developer was massively over promising what his system could actually handle).
Janus only just got around to end-to-end encryptions stuff weeks ago and it is more of a prototype, it technically does VP9 SVC but the client has to manually request different quality levels as it doesn't take advantage of any of the control feedback, it requires separate high-overhead peer connections for every single video feed due to an architectural decision made a long time ago (there is a patch from the developer to fix this but it has been sitting unmerged for a year or two, and now he says he needs to rewrite it from scratch), and has a really awkward "room" abstraction coupled together with its SFU as it doesn't need have very good layering.
I had actually found this "Unnamed SFU" project a while ago as it got released and was momentarily interested in it, but it isn't even trying to support the new end-to-end encryption features.
Jitsi now supposedly has end-to-end support but no VP9 SVC, and isn't really designed as a reusable component at the SFU level in the first place.
(I am not able to off of my head make comments about Mediasoup.)
If you are actually saying an SFU is a simple project, you should really build one so we can actually have a good one finally: I have gotten the feeling you would come up with an API surface for it that would be extremely flexible and compose-able for all our myriad use cases. Or if Pion is already doing most of this, as the library doing "all the heavy lifting", it would be fascinating to see a comparison of which of these various SFU-level features it is handling (all of them? that would be awesome ;P).
The unnamed SFU has different goals. It's aimed at doing just one thing — lectures and talks —, but to scale to thousands of users on a $10 VPS, and to be trivial to deploy (just copy a single binary and a few HTML files to your server).
In a sense, Janus pays the price of its flexibility: there are just too many options that the user has to choose among. The Unnamed SFU tries to eschew options, and therefore be simple enough for your mother to install on her VPS (or even on her laptop — why not?).
Juliusz Chroboczek: "- Is anybody home?"
there are also other SFUs using Pion
* https://github.com/pion/ion
* https://github.com/peer-calls/peer-calls
* https://github.com/fox-one/mornin.fm
You can also see a bunch of other projects https://github.com/pion/awesome-pion
Sorry I am not the author of the linked software. I made a mistake, I thought it was Free Software from my conversations with the author I missed that notice :(
I'm the author of the software. The plan is to distribute it under a free license, most probably the MIT license, when I'm confident it's stable enough to be widely used.
Sorry for the hassle, but I have some experience with distributions packaging early versions of my software and then failing to update them in a timely manner.
Otherwise Jitsi Meet or BigBlueButton