Site icon Tahsin Bey

Kendi İnternet Radyonu Kur: OrbitCast

Kendi İnternet Radyonu Kur: OrbitCast

Kendi İnternet Radyonu Kur: OrbitCast

Uzun süredir aklımda olan, zaman zaman da “lan şöyle sunucuya ses dosyası yükletmeden, band genişliğini sömürmeden herkese aynı anda aynı saniyi dinleten bir sistem nasıl kurulur?” diye kafamı kurcalayan projeyi en sonunda derleyip toplayıp açık kaynak olarak çıkardım: OrbitCast.

Olayı çok uzatmadan özünü anlatayım.

OrbitCast, senin seçeceğin YouTube parçalarını (veya kendi yükleyeceğin ses dosyalarını) bir radyo yayını gibi sırayla çalan bir açık kaynak projesi. Güzel tarafı şu: siteye giren kim olursa olsun, o an yayında olan parçanın herkesle aynı saniyesinden dinlemeye başlıyor.

Yani tam anlamıyla gerçek bir radyo. Kimse şarkıyı ileri/geri saramıyor, kafasına göre baştan başlatamıyor. O an kaç kişi seninle birlikte aynı ritmi tutuyorsa, canlı canlı görüyorsun.

Sunucu maliyeti: 0 TL

Projedeki asıl olayı mimari tarafta çözdüm. Uygulama sunucusu (Next.js) tek bir bayt bile ses taşımıyor.

Yayın konumu arka planda tamamen matematiksel bir hesaplamayla ((şimdi - epoch) mod toplamSüre) bulunuyor. Ses ise ya doğrudan YouTube’un kendi CDN’inden ya da senin bağlayacağın Cloudflare R2 gibi bir depodan doğrudan dinleyiciye akıyor.

Sonuç? Siteni ister 10 kişi dinlesin, ister 10.000 kişi… Sunucundan ses geçmediği için bant genişliği faturası sıfır kalıyor. Vercel’in veya Upstash’in ücretsiz katmanlarıyla kendi radyonu tek kuruş ödemeden canlıya alabiliyorsun.

Üç farklı kullanım

İhtiyacına göre üç şekilde kurabiliyorsun:

  1. YouTube Radyo: Sadece bir YouTube playlist linki veriyorsun, bitiyor. Sunucuyla, dosyayla, telifle hiç uğraşmıyorsun. Tek kısıtı, mobil tarayıcılar YouTube <iframe> oynatıcısını arka plana geçince susturduğu için ekranı kapatınca yayın duruyor.
  2. Yerel Radyo (Repo): Kendi MP3/audio kayıtlarını doğrudan projenin içine atıp yayınlıyorsun. <audio> etiketi kullandığı için mobil kilit ekranında kapak resmi, şarkı adı falan çıkıyor; arka planda çalmaya devam ediyor.
  3. Yerel Radyo (Cloudflare R2): Kendi kayıtların çoksa projeyi şişirmeyip Cloudflare R2’ye yüklüyorsun (R2’nin 10 GB ücretsiz depolaması var ve egress/trafik ücreti yok). Yine arka planda kesintisiz çalıyor.

Zaten kurulum terminalinde npm run radio:setup dediğinde tatlı bir sihirbaz seni karşılıyor; neyi nerede tutmak istediğini adım adım sorup .env.local dosyanı hazırlıyor.

Yayınları ve playlist’i ister terminalden (npm run radio:add), ister şifreli /admin paneli üzerinden canlı canlı sürükle-bırak yaparak yönetebiliyorsun.

Denemek veya katkıda bulunmak istersen

Kodu GitHub’a bıraktım. Kendi radyonu kurmak, incelemek veya katkı sağlamak istersen repo burada:

DemoGithub

Kurup yayın yapan olursa bir dinleme linkini de atarsınız artık. Birileri gerçekten kullanırsa daha da güzelleştireceğim.

Görüşmek üzere!

Exit mobile version