Blog / Makaleler

RTMP sunucusu kurulumu ve yayın yapma

Bu yazı 2022 yılından. Anlatılan sürümler, fiyatlar ve adresler o günden bu yana değişmiş olabilir.

RTMP açılımıyla Real-Time Messaging Protocol yani Türkçe anlamıyla Gerçek Zamanlı Mesajlaşma Protokolü dediğimiz olayı birçok televizyon kanalının internet siteleri üzerinden yayın yapmak için kullandıkları, aynı zamanda Twitch, Kick tarzında platformların kullanıcıların yayın yapması için onlara sundukları altyapı olarak tanımlayabiliriz.

Bugün bu yazımızda kendi bilgisayarımızı ya da sunucumuzu RTMP sunucusuna nasıl çevirebiliriz onu anlatacağım. Bu sayede kendi altyapınızı kullanarak isterseniz internet sitenizden ya da telefon uygulamanızdan insanlara public şekilde yayınlar yapabilir, isterseniz sadece arkadaşlarınızın görebileceği yayınlar düzenleyebilirsiniz.

Güncelleme (Kasım 2026): Bu yazıyı 2022'de yazmıştım. O günden bu yana kullandığımız Node Media Server baştan yazıldı ve 4. sürüme geçti. Kurulum şekli, yönetim paneli ve yayın adresleri değişti, yazıyı yeni sürüme göre güncelledim. Yazıdaki iki ekran görüntüsü eski sürümden, yeni sürümde ekranlar biraz farklı görünüyor.

Anlatıma başlamadan önce bu yöntemi iyi amaçlar için kullanmanızı öneririm. Örnek vermek gerekirse Discord'da arkadaşlarınıza yayın açarken piksellerde kötüleşme olabiliyor. Kendi RTMP sunucunuz üzerinden kesintisiz ve yüksek kaliteli bir yayın sunabilirsiniz onlara. Kesinlikle bu olayı kaçak maç yayını yapma gibi şeylerde kullanmanızı tavsiye etmiyorum. Bu tür şeylerin ağır cezaları vardır, ayrıyeten etik bir davranış değildir.

Nasıl çalışıyor?

Kafanızda canlansın diye önce resmin tamamını anlatayım. Yayın üç parçadan oluşuyor:

  • Yayını gönderen: Bilgisayarınızdaki OBS ya da telefonunuzdaki bir yayın uygulaması. Görüntüyü RTMP ile sunucuya gönderiyor.
  • RTMP sunucusu: Bugün kuracağımız Node Media Server. Gelen yayını alıp izlemek isteyen herkese dağıtıyor.
  • İzleyenler: Web sitenizdeki oynatıcı ya da VLC gibi bir program. Yayını sunucudan çekip oynatıyor.

1. Kurulum

Kendi RTMP sunucumuzu kurmak için Node.js kullanacağız. Node Media Server'ın yeni sürümü Node.js 20 veya üzerini istiyor. Bilgisayarınızda Node.js yüklü mü, yüklüyse hangi sürüm, öğrenmek için terminale şunu yazın:

Terminal
node --version

Çıkan sürüm v20 ya da daha yüksekse bu adımı atlayabilirsiniz. Komut bulunamadı diyorsa ya da sürüm daha eskiyse aşağıdan kendinize uygun yolu kullanarak Node.js kurulumunu gerçekleştirebilirsiniz.

Windows

nodejs.org adresine girip LTS yazan sürümün kurulum dosyasını indirin, sihirbazda İleri diyerek kurun. Kurulumdan sonra açık olan terminalleri kapatıp yeniden açın.

Ubuntu / Debian

Terminal
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt install -y nodejs

Burada dikkat edin: Ubuntu'nun kendi deposundan apt install nodejs ile kurarsanız eski bir sürüm geliyor ve Node Media Server çalışmıyor. Bu yüzden Node.js'in kendi deposunu ekleyerek kuruyoruz.

Rocky Linux / AlmaLinux

Terminal
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -
sudo dnf install -y nodejs

Eski yazıda CentOS 7 ve CentOS 8 için de anlatım vardı. İkisinin de desteği bitti ve Node.js'in yeni sürümleri CentOS 7 üzerinde çalışmıyor, o yüzden çıkardım.

Artık Node.js yüklü olduğuna göre Node Media Server'ı kurabiliriz. Eski yazıda projeyi GitHub'dan indirip kuruyorduk, yeni sürümde npm üzerinden kurmak çok daha kolay. Önce sunucumuz için bir klasör oluşturup içine giriyoruz, ardından kurulumu yapıyoruz:

Terminal
mkdir rtmp-sunucu
cd rtmp-sunucu
npm install node-media-server

2. Çalıştırma

Servisi başlatmak için hazırız. Aynı klasördeyken terminale şunu yazıyoruz:

Terminal
npx node-media-server

node media server kurulumu

İlk çalıştırmada ekranda böyle bir kutu göreceksiniz:

Kod
============================================================
IMPORTANT: A new admin password has been generated.
Username: admin
Password: ****************
Save this password now. It will not be shown again.
============================================================

Buradaki şifre yönetim paneline giriş şifreniz ve sadece bir kere gösteriliyor. Hemen bir yere kaydedin. Eski sürümde kullanıcı adı ve şifre admin/admin idi, artık her kurulumda rastgele bir şifre üretiliyor.

Şu anda RTMP servisimiz başlamış durumda. Terminal penceresini kapatırsanız sunucu da kapanır, yayın yaptığınız sürece açık kalması gerekiyor.

3. Yayına başlamak

Canlı yayın yapmak için hazır konumdayız. İsterseniz bilgisayarınızda OBS programından, isterseniz cep telefonlarınızın uygulama mağazasında bulunan çeşitli RTMP yayın uygulamalarından canlı yayına başlayabilirsiniz. OBS'te Ayarlar > Yayın kısmına girip aşağıdaki gibi dolduruyoruz:

Yayın Tipi: Özel

Sunucu: rtmp://localhost/live

Yayın anahtarı: yayin_adi

Yayın anahtarı kısmına istediğiniz bir ismi yazabilirsiniz, ben bu yazıda yayin_adi kullanıyorum. Bu isim aşağıda izleme adreslerinde de geçecek, hepsinde aynı ismi kullanın. Ayarları kaydedip OBS'te Yayını Başlat butonuna basıyoruz.

Yayına girip girmediğinizi kontrol etmek için tarayıcınızdan http://localhost:8000/admin adresine girip yönetim paneline giriş yapmanız yeterli. Kullanıcı adı admin, şifre de ilk çalıştırmada kaydettiğiniz şifre.

node media server admin panel

Eğer yayına başarılı bir şekilde girdiyseniz panelde yayın adınızı göreceksiniz ve oradan yayınınızın nasıl göründüğünü izleyebilirsiniz.

Sunucu üzerine kurduysanız yazıdaki bütün adreslerde localhost yazan yere sunucunuzun IP adresini yazın, örneğin rtmp://192.168.1.50/live. Ayrıca sunucunun güvenlik duvarında iki portu açmanız gerekiyor: yayını göndermek için 1935, panel ve izleme için 8000. Ubuntu'da ufw kullanıyorsanız:

Terminal
sudo ufw allow 1935/tcp
sudo ufw allow 8000/tcp

Bir uyarı: Sunucunuz internete açıksa varsayılan ayarlarda adresinizi bilen herkes sunucunuza yayın gönderebiliyor. Bunu kapatmak için yayın göndermeye şifre (imzalı adres) koymanız gerekiyor. Ayarı node_modules/node-media-server/bin/config.json dosyasındaki auth kısmından yapılıyor, ayrıntısı projenin GitHub sayfasında anlatılıyor.

4. Dağıtım

Kurulumu yaptık, servisimizi başlattık ve yayına girdik. Şimdi son aşamaya geldik, insanlar bu yayınımızı nasıl izleyecekler? Yayını insanlara web sitemiz üzerinden izletmeyi planlıyorsak HTTP-FLV formatında sunacağız. VLC gibi video oynatıcı programlar da Medya > Ağ Akışını Aç kısmından bu adresi açabiliyor.

HTTP-FLV yayın linki

Kod
http://localhost:8000/live/yayin_adi.flv

Web sitesi için oynatıcı örneği

Eski yazıda flv.js kullanıyordum. flv.js artık geliştirilmiyor, yerine aynı geliştiricinin devam ettiği mpegts.js'i kullanıyoruz. Dosyaları hostunuza çekmenize gerek yok, gerekli JavaScript dosyasını CDN üzerinden çekeceğiz. Sadece kod içerisindeki yayın linkini kendinize göre düzenlemeniz yeterli.

HTML
<script src="https://cdn.jsdelivr.net/npm/mpegts.js@1.8.2/dist/mpegts.js"></script>
<video id="videoElement" controls muted style="width: 100%;"></video>
<script>
    if (mpegts.getFeatureList().mseLivePlayback) {
        var videoElement = document.getElementById('videoElement');
        var player = mpegts.createPlayer({
            type: 'flv',
            isLive: true,
            url: 'http://localhost:8000/live/yayin_adi.flv'
        });
        player.attachMediaElement(videoElement);
        player.load();
        player.play();
    }
</script>

Video etiketine muted ekledim çünkü tarayıcılar sesi açık videoların kendiliğinden başlamasına izin vermiyor. İzleyen kişi oynatıcıdan sesi açabilir.

Eğer siteniz https:// ile açılıyorsa tarayıcı http:// ile gelen yayını güvensiz bulup engelliyor. Bu durumda yayını da HTTPS üzerinden vermeniz gerekiyor. Node Media Server bunun için 8443 portunu kullanıyor fakat oraya domaininize ait gerçek bir SSL sertifikası tanımlamanız lazım.

Diğer yayın linkleri

Yayını başka yerlerde dağıtmak istiyorsanız kullanabileceğiniz diğer adresler:

Kod
rtmp://localhost/live/yayin_adi
ws://localhost:8000/live/yayin_adi.flv

İlki RTMP destekleyen programlar için (VLC de açabiliyor), ikincisi WebSocket üzerinden FLV. Eski yazıda HLS ve DASH adresleri de vardı, Node Media Server'ın yeni sürümünde bu iki format çıkarıldı.

Yazımızın sonuna geldik. Umarım faydalı bir yazı olmuştur, RTMP sunucusu kurmak isteyenlerin işini göreceğini umut ediyorum. Sunucunun ve yayınların istatistiklerini yönetim panelinden görebilirsiniz. Sunucunun çalışıp çalışmadığını hızlıca kontrol etmek isterseniz şu adres şifre istemeden cevap veriyor:

Kod
http://localhost:8000/api/v1/health
Bu yazıyı paylaşXFacebook