ali furkan yılmaz kişisel web bloguAli Furkan YILMAZ hello@alifurkan.org

HAKKIMDA

  • Ali Furkan
  • Ali Furkan
  • Grafik/Yazılım

RTMP sunucusu kurulumu ve yayın yapma

2 yıl önce#makaleler

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, Dlive 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.

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.

1.Kurulum

Kendi RTMP sunucumuzu kurmak için Nodejs kullanacağız. Bilgisayarınızda ya da sunucunuzda Nodejs 12 veya üzerinde bir sürümün yüklü olduğundan emin olun. Eğer Nodejs yüklü değilse aşağıdan kendinize uygun yolu kullanarak Nodejs kurulumunu gerçekleştirebilirsiniz.

Windows

Otomatik yükleme sihirbazı ile kolayca kurulum yapmak için setup dosyasını buraya tıklayarak indirebilirsiniz.

Linux Centos 7

curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install nodejs

Linux Centos 8

sudo dnf module enable nodejs:12
sudo dnf install nodejs

Ubuntu 18.04 ve Üzeri

sudo apt update
sudo apt install nodejs
sudo apt install npm

Artık RTMP kullanacağımız cihazda NodeJS yüklü olduğuna göre şimdi npm komutuyla gerekli olan modülümüzü yükleyebiliriz. Fakat bunun yerine yükleyeceğimiz Node Media Server'ı github üzerinden hazır çekeceğiz. Bu sayede hem kurulumu daha çok kolay olacak hem de bizlere basit bir yönetim paneli sunacak. Modülümüzü buradaki bağlantıya giderek github üzerinden cihazımıza indirelim.

Modülümüzü cihazımıza çektiğimize göre bilgisayar ya da sunucunuzda hangi terminal üzerinden işlem yapıyorsanız terminalimizi açalım. CD komutuyla indirdiğimiz klasörün içerisine giriyoruz. Gerekli olan son birkaç şeyi yüklemesi için terminal üzerinden npm install komutunu çalıştırıyoruz. 

2.Çalıştırma

Servisi başlatmak için hazırız. Sunucumuza indirdiğimiz Node Media Server'a start vermek için terminalimize npm start yazıyoruz. Bizi aşağıdaki şekilde bir ekran karşılayacak.

undefined

Şu anda RTMP servisimiz başlamış durumda. Canlı yayın yapmak için hazır konumdayız. İsterseniz bilgisayarınız üzerinde OBS programından isterseniz cep telefonlarınızın uygulama mağazası üzerinde bulunan çeşitli RTMP yayın uygulamaları üzerinden canlı yayına başlayabilirsiniz. Kullandığınız programlara yayın anahtarını nasıl girmeniz gerektiğini aşağıya bırakıyorum.

Yayın Tipi: Özel Yayın Sunucusu

Yayın URL: rtmp://localhost/live

Yayın anahtarı: yayin_adi

OBS ya da kullanacağınız yazılıma yayın ayarlarını bu şekilde ayarladığınızda sorunsuz şekilde yayına girebilirsiniz. Yayına girip girmediğinizi kontrol etmek için localhost:8000/admin adresinden yönetim paneline giriş yapmamız yeterli. Eğer sunucu üzerine kurduysanız hem Yayın URL hem de yönetim paneline erişim kısmındaki localhost değerini sunucunuzun ip adresi ile değiştirin. Yönetim paneli kullanıcı adı ve şifresi admin'dir. Doğru şekilde giriş yaptığınızda aşağıdaki şekilde bir ekran karşılayacak sizi. 

undefined

Eğer yayına başarılı bir şekilde giriş yaptıysanız yukarıdaki görselde yer alan Streams sekmesine girdiğinizde yayın adınızı göreceksiniz. Yayın adınızın üzerine bastığınızda yayınınızın nasıl göründüğünü izleyebilirsiniz.

3.Dağıtım

Kurulumu sorunsuz yaptık, servisimizi sorunsuz başlattık ve yayına sorunsuz 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. Ayrıca VLC gibi video oynatıcı programları uzaktan ortam oynatma özelliklerinde HTTP-FLV formatını da desteklemektedir.

HTTP-FLV Yayın Linki

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

HTTP-FLV Player Örneği

Sitemizde sorunsuz şekilde yayını dağıtmak için FLV.js kullanacağız. Dosyaları hostunuza çekmenize gerek yok, gerekli JavaScript dosyalarını CDN yardımıyla uzaktan çekeceğiz. Sadece kod içerisinde yer alan yayın linki kısmını düzenlemeniz yeterli.

<script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script>
<video id="videoElement"></video>
<script>
    if (flvjs.isSupported()) {
        var videoElement = document.getElementById('videoElement');
        var flvPlayer = flvjs.createPlayer({
            type: 'flv',
            url: 'http://localhost:8000/live/yayin_linki.flv'
        });
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
    }
</script>

Yukarıdaki kodu sitenizde uygun bir yere ekleyerek sitenize giren kişilerin yayını sorunsuz şekilde izlemesini sağlayabilirsiniz. Yayını cep telefonu uygulaması vesaire gibi başka platformlarda dağıtmak istiyorsanız onun için de farklı yayın linki formatlarını aşağıya ekliyorum.

RTMP

rtmp://localhost/live/yayin_linki

Websocket-FLV

ws://localhost:8000/live/STREAM_NAME.flv

HLS

http://localhost:8000/live/STREAM_NAME/index.m3u8

DASH

http://localhost:8000/live/STREAM_NAME/index.mpd

Yazımızın sonuna geldik. Umarım faydalı bir yazı olmuştur, RTMP sunucusu kurmak isteyenlerin işini göreceğini umut ediyorum. Terminal görseli kafanızı karıştırmasın ben kurulumu Windows 11 sürümü üzerinde gerçekleştirdim. Yazıyı bitirmeden son olarak sunucu ve yayın istatistiklerine ulaşmanız için gerekli linkleri aşağıya bırakıyorum.

Sunucu istatistik bilgileri için http://localhost:8000/api/server

Yayın istatistik bilgileri için http://localhost:8000/api/streams

internete dair her şey