Open Source RTSP/RTMP/HLS/Dash Streaming Solutions

Hello all!

I’ve been having a hard time finding a good, feature-complete, well-maintained open source solution for live streaming. Here is what I have run into so far:

  • Red5: Java-based server that I was able to get RTMP to work on. Quite difficult to configure and not well documented. Company seems to be focusing on the non-open-source pro version.
  • Nginx RTMP Module abandoned presumably since (apparently, I cannot confirm this) the author has been hired by Nginx to work on the closed-source module. There are quite a few forks, but I can’t find any particular super-popular, well-maintained fork.
  • Lots of stuff written in NodeJS: I like Node, and I use Node quite a bit. But live streaming is not something I would want to use Node for. It is a high-bandwidth and high-performance application.
  • Lots of stuff written in Go: For whatever reason, there are tons of repos with RTMP servers in Go. Many of the READMEs are in Chinese. I only haven’t tried these because I can’t read the README or because I wuld rather try something else first. I don’t have much experience with Go, but I’d be willing to give it a try.
  • MistServer: This seems perfect until you see that RTSP (in and out), DASH, “Encryption” (which I think is RTMPS?), and Access Control are pro-only features.
  • Ant Media Server: Fork of Red5. Community edition has a minimum 8 second delay…I can do better with VLC!
  • Streamline: This is really cool but it only supports capture-card input and nothing else. Also only supports HLS and seems like it was built for a very particular use-case/setup.
  • MonaServer: Seems abandoned.

I have two use-cases I am trying to solve:

  • Self-hosted live stream: Someone sends in a stream via RTMPS and the server sends it out via RTSP/HLS/MPEG-DASH. This is the difficult applications; it needs to support multiple protocols and be very solid with many clients.
  • Home cameras: I have a 4K IP camera that I currently have feeding into ZoneMinder. But 4K MJPEG in the browser just does not work well. The camera has RTSP and RTMP but is on a separate VLAN, so I need to proxy the stream over. Red5 is probably fine here. I will probably need an FFMPEG instance running in the background to bridge the two no matter what I think.

What are other people using? Do you have any other recommendations? Should I just go with the old Nginx module?