AzuraCast nedir? Açık kaynak internet radyosu paketi nasıl çalışır
AzuraCast; Liquidsoap, Icecast ve bir web panelini tek pakette toplayan açık kaynak radyo yazılımı. Docker kurulumu, çoklu istasyon, DJ hesapları ve istek sistemi resmî belgelerine göre.
Bir internet radyosu kurmak isteyen birinin önünde uzun bir parça listesi durur: şarkıları sırayla çalacak bir yazılım, o sesi binlerce dinleyiciye dağıtacak bir yayın sunucusu, çalma listelerini düzenleyecek bir arayüz, canlı yayına girecek DJ'ler için şifreler, dinleyici istatistikleri... Bu parçaların her biri ayrı ayrı kurulup birbirine bağlanmak zorunda. AzuraCast, bu işi tek pakete toplayan açık kaynak bir projedir.
Projenin kendi belgelerindeki tanım kısa: AzuraCast, "kendi sunucunuzda barındırdığınız, hepsi bir arada web radyo yönetim paketi". Belgelere göre kurulum bittikten sonra radyo istasyonunun her ayrıntısı web arayüzünden yönetilebiliyor; kurulum için ise Linux komut satırına temel düzeyde aşinalık yetiyor. Yudum'un internet radyosu YudumFM de yayın altyapısında AzuraCast kullanıyor.
-
Yemek tarifleri
Malzeme listesi, adım adım yapılış, süre ve porsiyon bilgisiyle. Çorbadan tatlıya kategoriye göre gez ya da aradığını doğrudan ara.
Tariflere bak → -
Nasıl yapılır rehberleri
Telefon ayarlarından resmî işlemlere, hesap güvenliğinden günlük hayattaki küçük sorunlara: numaralı adımlar ve tahmini süreyle anlatılmış rehberler.
Rehberleri gör → -
Program arşivi
Tarayıcılar, güvenlik araçları, ofis ve medya yazılımları. Her kayıtta ne işe yaradığı, sürümü ve indirme bağlantısı.
Programlara göz at → -
Sesli ve görüntülü sohbet
Odalarda grup görüntülü sohbet, birebir sesli arama ve canlı yayın. Tarayıcıdan çalışır — eklenti, uygulama ya da kurulum gerekmez.
Odalara gir →
Neden önemli? Çünkü internet radyosu çoğu kişinin sandığı gibi "bir müzik klasörünü internete açmak" değil. Arka planda birbirinden farklı işler yapan birkaç program çalışır ve bunların uyumu bozulduğunda yayın susar. AzuraCast'in asıl katkısı yeni bir radyo teknolojisi icat etmek değil, yıllardır kullanılan olgun araçları bir araya getirip ayakta tutmak.
Paketin içinde ne var: iki temel bileşen
AzuraCast belgeleri her istasyonun arka planda sürekli çalışan iki temel parçası olduğunu anlatıyor. Bunu bir mutfak ile garson ilişkisine benzetebiliriz.
- AutoDJ (yayın arka ucu): Mutfak. AzuraCast'te bu görevi Liquidsoap üstleniyor. Farklı çalma listelerinden ve canlı girişlerden gelen sesi toplayıp tek bir yayın akışına dönüştürüyor, sonra bu akışı istenen biçimlere kodluyor. Belgelere göre dinleyiciler doğrudan AutoDJ'e bağlanmıyor, çünkü bu yazılım yayını üretmek için tasarlanmış, kalabalığa servis etmek için değil.
- Yayın yazılımı (ön uç): Garson. Liquidsoap'un ürettiği sinyali alıp dinleyicilere dağıtan hafif program. Belgeler bunun "çok sayıda eş zamanlı bağlantıyı sistem performansını az etkileyerek" karşılamak için tasarlandığını belirtiyor. AzuraCast bu iş için varsayılan olarak Icecast-KH kullanıyor.
SHOUTcast tarafı biraz farklı. Belgelere göre SHOUTcast 2 DNAS, x86/x64 kurulumlarda ön uç olarak kullanılabiliyor; ancak özgür yazılım olmadığı için AzuraCast ile birlikte dağıtılmıyor. Yönetici, dosyayı SHOUTcast'in kendi sitesinden indirip AzuraCast yönetim panelinden yüklüyor. Aynı yöntem, kapalı kaynak bir Icecast alternatifi olan Rocket Streaming Audio Server (RSAS) için de geçerli.
Paketin görünmeyen tarafında da birkaç tanıdık yazılım var. Belgelerdeki listeye göre web sayfalarını ve radyo vekilini NGINX, ana veritabanını MariaDB, web uygulamasını PHP, oturum ve önbellek işlerini Redis, "şu an çalıyor" veri akışını ise Centrifugo yürütüyor.
Docker ile kurulum mantığı
Bu kadar parçayı elle kurmak saatler alabilir. AzuraCast'in önerdiği yol Docker. Docker, bir yazılımı ihtiyaç duyduğu her şeyle birlikte hazır bir "kap" içinde çalıştıran bir teknoloji; böylece sunucudaki diğer programlarla sürüm çakışması yaşanmıyor. Proje belgelerinde Docker kurulumunun "kullanıcıların çoğu için tercih edilen yol" olduğu yazıyor ve AzuraCast'in her bileşeni içeren önceden hazırlanmış imajlarla geldiği belirtiliyor.
Belgelerdeki akış kabaca şöyle: sunucuya yönetici yetkisiyle bağlanılıyor, önerilen dizin olarak /var/azuracast oluşturuluyor, projenin GitHub deposundan "Docker yardımcı betiği" indirilip kurulum komutuyla çalıştırılıyor. Betik gerekiyorsa Docker ve Docker Compose'u da kendisi kuruyor. İş bitince tarayıcıdan kurulum adresine girilip ilk yönetici hesabı oluşturuluyor. Linode, Vultr ve DigitalOcean gibi sağlayıcılarda tek tıkla kurulum seçenekleri, Windows 10/11 için WSL2 üzerinden kurulum ve Synology NAS desteği de belgelerde listeleniyor.
Donanım beklentisi de açıkça yazılmış:
| Düzey | İşlemci | Bellek | Disk |
|---|---|---|---|
| Asgari | 64 bit x86 ya da ARM64 | En az 2 GB | 20 GB ve üzeri |
| Önerilen | 4 çekirdek | 4 GB | 40 GB ve üzeri |
Tablodaki değerler AzuraCast'in sistem gereksinimleri sayfasından alındı. Belge, asgari değerlerin "sorunsuz çalışma garantisi vermediğini", önerilen değerlerin ise hobi amaçlı 5 ila 10 istasyonu rahat taşıyacağını söylüyor. Bazı OpenVZ ya da LXC tabanlı sanal sunucuların Docker ile uyumsuz olabileceği de uyarılar arasında.
Tek kurulumda birden çok istasyon
AzuraCast'te her "istasyon" kendi medya dosyaları, çalma listeleri, DJ'leri, bağlantı noktaları (mount point) ve istatistikleriyle ayrı bir birim. Belgelere göre bir kurulumda istenen sayıda istasyon açılabiliyor; sınır sunucunun kaynakları. Varsayılan ayarda ise yalnız ilk 50 istasyonun portları dışarı açılıyor.
Bağlantı noktası kavramı burada önem taşıyor. Her istasyon tek bir yayındır ve o an tek bir şarkı çalar; ama aynı yayın birden çok bağlantı noktasından farklı biçim ya da kalitede sunulabilir. Belgelerdeki örnek, aynı yayının hem 128 kbps hem 64 kbps olarak verilmesi. Pek çok dinleyicinin 8000 gibi radyo portlarına doğrudan bağlanamadığını hatırlatan belgeler, AzuraCast'in yayını web trafiğinin kullandığı 80 ve 443 portlarından da sunan otomatik bir vekil içerdiğini belirtiyor.
DJ hesapları ve canlı yayın
İstasyonda "yayıncıları etkinleştir" seçeneği açıksa birden çok DJ hesabı tanımlanabiliyor. Belgelerin anlattığı ayrıntı ilginç: canlı DJ ile otomatik yayın arasındaki geçişin kesintisiz olması için her DJ, dinleyicilerin bağlandığı sunucuya değil, doğrudan AutoDJ yazılımına, yani Liquidsoap'a bağlanıyor. Liquidsoap, Icecast ya da SHOUTcast sunucularıyla uyumlu yayın programlarından gelen bağlantıları kabul ediyor.
AzuraCast her DJ'in yayın geçmişini tutuyor; istenirse canlı yayınlar belirlenen biçim ve bit hızında otomatik kaydediliyor. Ayrıca harici bir programa gerek kalmadan doğrudan tarayıcıdan yayına çıkmayı sağlayan yerleşik bir "Web DJ" aracı da var.
Çalma listeleri ve öncelik sırası
Belgeler çalma listelerini "AutoDJ tarafından belirli kurallara göre çalınan medya koleksiyonları" diye tanımlıyor. Gün boyu dönen genel listeler, her birkaç şarkıda bir ya da her birkaç dakikada bir araya giren listeler ve saatte bir çalınan listeler kurulabiliyor. Her liste belirli saat dilimlerine ya da tarih aralığına da bağlanabiliyor.
İki liste aynı anda çalmaya uygun olduğunda hangisinin çalınacağı bir öncelik sistemiyle belirleniyor. Belgelerdeki varsayılan sıralama şöyle:
| Öğe türü | Varsayılan öncelik |
|---|---|
| Dinleyici istekleri | Her zaman en üstte |
| Saatte bir çalan liste, zamanlanmış | 7 |
| Saatte bir çalan liste, zamanlanmamış | 6 |
| Her X şarkıda bir çalan liste, zamanlanmış | 5 |
| Her X şarkıda bir çalan liste, zamanlanmamış | 4 |
| Her X dakikada bir çalan liste, zamanlanmış | 3 |
| Her X dakikada bir çalan liste, zamanlanmamış | 2 |
| Genel rotasyon listeleri | 0 |
Belgelere göre 1 Eylül 2024 sonrasında çıkan sürümlerde her listenin önceliği elle de ayarlanabiliyor; dinleyici isteklerinin önceliği düşürülerek isteklerin genel yayını her seferinde bölmesi engellenebiliyor. Daha ileri gitmek isteyenler için "gelişmiş çalma listesi" türü var: AzuraCast listenin içeriğini yönetmeye devam ediyor ama çalma kuralını kullanıcının doğrudan Liquidsoap diliyle yazmasına bırakıyor.
Dinleyici istekleri ve "şu an çalıyor" verisi
Dinleyiciler, çalma listelerindeki şarkılardan istekte bulunabiliyor; belgeler bunun hem bir API üzerinden hem de herkese açık basit bir istek sayfasıyla yapılabildiğini söylüyor. Aynı API; istasyonun bağlantı noktalarını, anlık dinleyici sayısını, çalan şarkıyı, şarkının listeden mi istekten mi canlı yayından mı geldiğini ve son çalınan birkaç şarkıyı tek bir veri paketinde sunuyor. Belgelere göre bu veri, yayın Icecast'ten de SHOUTcast'ten de yapılsa aynı biçimde geliyor. Sitelere gömülen radyo oynatıcılarının şarkı adını gösterebilmesi bu sayede mümkün.
Sınırlar ve dikkat edilecekler
AzuraCast'in kendi belgeleri birkaç konuda açık sözlü. Proje belgelerinde hâlâ "beta" olarak tanımlanıyor; güncellemelerin beklenmedik sorunlara yol açabileceği, bu yüzden medya dosyalarının ikinci bir yerde yedeklenmesi gerektiği yazıyor. Yazılım GNU Affero Genel Kamu Lisansı sürüm 3 ile dağıtılıyor.
Müzik lisansı konusunda da belge net: AzuraCast, sanatçılara ödenmesi gereken lisans ve telif bedellerinin sorumluluğunu üstlenmediğini, bu kuralların ülkeden ülkeye büyük farklar gösterdiğini belirtiyor. Yani paket radyoyu teknik olarak ayağa kaldırıyor; yayınlanan müziğin izinleri ise istasyonu işletenin, bulunduğu ülkedeki meslek birlikleri ve ilgili kurumlarla çözmesi gereken ayrı bir iş.
Açık kalan soru şu: AzuraCast bu kadar parçayı tek pakete topladıkça işler kolaylaşıyor, ama sorun çıktığında hatanın hangi katmanda olduğunu bulmak için yine Liquidsoap'un ve Icecast'in nasıl çalıştığını bilmek gerekiyor. Paket kapıyı açıyor; içerideki makineyi tanımak hâlâ radyocunun işi.
İnternet radyosu serisinin diğer yazıları
- Liquidsoap nedir? İnternet radyosunda otomatik yayını yöneten betik dili
- 128 kbps ne demek? İnternet radyosunda bit hızı, bant genişliği ve codec farkı
- Radyoda "şu an çalıyor" bilgisi nereden gelir? ICY, ID3 etiketi ve bozuk başlıklar
- SAM Broadcaster, RadioDJ, mAirList, BUTT ve Mixxx: Hangi Yayın Yazılımı Ne İşe Yarar?
- İnternet Radyosunda Canlı Yayına Nasıl Girilir? Sunucu, Port, Mount ve Codec Rehberi
- İnternet Radyosu İçin Ekipman Rehberi: Mikrofon, Ses Kartı, Kulaklık ve Ses Seviyesi
- İnternet Radyosunda Telif ve Lisans: Hangi Haklar Var, Hangi Birlik Neyi Temsil Ediyor?
- İnternet radyosunun doğuşu: 1993'teki haftalık sohbetten RealAudio'nun canlı yayınına
- SHOUTcast'in hikâyesi: Winamp'ın yanında doğan yayın sunucusu Nullsoft'tan Azerion'a
- Icecast: Bir üniversite radyosu için yazılan açık kaynak sunucunun çeyrek asrı aşan hikâyesi
- FM'den internete radyo: RDS, DAB+ ve akışlı yayın arasındaki farklar, Türkiye'deki durum
Fotoğraf: Abigor, CC BY-SA 3.0, Wikimedia Commons