3 ms·
(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 yo
by Sean-Der 6y ago
(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.
* https://github.com/pion/ion https://github.com/pion/ion
* https://github.com/peer-calls/peer-calls https://github.com/peer-calls/peer-calls
* https://github.com/fox-one/mornin.fm https://github.com/fox-one/mornin.fm
You can also see a bunch of other projects https://github.com/pion/awesome-pion https://github.com/pion/awesome-pion
- saurik 6y agoAs 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).