Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Nginx ile Canlı Yayın (Live Streaming) Yapılandırması: RTMP veya HLS Protokolleri için Optimizasyon

devnix

Üye
Katılım
14 Mart 2026
Mesajlar
9
Merhaba arkadaşlar, bugün sizlere Nginx web sunucusunu kullanarak nasıl profesyonel ve yüksek performanslı bir canlı yayın (live streaming) sunucusu kuracağımızı anlatacağım. Özellikle RTMP (gerçek zamanlı mesajlaşma protokolü) ve HLS (HTTP Canlı Yayın) protokolleri üzerinde duracağız. Bu yapılandırma, kendi oyun yayınınızı, eğitim videolarınızı veya kurumsal etkinlik yayınlarınızı taşıyabileceğiniz sağlam bir altyapı sağlar. Benim de birkaç sunucumda kullandığım, test edilmiş bir yöntemi paylaşıyorum.

📦 Gereksinimler ve RTMP Modülünün Derlenmesi

Öncelikle, Nginx'in standart dağıtımında RTMP modülü gelmez. Bu yüzden Nginx'i kaynak kodundan, RTMP modülü ile birlikte derlememiz gerekiyor. Aşağıdaki adımları sırasıyla takip edelim.

Bash:
# Gerekli kütüphaneleri yükleyelim
sudo apt-get update
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev -y

# Nginx kaynak kodunu ve RTMP modülünü indirelim
cd /usr/src
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
sudo tar -zxvf nginx-1.24.0.tar.gz
sudo git clone https://github.com/arut/nginx-rtmp-module.git

⚙️ Nginx Derleme ve Kurulum Adımları

Şimdi indirdiğimiz kaynak kodlarını derleyip kuralım. Burada dikkat etmemiz gereken nokta, `./configure` aşamasında RTMP modülünün yolunu doğru vermek.

Bash:
cd /usr/src/nginx-1.24.0
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install

Kurulum tamamlandı. Varsayılan olarak Nginx, /usr/local/nginx/ dizinine kurulur. Sistem servisini başlatalım.

Bash:
sudo /usr/local/nginx/sbin/nginx

🎬 RTMP Yayın Yapılandırması

Şimdi asıl işe, yani yayın konfigürasyonuna geçelim. Ana Nginx konfigürasyon dosyasını açalım.

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

Dosyanın en altına, `http { ... }` bloğunun DIŞINA, aşağıdaki RTMP yapılandırma bloğunu ekleyin. Bu blok, RTMP yayınlarınızın temelini oluşturacak.

NGINX:
rtmp {
    server {
        listen 1935; # RTMP standart portu
        chunk_size 4096;
        ping 30s;
        notify_method get;

        application live {
            live on;
            record off; # Kayıt özelliğini kapatıyoruz, isteğe bağlı

            # Yayını HLS formatına dönüştürmek için (OBS gibi yazılımlar için)
            hls on;
            hls_path /tmp/hls;
            hls_fragment 3s;
            hls_playlist_length 60s;

            # Yayıncı bağlandığında veya koptuğunda çalışacak callback (isteğe bağlı)
            on_publish http://localhost/auth_publish;
            on_done http://localhost/auth_done;
        }
    }
}

Ayrıca, HLS segmentlerini sunabilmek için `http { ... }` bloğunun içine, `server { ... }` bölümüne aşağıdaki `location` direktifini eklemelisiniz.

NGINX:
location /hls {
    types {
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
    }
    root /tmp;
    add_header Cache-Control no-cache; # Canlı yayın için cache'i kapat
    add_header Access-Control-Allow-Origin ; # Farklı domainlerden erişime izin ver
}

Konfigürasyonu kaydedip çıktıktan sonra Nginx'i yeniden başlatalım.

Bash:
sudo /usr/local/nginx/sbin/nginx -s reload

⚠️ Güvenlik ve Optimizasyon Önerileri

Arkadaşlar, buraya çok dikkat etmelisiniz. RTMP sunucusunu olduğu gibi internete açarsanız, herkes yayın yapabilir. Temel güvenlik için birkaç ayar şart.

1. Yayın Anahtarı (Stream Key) Zorunluluğu: OBS'de sunucu adresinizi `rtmp://sunucu_ip/live` şeklinde değil, `rtmp://sunucu_ip/live/``yayin_anahtariniz` şeklinde girin. Sunucu tarafında bu anahtarı kontrol eden basit bir script yazabilirsiniz (`on_publish` callback'i ile).
2. IP Kısıtlama: Sadece belirli IP bloklarının yayın yapmasına izin vermek için `allow publish` ve `deny publish` direktiflerini kullanın.
3. Sunucu Kaynakları: Yüksek eşzamanlı izleyici sayısı bekliyorsanız, Nginx çalışan prosesi (`worker_processes`) ve bağlantı limitlerini (`worker_connections`) artırmayı unutmayın. Dosya /usr/local/nginx/conf/nginx.conf içinde bu ayarları yapabilirsiniz.
4. HLS Buffer Optimizasyonu: Yayın gecikmesini (latency) azaltmak için `hls_fragment` ve `hls_playlist_length` değerlerini düşürebilirsiniz, ancak bu sunucu yükünü biraz artıracaktır. 1s fragment ve 10s playlist length denenebilir.

🔧 Test ve Yayın Başlatma

Her şey hazır! OBS Studio'yu açın ve yayın ayarlarına girin.
Hizmet: Özel
Sunucu: `rtmp://SUNUCU_IP_ADRESINIZ/live`
Yayın Anahtarı: `test_yayini` (veya belirlediğiniz herhangi bir anahtar)

Başlat'a tıkladıktan sonra, bir video oynatıcıda (VLC gibi) `http://SUNUCU_IP_ADRESINIZ/hls/test_yayini.m3u8` adresini açarak HLS yayınınızı izleyebilirsiniz. RTMP için ise `rtmp://SUNUCU_IP_ADRESINIZ/live/test_yayini` adresini kullanabilirsiniz.

Sonuç olarak, Nginx ile kendi canlı yayın altyapınızı kurmak hem maliyet açısından avantajlı hem de tam kontrol sağlıyor. Performans ve güvenlik ayarlarını sunucunuzun kapasitesine ve ihtiyacınıza göre mutlaka ince ayar yapın.

Peki siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? RTMP yerine SRT gibi farklı protokolleri deneyen var mı? Optimizasyon için ek tavsiyeleriniz varsa veya takıldığınız bir nokta olursa, aşağıya yazmaktan çekinmeyin. Herkese sorunsuz yayınlar!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri