We had to do livestreaming for our client's project. For several reasons, we had to use the RTMP protocol. In this article, I plan to share my experiences with RTMP servers.

Livestreaming technology, as you know, is extremely costly. Therefore, considering our client's budget constraints and expectations (traffic, peak load), we anticipated that turning to open-source solutions would not cause any problems. During this process, we had the opportunity to test a few. They are as follows:

Nginix RTMP

Nginix RTMP is a module installed on Nginix. Thanks to this module, we can do RTMP broadcasting over Nginix. To set up an RTMP server, we need to compile Nginix with this module. We quickly set up the installation and test environment. Since it's a module, it doesn't offer many features, it only offers a screen for statistical data.

It performs its function very successfully. The limits are clear and if this is sufficient for you, I recommend this module. Resource consumption is much lower compared to others, and it performs very well against load. Also, the configuration is simple and understandable.

SRS

SRS is a highly advanced RTMP server. Unlike Nginix RTMP, it offers many features. For example, it supports many protocols such as WebRTC, HLS, HTTP-FLV. During our tests, while v4 was in a stable version, v5 was not as stable with many additional features. You can make a quick setup with Docker. However, the interface it offers is somewhat complex and sometimes it can be in Chinese.

We experienced a handshake problem between the mobile library we used and SRS. We had to struggle a bit for the solution because the solution was in Chinese. We couldn't solve this problem with v4, so we switched to v5. However, we had another stability problem with v5. The application was crashing randomly from time to time. For this reason, we did not use SRS. Of course, this is a problem resulting from our usage scenario and our mobile libraries. It could be a very good option for your situation.

Node Media Server

Node Media Server is an RTMP server written in Node.js. In terms of features, the ranking could be as follows: SRS > Node Media Server > Nginix RTMP. The setup is simple and fast. Moreover, because it is written with Node.js, you can easily customize it. It consumes the most resources. Node Media Server offers the cleanest and simplest interface.

While we didn't have any problems with the support of the library on the mobile side in the first versions, we started to have problems later. The lack of an active maintenance process of the library was a negative situation for us.

Conclusion

In general, if we evaluate;

  • Setup: Ease of setup
  • Interface: Ease of use of the interface provided
  • Resource Consumption: Resource consumption
  • Feature: Features provided
  • Maintenance: Active maintenance process
SetupInterfaceResource Cons.FeatureMaintenance
Nginx RTMP33132
SRS22211
NodeMediaServer11323

1 good, 2 average, 3 bad

Our choice was Nginix RTMP. You can also make a choice according to your usage scenario. I hope this information has been helpful for you.