Why fork Node Media Server? What did I change? It didn't seem as flexible, maybe because I'm not a c/c++ developer. I also looked at ossrs/srs, which seems to be based on nginx-rtmp-module. Also, this project is no longer maintained and is pretty old. But I couldn't get the social relay working the way I wanted. I first tried nginx-rtmp-module, because nginx is great. It is actively maintained, it has a lot of github stars, and I like node.js. FFMPEG is also used to relay to social media destinations. FFMPEG is then used to transcode the RTMP input into HLS. Node Media Server accepts RTMP on port 1935. Transcoding RTMP into ABR HLS is very CPU intensive.įor the RTMP Server I decided to use a fork of Node Media Server. The largest bitrate from the ABR.liveĪll 3 services scale independently to meet demand. We could have many Servers to meet demand. The Redis cache stores the stream key to Server mapping so the Origin knows which Server to fetch the HLS from. I will cover the Proxy and the Origin in posts 2 and 3 in this blog post series.Īll 3 services are running as Docker containers on AWS Fargate. The final architecture is actually 3 services: Proxy -> Server <- Origin Here is a screenshot of my stream playing in the browser, facebook, twitch, and youtube. I also wanted the live stream recorded and I wanted the user to be able to relay their live stream to other destinations like Twitch, Facebook, and YouTube. Much like how Twitch, Facebook, and YouTube do it.
![open source rtmp server open source rtmp server](https://engineering.linecorp.com/wp-content/uploads/2018/1/15/1515995206953.png)
I wanted users to be able to stream anytime using their private stream key. I decided to build a live streaming server that accepts RTMP input and outputs Adaptive Bitrate (ABR) HLS.