Müşterimizin projesinde canlı yayın (livestreaming) yapmamız gerekiyordu. Bir takım sebeplerden ötürü RTMP protokolünün kullanılması zorunlu hale gelmişti. Bu yazımda RTMP sunucuları hakkındaki deneyimlerimi paylaşmayı planlıyorum.

Canlı yayın teknolojisi, bilindiği üzere, oldukça yüksek maliyetli bir teknoloji. Bu yüzden, müşterimizin bütçe kısıtlamaları ve beklentileri (trafik, anlık yük) doğrultusunda, açık kaynaklı çözümlere yönelmemiz herhangi bir problem yaratmayacağını öngördük. Bu süreçte birkaçını test etme fırsatımız oldu. Bunlar şunlardır:

Nginx RTMP

Nginx RTMP, Nginx üzerine kurulmuş bir modül. Bu modül sayesinde Nginx üzerinden RTMP yayını yapabiliyoruz. Bir RTMP sunucusu kurmak için Nginx'i bu modülle derlememiz gerekiyor. Kurulum ve test ortamını hızla kurduk. Modül olduğu için çok fazla özellik sunmuyor, sadece istatistik verileri için bir ekran sunuyor.

İşlevini oldukça başarılı bir şekilde yerine getiriyor. Sınırları net ve bu sizin için yeterliyse, bu modülü tavsiye ederim. Kaynak tüketimi diğerlerine göre çok daha düşük ve yük karşısındaki performansı oldukça iyi. Ayrıca konfigürasyonu basit ve anlaşılır.

SRS

SRS, oldukça gelişmiş bir RTMP sunucusu. Nginx RTMP'den farklı olarak birçok özellik sunuyor. Örneğin; WebRTC, HLS, HTTP-FLV gibi birçok protokolü destekliyor. Testlerimiz sırasında v4 stabil versiyondayken, v5 birçok ek özellikle birlikte daha stabil olmamıştı. Docker ile hızlı bir kurulum yapabilirsiniz. Ancak, sunduğu arayüz biraz karışık ve bazen Çince olabiliyor.

Kullandığımız mobil kütüphane ile SRS arasında el sıkışma (handshake) problemi yaşadık. Çözümü için biraz uğraşmak gerekti çünkü çözüm Çinceydi. Bu problemi v4 ile çözemediğimiz için v5'e geçtik. Ancak, v5 ile başka bir stabilite problemi yaşadık. Uygulama ara sıra rastgele çöküyordu. Bu sebepten dolayı SRS'yi kullanmadık. Elbette, bu bizim kullanım senaryomuzda ve mobil kütüphanelerimizden kaynaklı bir problem. Sizin durumunuzda oldukça iyi bir seçenek olabilir.

Node Media Server

Node Media Server, Node.js ile yazılmış bir RTMP sunucusu. Özellikler açısından sıralama şöyle olabilir: SRS > Node Media Server > Nginx RTMP. Kurulumu basit ve hızlıdır. Ayrıca, Node.js ile yazıldığı için kolayca özelleştirebilirsiniz. Kaynak tüketimi en yüksek olanıdır. En temiz ve basit arayüzü Node Media Server sunuyor.

Mobil taraftaki kütüphane desteği konusunda ilk versiyonlarda problem yaşamazken, daha sonra problemler yaşamaya başladık. Kütüphanenin aktif bir bakım sürecinin olmaması bizim açımızdan olumsuz bir durumdu.

Sonuç

Genel olarak değerlendirecek olursak;

  • Kurulum: Kurulum kolaylığı
  • Arayüz: Sunulan arayüzün kullanım kolaylığı
  • Kaynak Tüketimi: Kaynak tüketimi
  • Özellik: Sunulan özellikler
  • Bakım: Aktif bakım süreci
KurulumArayüzKaynak TüketimiÖzellikBakım
Nginx RTMP33132
SRS22211
Node Media Server11323

1 iyi, 2 orta, 3 kötü

Bizim tercihimiz Nginx RTMP oldu. Siz de kullanım senaryonuza göre tercih yapabilirsiniz. Umarım bu bilgiler sizin için faydalı olmuştur.