Takip et

RTMP Nedir ve Ücretsiz Bir RTMP Sunucusu Nasıl Kurulur? (7 Adımda)

Ücretsiz bir RTMP sunucusu kurmak için genellikle bir sunucuya ihtiyacınız olacaktır. Bu, bir Sanal Özel Sunucu (VPS), özel bir sunucu (dedicated serv…

RTMP Nedir ve Ücretsiz Bir RTMP Sunucusu Nasıl Kurulur? (7 Adımda)

Canlı yayıncılık dünyası hızla gelişirken, arkasındaki teknolojileri anlamak hem yayıncılar hem de teknoloji meraklıları için kritik öneme sahiptir. Bu teknolojilerden biri de Real-Time Messaging Protocol (RTMP), yani Gerçek Zamanlı Mesajlaşma Protokolü’dür. Yıllardır canlı yayın akışının bel kemiğini oluşturan RTMP, günümüzde hala yayın akışının sunucuya ulaştırılmasında yaygın olarak kullanılmaktadır. Bu makalede, RTMP’nin ne olduğunu, nasıl çalıştığını ve kendi ücretsiz RTMP sunucunuzu adım adım nasıl kurabileceğinizi detaylı bir şekilde inceleyeceğiz.

RTMP Nedir?

RTMP (Real-Time Messaging Protocol), ilk olarak Macromedia (daha sonra Adobe tarafından satın alındı) tarafından geliştirilen ve internet üzerinden ses, video ve veri akışını gerçek zamanlı olarak iletmek için tasarlanmış bir protokoldür. Özellikle Flash Player tabanlı medya oynatıcılarla popüler hale gelmiş olsa da, günümüzde Flash’ın kullanımının azalmasına rağmen, RTMP hala yayıncıların OBS Studio gibi yazılımlar aracılığıyla canlı yayınlarını sunuculara göndermek için tercih ettiği birincil protokol olmaya devam etmektedir.

Tarihçesi ve Gelişimi

RTMP, 2000’li yılların başında Macromedia tarafından Flash Player ile entegre çalışacak şekilde tasarlanmıştır. Amacı, internet üzerinden yüksek kaliteli, düşük gecikmeli medya akışını mümkün kılmaktı. Adobe’nin Macromedia’yı satın almasıyla birlikte RTMP, Adobe Flash Platformu’nun temel bir bileşeni haline geldi. Yıllar içinde RTMP, çeşitli varyantlara (RTMPT, RTMPS, RTMPTE) evrildi ve farklı ağ koşullarına uyum sağlayacak şekilde geliştirildi. Ancak, Flash Player’ın güvenlik açıkları ve mobil cihazlarda desteklenmemesi nedeniyle popülaritesi azaldı ve yerini HTTP tabanlı akış protokollerine (HLS, MPEG-DASH) bırakmaya başladı. Buna rağmen, RTMP, yayıncıdan sunucuya akış gönderme (ingest) aşamasında hala endüstri standardı olarak kabul edilmektedir.

RTMP’nin Temel Özellikleri

RTMP’nin canlı yayıncılıkta bu kadar uzun süre ayakta kalmasını sağlayan bazı temel özellikleri vardır:

  • TCP Tabanlı: RTMP, güvenilir veri iletimi için TCP (Transmission Control Protocol) kullanır. Bu, paket kaybı durumunda verinin yeniden gönderilmesini sağlayarak akışın bütünlüğünü korur.
  • Düşük Gecikme Süresi: RTMP, gerçek zamanlı iletişim için optimize edilmiştir ve genellikle 1-5 saniye gibi düşük gecikme süreleri sunar. Bu, özellikle interaktif canlı yayınlar için önemlidir.
  • Çoklu Kanal Desteği: RTMP, tek bir bağlantı üzerinden birden fazla ses, video ve veri akışını eş zamanlı olarak iletebilir.
  • Akış Kontrolü: Yayıncı ve sunucu arasında el sıkışma (handshake) mekanizması ile akış parametreleri (bit hızı, kare hızı vb.) üzerinde kontrol sağlar.
  • Adaptif Bit Hızı (Adaptive Bitrate – ABR) Desteği: RTMP, farklı ağ koşullarına uyum sağlamak için bit hızını dinamik olarak ayarlayabilir, ancak bu özellik genellikle sunucu tarafında HLS/DASH’e dönüştürme ile daha etkili kullanılır.

RTMP Nasıl Çalışır?

RTMP, genellikle bir “yayıncı” (encoder yazılımı, örn. OBS Studio), bir “RTMP sunucusu” ve bir “izleyici” (oynatıcı) olmak üzere üç ana bileşen arasında çalışır.

  1. El Sıkışma (Handshake): Yayıncı, RTMP sunucusuna bir bağlantı isteği gönderir. Sunucu ve yayıncı, bağlantı parametrelerini ve güvenlik ayarlarını müzakere etmek için bir el sıkışma süreci gerçekleştirir.
  2. Bağlantı Kurulumu: El sıkışma başarılı olduktan sonra, yayıncı sunucuya bir “connect” komutu gönderir. Bu komut, uygulamanın adını (örneğin, “live”) ve yayın anahtarını (stream key) içerir.
  3. Akış Yayımlama (Publishing): Yayıncı, kodlanmış ses ve video verilerini RTMP sunucusuna göndermeye başlar. Bu veriler, küçük “chunk”lara (parçalara) bölünerek TCP üzerinden iletilir.
  4. Akış İşleme ve Dağıtım: RTMP sunucusu, gelen akışı alır ve genellikle onu daha geniş kitlelere ulaştırmak için farklı formatlara (HLS, DASH gibi) dönüştürür veya bir İçerik Dağıtım Ağı’na (CDN) iletir.
  5. Akış İzleme (Playback): İzleyiciler, sunucudan veya CDN’den gelen akışı uyumlu bir oynatıcı (eski Flash oynatıcılar, VLC veya modern tarayıcılarda HLS/DASH ile) aracılığıyla izler.

Neden Hala RTMP Kullanılıyor?

Flash Player’ın sonunun gelmesiyle birlikte RTMP’nin de tamamen ortadan kalkacağı düşünülse de, bu protokol hala canlı yayın ekosisteminde önemli bir rol oynamaktadır. Özellikle “ingest” (yayıncının içeriği sunucuya göndermesi) tarafında RTMP, sektör standardı olmaya devam ediyor.

Düşük Gecikme Süresi

RTMP’nin en büyük avantajlarından biri, sunduğu düşük gecikme süresidir. Diğer HTTP tabanlı akış protokolleri (HLS, DASH) genellikle daha yüksek gecikmelere sahiptir çünkü akışı daha küçük parçalara böler ve bu parçaların arabelleğe alınması zaman alır. RTMP ise doğrudan TCP bağlantısı üzerinden akışı ilettiği için daha hızlı bir deneyim sunar. Bu, özellikle etkileşimli yayınlar, oyun yayınları veya gerçek zamanlı iletişim gerektiren senaryolar için kritik öneme sahiptir.

Geniş Cihaz Desteği

Yayıncı tarafında, OBS Studio, Wirecast, vMix gibi popüler canlı yayın yazılımlarının ve donanım kodlayıcılarının neredeyse tamamı RTMP çıkışını destekler. Bu, yayıncıların herhangi bir ek yapılandırmaya ihtiyaç duymadan mevcut ekipmanlarıyla kolayca RTMP sunucularına bağlanabilmesini sağlar. Bu geniş ekosistem, RTMP’nin yayıncılar arasında tercih edilmesinin ana nedenlerinden biridir.

Stabilite ve Güvenilirlik

RTMP, yıllardır test edilmiş ve kanıtlanmış bir teknolojidir. TCP tabanlı yapısı sayesinde, ağdaki geçici dalgalanmalara veya paket kayıplarına karşı daha dirençlidir. Bu, yayın akışının daha stabil ve kesintisiz olmasını sağlar. Güvenilirliği, profesyonel yayıncılar ve büyük platformlar için önemli bir faktördür.

Ücretsiz RTMP Sunucusu Kurulumu İçin Ön Hazırlıklar

Kendi ücretsiz RTMP sunucunuzu kurmak için bazı temel gereksinimleri karşılamanız ve ön hazırlıkları yapmanız gerekmektedir. Bu bölümde, gerekli yazılımları, donanımı ve işletim sistemi seçimini ele alacağız.

Gerekli Yazılımlar ve Donanım

Ücretsiz bir RTMP sunucusu kurmak için genellikle bir sunucuya ihtiyacınız olacaktır. Bu, bir Sanal Özel Sunucu (VPS), özel bir sunucu (dedicated server) veya hatta güçlü bir ev bilgisayarı olabilir. Temel gereksinimler şunlardır:

  • Sunucu: En az 1 GB RAM ve 1 çekirdekli bir işlemciye sahip bir VPS çoğu küçük ve orta ölçekli yayın için yeterli olacaktır. Daha fazla yayıncı veya izleyici bekliyorsanız, daha güçlü bir sunucuya ihtiyacınız olacaktır.
  • İşletim Sistemi: Linux tabanlı bir işletim sistemi (Ubuntu, Debian gibi) önerilir. Bu sistemler kararlılık, güvenlik ve Nginx gibi yazılımlarla uyumluluk açısından avantajlıdır.
  • İnternet Bağlantısı: Sunucunuzun yeterli bant genişliğine sahip olması kritik öneme sahiptir. Gelen (ingest) ve giden (egress) akışlar için yüksek hızlı ve stabil bir internet bağlantısı gereklidir.
  • SSH Erişimi: Sunucuya komut satırı üzerinden bağlanmak için bir SSH istemcisi (örneğin PuTTY Windows için, veya Linux/macOS terminali) gereklidir.

İşletim Sistemi Seçimi (Ubuntu/Debian Önerilir)

Linux dağıtımları arasında Ubuntu Server veya Debian, RTMP sunucusu kurulumu için en popüler ve iyi belgelenmiş seçeneklerdir. Bu makalede, Ubuntu’yu temel alarak kurulum adımlarını anlatacağız, ancak komutlar Debian için de büyük ölçüde benzerdir. Ubuntu’nun LTS (Uzun Süreli Destek) sürümleri (örneğin Ubuntu 20.04 LTS veya 22.04 LTS) kararlılık ve uzun süreli güvenlik güncellemeleri nedeniyle tercih edilmelidir.

Ağ ve Güvenlik Ayarları

Sunucunuzu kurmadan önce veya kurduktan hemen sonra ağ ve güvenlik ayarlarını yapılandırmanız önemlidir:

  1. Güvenlik Duvarı (Firewall): Sunucunuzun güvenlik duvarında (örneğin UFW – Uncomplicated Firewall) RTMP için varsayılan port olan 1935/tcp portunu açmanız gerekecektir. Ayrıca, SSH erişimi için 22/tcp portunun da açık olduğundan emin olun.
  2. DNS Kaydı: Eğer sunucunuza bir alan adı (domain) üzerinden erişmek istiyorsanız, alan adınızın A kaydını sunucunuzun IP adresine yönlendirmeniz gerekecektir. Aksi takdirde, doğrudan IP adresi üzerinden erişim sağlayabilirsiniz.
  3. Güvenlik Güncellemeleri: Kuruluma başlamadan önce işletim sisteminizin güncel olduğundan emin olun. Bu, potansiyel güvenlik açıklarını kapatmaya yardımcı olur.

Nginx-RTMP Modülü ile Ücretsiz RTMP Sunucusu Kurulumu (7 Adım)

Bu bölümde, Nginx web sunucusunu Nginx-RTMP modülü ile derleyerek kendi ücretsiz RTMP sunucunuzu nasıl kuracağınızı adım adım anlatacağız. Bu yöntem, esnekliği ve performansı nedeniyle oldukça popülerdir.

Adım 1: Sunucu Güncelleme ve Bağımlılıkları Yükleme

İlk olarak, sunucunuzu güncelleyelim ve Nginx’i derlemek için gerekli olan temel bağımlılıkları kuralım. SSH üzerinden sunucunuza bağlanın ve aşağıdaki komutları çalıştırın:

sudo apt update
sudo apt upgrade -y
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y

  • build-essential: Derleme araçlarını içerir (gcc, make vb.).
  • libpcre3, libpcre3-dev: Nginx'in düzenli ifade (regex) desteği için gereklidir.
  • zlib1g, zlib1g-dev: Nginx'in sıkıştırma (gzip) modülü için gereklidir.
  • libssl-dev: HTTPS ve RTMPS (güvenli RTMP) desteği için gereklidir.

Adım 2: Nginx Kaynak Kodunu İndirme

Şimdi, Nginx'in en son kararlı sürümünün kaynak kodunu indireceğiz. Nginx'in resmi web sitesinden en güncel sürümün URL'sini kontrol edebilirsiniz (bu örnekte güncel bir sürüm kullanılmıştır):

cd /usr/local/src
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz # Veya en güncel sürüm
sudo tar -zxvf nginx-1.24.0.tar.gz
sudo rm nginx-1.24.0.tar.gz
cd nginx-1.24.0


Bu komutlar, /usr/local/src dizinine gider, Nginx kaynak kodunu indirir, arşivden çıkarır ve çıkarılan dizine girer.

Adım 3: Nginx-RTMP Modülünü İndirme

Nginx, RTMP desteğini doğrudan içermez. Bu nedenle, harici bir modül olan nginx-rtmp-module'ü indirmemiz gerekiyor. Bu modül, Nginx'e RTMP sunucusu işlevselliği ekleyecektir.

cd /usr/local/src
sudo git clone https://github.com/arut/nginx-rtmp-module.git


Eğer git kurulu değilse, sudo apt install git -y komutuyla kurmanız gerekebilir.

Adım 4: Nginx ve RTMP Modülünü Derleme

Şimdi, Nginx kaynak kodu dizinine geri dönerek Nginx'i indirdiğimiz RTMP modülü ile birlikte derleyeceğiz.

cd /usr/local/src/nginx-1.24.0 # Nginx kaynak kodunun olduğu dizin
sudo ./configure --with-http_ssl_module --add-module=/usr/local/src/nginx-rtmp-module
sudo make
sudo make install

  • ./configure: Nginx'i derleme seçenekleriyle yapılandırır.
  • --with-http_ssl_module: HTTPS desteği için SSL modülünü etkinleştirir.
  • --add-module=/usr/local/src/nginx-rtmp-module: İndirdiğimiz RTMP modülünü Nginx'e ekler.
  • make: Nginx'i derler.
  • make install: Derlenmiş Nginx dosyalarını /usr/local/nginx dizinine kurar.

Adım 5: Nginx Konfigürasyon Dosyasını Düzenleme

Nginx kurulduktan sonra, RTMP sunucusunu etkinleştirmek için konfigürasyon dosyasını düzenlememiz gerekiyor. Konfigürasyon dosyası genellikle /usr/local/nginx/conf/nginx.conf adresinde bulunur.

sudo nano /usr/local/nginx/conf/nginx.conf


Dosyanın en sonuna, http { ... } bloğunun dışına, aşağıdaki rtmp { ... } bloğunu ekleyin:


# ... (Mevcut http bloğu ve diğer ayarlar) ...

rtmp {
    server {
        listen 1935; # RTMP için varsayılan port
        chunk_size 4096; # Akışın parçalanma boyutu

        application live {
            live on; # Canlı yayınları etkinleştir
            record off; # Yayınları kaydetme (isteğe bağlı, "all" veya "off")

            # Yayın anahtarını kontrol etmek için on_publish ve on_play kullanabilirsiniz.
            # Örneğin, bir kimlik doğrulama sunucusuna yönlendirmek için:
            # on_publish http://localhost:8080/auth;

            # Akışı başka bir sunucuya veya CDN'ye aktarmak için:
            # push rtmp://a.rtmp.youtube.com/live2/YOUR_YOUTUBE_STREAM_KEY;
        }

        # İsteğe bağlı: HLS (HTTP Live Streaming) desteği eklemek için
        # Bu, akışın web tarayıcılarda izlenmesini sağlar.
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls; # HLS parçalarının depolanacağı dizin
            hls_fragment 3s; # HLS parçalarının süresi
            hls_playlist_length 60s; # Oynatma listesinin toplam süresi
            # Bu HLS akışını izlemek için: http://YOUR_SERVER_IP/hls/live.m3u8
        }
    }
}


Değişiklikleri kaydedin (Ctrl+O, Enter) ve nano'dan çıkın (Ctrl+X).

Adım 6: Nginx'i Başlatma ve Otomatik Başlatmayı Ayarlama

Şimdi Nginx'i başlatalım ve her sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlayalım.
Nginx'i başlatmak için:

sudo /usr/local/nginx/sbin/nginx


Nginx'in doğru çalıştığını kontrol etmek için:

ps aux | grep nginx


Çıktıda nginx süreçlerini görmelisiniz.

Nginx'in sunucu açılışında otomatik olarak başlaması için bir systemd servisi oluşturalım:

sudo nano /etc/systemd/system/nginx.service


İçine aşağıdaki içeriği yapıştırın:


[Unit]
Description=The Nginx HTTP and RTMP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target


Kaydedin ve çıkın. Ardından systemd'yi yeniden yükleyin ve Nginx servisini etkinleştirin:

sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx


Nginx'in durumunu kontrol etmek için:

sudo systemctl status nginx

Adım 7: RTMP Akışını Test Etme

RTMP sunucunuz artık çalışıyor olmalı. Şimdi bir yayıncı (OBS Studio gibi) kullanarak akışı test edelim.

  1. OBS Studio'yu Açın: OBS Studio'da "Ayarlar" -> "Yayın" bölümüne gidin.
  2. Hizmet: "Özel..." seçeneğini seçin.
  3. Sunucu: rtmp://YOUR_SERVER_IP/live (Burada YOUR_SERVER_IP yerine sunucunuzun IP adresini yazın.)
  4. Yayın Anahtarı: test (veya konfigürasyonunuzda tanımladığınız herhangi bir anahtar. Varsayılan olarak, Nginx-RTMP modülü herhangi bir anahtarı kabul eder, ancak güvenlik için bunu daha sonra kısıtlayabilirsiniz.)
  5. OBS'de bir kaynak (webcam, ekran yakalama vb.) ekleyin ve "Yayını Başlat" düğmesine tıklayın.

Akışınız sunucunuza gönderilmeye başlanacaktır.

RTMP Akışını Yayınlama ve İzleme

RTMP sunucunuzu kurduktan sonra, sıra akışı yayınlamaya ve izlemeye gelir.

OBS Studio ile Yayın Yapma

OBS Studio, ücretsiz ve açık kaynaklı bir canlı yayın yazılımıdır. Kendi RTMP sunucunuza yayın yapmak için idealdir.

  1. OBS Studio'yu İndirin ve Kurun: Eğer kurulu değilse, OBS Studio'yu resmi web sitesinden indirin.
  2. Ayarlar -> Yayın'a Gidin:
    • Hizmet: "Özel..." seçeneğini seçin.
    • Sunucu: rtmp://[SUNUCU_IP_ADRESİNİZ]/live (Örnek: rtmp://192.168.1.100/live)
    • Yayın Anahtarı: benimyayinanahtarim (Bu, Nginx konfigürasyonunda application live altında belirtilen herhangi bir anahtar olabilir. Eğer özel bir anahtar kontrolü yapmadıysanız, herhangi bir anahtar çalışacaktır.)
  3. Kaynakları Ekleyin: Yayınlamak istediğiniz video ve ses kaynaklarını (webcam, ekran yakalama, mikrofon vb.) OBS'ye ekleyin.
  4. Yayını Başlatın: "Yayını Başlat" düğmesine tıklayın. OBS, akışı RTMP sunucunuza göndermeye başlayacaktır.

VLC Media Player ile İzleme

VLC Media Player, RTMP akışlarını doğrudan oynatabilen popüler bir medya oynatıcısıdır.

  1. VLC Media Player'ı Açın.
  2. Medya -> Ağ Akışı Aç... seçeneğine gidin.
  3. Ağ URL'si: rtmp://[SUNUCU_IP_ADRESİNİZ]/live/benimyayinanahtarim adresini girin. (Yayın anahtarınız OBS'de kullandığınızla aynı olmalıdır.)
  4. Oynat'a Tıklayın. Akışınız VLC'de oynatılmaya başlayacaktır.

Web Tarayıcıda İzleme (HLS dönüştürme)

Modern web tarayıcıları doğrudan RTMP akışlarını desteklemez. Tarayıcıda izleme sağlamak için RTMP akışını HTTP tabanlı bir protokole, genellikle HLS (HTTP Live Streaming) veya MPEG-DASH'e dönüştürmeniz gerekir. Nginx-RTMP modülü, bu dönüştürmeyi yapabilir.
Yukarıdaki Adım 5'te Nginx konfigürasyonuna eklediğimiz HLS bloğunu kullanarak:


        application hls {
            live on;
            hls on;
            hls_path /tmp/hls; # HLS parçalarının depolanacağı dizin
            hls_fragment 3s;
            hls_playlist_length 60s;
        }


Bu konfigürasyon, gelen RTMP akışını /tmp/hls dizininde HLS parçalarına dönüştürecektir. Bu parçaları web üzerinden sunmak için Nginx'in HTTP bloğuna bir konum eklemeniz gerekir:


http {
    # ... diğer http ayarları ...

    server {
        listen 80;
        server_name your_domain.com your_server_ip;

        location /hls {
            # HLS dosyalarının bulunduğu dizin
            root /tmp;
            add_header Cache-Control no-cache;
            # CORS başlıkları, farklı alan adlarından oynatmaya izin verir
            add_header Access-Control-Allow-Origin *;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
        }
    }
}


Bu yapılandırmayı yaptıktan ve Nginx'i yeniden başlattıktan sonra (sudo /usr/local/nginx/sbin/nginx -s reload), akışınızı bir web tarayıcısında oynatmak için video.js gibi bir JavaScript oynatıcı kullanabilirsiniz.
HTML sayfanıza aşağıdaki gibi bir kod ekleyebilirsiniz:





    RTMP Akışı İzle (HLS)
    
    
    


    



Bu HTML dosyasını sunucunuzda barındırarak veya yerel olarak açarak akışınızı tarayıcıda izleyebilirsiniz.

RTMP Sunucusu Bakımı ve Optimizasyonu

RTMP sunucunuzu kurmak sadece başlangıçtır. Optimum performans ve güvenilirlik için düzenli bakım ve optimizasyon önemlidir.

Güvenlik Önlemleri

Sunucunuzu güvende tutmak, yetkisiz erişimi ve kötüye kullanımı önlemek için kritik öneme sahiptir:

  • Güçlü Yayın Anaht
Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.