4 ms·
We use Janus as a WebRTC SFU for projects in the education/gaming sector. Its general purpose approach to WebRTC has been a good foundation to help us build cus
by bbeausej 6y ago
We use Janus as a WebRTC SFU for projects in the education/gaming sector. Its general purpose approach to WebRTC has been a good foundation to help us build custom solutions.
- carlsborg 6y agoWhat turn servers do you use?
- mboehm 6y agoAnswering for myself, not for bbeausej. We are currently using coturn. It is quite easy to setup, you have to dig a little into the configuration parameter and that's it - I would recommend it. Oh well, you probably should use the rest api for generating credentials on the fly and think about scaling (depending on your needs).
- carlsborg 6y agoWhat percentage of sessions do you see going through turn?
- bbeausej 6y agoWe use coturn as the TURN solution and talk to the Janus API via websockets (we found it much better then REST if the msg rate is high)
- kristianpaul 6y agohttps://www.resiprocate.org/ReTurn_Overview https://www.resiprocate.org/ReTurn_Overview
- saurik 6y agoDid you write your own plugin or are you using VideoRoom or something? The thing that turned me off of Janus is that VideoRoom seemed way too high level and made tons of schema assumptions, but all of the important SFU functionality seemed intertwined into the codebase of that plugin, so if I were to actually want to build a "custom solution" it looked like I would have to maintain an annoying-to-merge fork of that thick layer :/.
- VWWHFSfQ 6y agoJanus itself doesn't make any assumptions about a specific use-case. All the functionality outside of the core RTC stuff is implemented with plugins. The default "Video Room" implementation is just a Lua script [0]. Mozilla has written their own SFU plugin (in Rust) [1] for game networking that powers Mozilla Hubs [2]. [0] https://github.com/meetecho/janus-gateway/blob/master/plugins/lua/videoroom.lua https://github.com/meetecho/janus-gateway/blob/master/plugin... [1] https://github.com/mozilla/janus-plugin-sfu https://github.com/mozilla/janus-plugin-sfu [2] https://hubs.mozilla.com/#/ https://hubs.mozilla.com/#/
- saurik 6y agoNo: the vast majority of the VideoRoom functionality is written in C, and it is where all of the actually-hard-to-do video SFU stuff -- like quality control feedback and SVC support, particularly in an end to end encryption context with all the codec-specific workarounds--is commingled together with the notion of "rooms" (which is a really awkward and specific high-level abstraction with a schema that you have to abuse for basic use cases). https://github.com/meetecho/janus-gateway/blob/master/plugins/janus_videoroom.c https://github.com/meetecho/janus-gateway/blob/master/plugin... Yes: if you don't want any of the complex video functionality, you can easily write your own Janus plugin, and that maybe sounds reasonable for some trivial game "SFU" where you are just going to move around some data channel packets... but at that point you can (and I argue should) just use libwebrtc (I do this, and I helped one of my friends do this for his product in a weekend: people act like it is hard to compile but it really isn't). (Even more so: the Lua script you linked to looks more like a demo/example of a way to use the Lua plugin to get some functionality vaguely similar to the VideoRoom plugin, and it is notably ridiculously long and contains a lot of codec-specific knowledge, while not having anywhere near the actual functionality of the actual real C VideoRoom plugin. It is as if Janus is just a super low-level WebRTC library in the form of a framework, with an explicitly monolithic plugin doing everything.)
- VWWHFSfQ 6y agoIt sounds like you have a use-case that you should just write your own plugin for. The out-of-the-box video room plugins aren't suitable. > the vast majority of the VideoRoom functionality is written in C It's still just a plugin that hooks the same callbacks and implements the same interfaces as any of the rest of them. Feel free to implement your own.