Another library that I would recommend people look into for live streaming to WebRTC, as an alternative to Pion used in this project, is Janus WebRTC Server. I use it for ingesting RTP streams I generate from usb webcams and then playing it with very low latency in the browser. It even has a feature where you can stream multiple streams simultaneously. It also has a simple http api for adding, updating, and removing streams on demand.<p>Here is the library's streaming demo:<p><a href="https://janus.conf.meetecho.com/demos/streaming.html" rel="nofollow">https://janus.conf.meetecho.com/demos/streaming.html</a>
My issue with this (and WebRTC in general) is that most residential users (at least in the US, probably many other countries) are behind some type of symmetrical NAT or CGNAT, often without the ability to forward ports or have working NAT traversal, which makes WebRTC unusable without a TURN server as it relies on communicating between peers via DTLS over UDP.<p>The problem with needing a TURN server is that you practically need to host it yourself, because there are no fast and reliable public ones, probably due to abuse. WebTorrent also has the same problem since it also uses WebRTC, and as such, 99% of applications that use either technology simply do not work at all for me or anyone else I've asked to try these services.
RTSPtoWeb (<a href="https://github.com/deepch/RTSPtoWeb">https://github.com/deepch/RTSPtoWeb</a>) is a similar application for re-encapsulating video packets from RTSP to WebRTC, also written in Go.
This is a great project. I really want to add a little JS lib so it could be all done client side<p><donut server=‘’ src=‘rtmp://….’ /><p>src could be any protocol you want.