5 ms·
I haven't found a library that makes me feel comfortable with using WebRTC for random little projects. Setting up TURN/STUN is annoying and I've actually never
by brrrrrm 3y ago
I haven't found a library that makes me feel comfortable with using WebRTC for random little projects. Setting up TURN/STUN is annoying and I've actually never successfully setup a server/client model (it seems like it'd be useful to have the fast UDP-like stuff, despite WebRTC mostly being about client/client communication)
- tebbers 3y agoI think cloudflare has TURN servers now? Might make it easier.
- nemothekid 3y agoThey made an announcement 2-3 years ago, but I've never seen anything released by them on that front.
- dincer 3y agoit exists & it’s very good. send a note to renan@.
- patcon 3y agoHaven't used it yet, but if this library built on Cloudflare Workers can do for webrtc what PartyKit.io does for websockets (again via Cloudflare Workers), then I expect it'll be a pleasure to use :) https://github.com/gfodor/p2pcf https://github.com/gfodor/p2pcf
- matthewmacleod 3y agoPion (https://github.com/pion/webrtc https://github.com/pion/webrtc) works well and offers a good set of features.
- Uehreka 3y ago> despite WebRTC mostly being about client/client communication This is actually kind of a misconception, though it’s an understandable one given that WebRTC is almost always pitched as a peer-to-peer protocol. In practice, most people using WebRTC for video are sending their video to a server, not directly to another client. It’s pretty safe to assume that most people who use your app are going to need TURN, and at that point, you’re not really doing peer-to-peer at all, so you might as well just have your browser-based app talk to a server that’s pretending to be another browser. These servers (called Selective Forwarding Units or SFUs) can operate like a TURN server in the case of a one-on-one call, but they can also multiplex everyone’s feeds in the case of a larger conference (peer-to-peer 5 person calls would require each participant to send 4 copies of their video) and often have extra features like the ability to record calls, transcode streams or convert to other protocols. The one I’ve used a lot is called Janus[0], it’s open source and has good docs, I recommend people check it out if they’re interested in getting deeper into WebRTC or other video streaming tech. [0] https://janus.conf.meetecho.com https://janus.conf.meetecho.com
- joduplessis 3y agoJanus really is one of those projects you can't believe is OSS. Great work.
- ess3 3y agoI don’t remember where I read this (think it was some published paper) but I was building some audio streaming thing on top of WebRTC and there was an estimate that 60% of people would be able to do p2p.
- dbrgn 3y agoI set up a simple website to stream two webcams in my chicken coop using Janus / WebRTC: https://github.com/dbrgn/chicken-coop/tree/main/rpi-image https://github.com/dbrgn/chicken-coop/tree/main/rpi-image See README for a quick overview. Another interesting SFU library is MediaSoup: https://mediasoup.org/ https://mediasoup.org/
- beardedetim 3y agoI can definitely second janus. At previous job, we used that for video calls/streaming mixed with FFMPEG for some transformations along the way. Really reliable stuff.
- roshanj 3y agoAnother open-source SFU I've had great experience with is Livekit[0]. Great docs, modern, easy to deploy (it's a golang binary), and supports a number of egress options too if you want to record the media during a stream to an external system. With their cloud product they've also built a really cool 'mesh-based' SFU-CDN that allows peers to connect to an SFU closest to them and have their media broadcast to other SFUs internal to their network, which allows for easy scaling during broadcast-style use-cases. [0] https://livekit.io/ https://livekit.io/
- Sean-Der 3y agoWhat libraries have you used? There are a lot these days, maybe you haven't tried one yet that matches the way you think/code :) * https://github.com/aiortc/aiortc https://github.com/aiortc/aiortc (Python) * GStreamer’s webrtcbin (C) * https://github.com/shinyoshiaki/werift-webrtc https://github.com/shinyoshiaki/werift-webrtc (Typescript) * https://github.com/pion/webrtc https://github.com/pion/webrtc (Golang) * https://github.com/webrtc-rs/webrtc https://github.com/webrtc-rs/webrtc (Rust) * https://github.com/algesten/str0m https://github.com/algesten/str0m (Rust) * https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c https://github.com/awslabs/amazon-kinesis-video-streams-webr... (C/Embedded) * hhttps://github.com/sepfy/libpeer https://github.com/sepfy/libpeer (C/Embedded) * https://webrtc.googlesource.com/src/ https://webrtc.googlesource.com/src/ (C++) * https://github.com/sipsorcery-org/sipsorcery https://github.com/sipsorcery-org/sipsorcery (C#) * https://github.com/paullouisageneau/libdatachannel https://github.com/paullouisageneau/libdatachannel (C++) * https://github.com/elixir-webrtc https://github.com/elixir-webrtc (Elixir) See https://github.com/sipsorcery/webrtc-echoes https://github.com/sipsorcery/webrtc-echoes for examples of some running against each other.
- brrrrrm 3y agoWhoa thanks!
- SamPatt 3y agoI use PeerJS for a p2p browser based app that lets friends share a live AI session together. HaveWords.ai
- kabes 3y agoI can recommend mediasoup: https://mediasoup.org/ https://mediasoup.org/