vs Muzibu

Streaming mimarisi karşılaştırması - Neden onlarda donma yok?

Detaylı Analiz

Özet: Neden Onlarda Donma Yok?

Basit Anlatım

Spotify ve YouTube telefona özel uygulama (Native App) kullanıyor. Bu uygulama telefonun donanımına doğrudan erişebiliyor.

Muzibu ise web tarayıcısı üzerinden çalışıyor. Tarayıcı bir "aracı" gibi - her şey onun üzerinden geçiyor ve bu yavaşlatıyor.

Araba örneği: Spotify direkt otoyolda gidiyor, Muzibu ise şehir içinden geçmek zorunda.

Teknik Özet

Platform Native vs Web = %40 performans farkı
Memory Yönetimi OS-level vs Browser GC = Kritik fark
Audio Pipeline Hardware vs Software decode
Buffer Stratejisi Agresif vs Konservatif = İyileştirilebilir

Platform Mimarisi Karşılaştırması

Spotify

  • Native iOS/Android SDK - Donanıma doğrudan erişim
  • Ogg Vorbis codec - Düşük bitrate, yüksek kalite
  • Offline playback - İndirip çalabilme
  • Hardware audio decode - CPU kullanmaz
  • OS-level memory management - Otomatik temizlik
SONUÇ: Donma yok

YouTube Music

  • Native app + WebView hybrid - En iyi iki dünya
  • AAC + Opus codec - Çok verimli sıkıştırma
  • Google CDN - Dünya çapında edge sunucular
  • Adaptive bitrate (ABR) - Ağa göre kalite değişimi
  • ExoPlayer (Android) - Google'ın optimize player'ı
SONUÇ: Donma yok

Muzibu

  • Web browser (JavaScript) - Tarayıcı üzerinden
  • HLS + AES-128 - Güvenli streaming
  • HLS.js library - Software decode (CPU yoğun)
  • Browser GC - Tahmin edilemez temizlik
  • Cloudflare CDN - İyi ama config gerekli
SONUÇ: Mobilde donma

Bellek Yönetimi Karşılaştırması

Özellik Spotify YouTube Muzibu
Memory Limit OS tarafından yönetilir OS tarafından yönetilir Browser heap limit (~2GB)
Garbage Collection Agresif, tahmin edilebilir Agresif, tahmin edilebilir Browser'a bağlı, belirsiz
Buffer Strategy 30sn forward, 0 back 20-30sn adaptive 60sn forward, 30sn back
Max Buffer Size ~30-50MB ~50MB 200MB (!)
Instance Yönetimi Tek player, reuse Tek player, reuse Çoklu HLS instance
Şarkı Değişiminde Eski buffer hemen silinir Eski buffer hemen silinir Cache birikir

Kritik Bulgu: Muzibu Buffer Sorunu

Muzibu'da maxBufferSize: 200MB ayarlı. Bu, düşük RAM'li telefonlarda (2-4GB) toplam RAM'in %5-10'u demek. Spotify ve YouTube ise sadece 30-50MB kullanıyor.

HLS.js Ayarları: Mevcut vs Önerilen

Mevcut Ayarlar (Sorunlu)

new Hls({
  maxBufferLength: 30,        // OK
  maxMaxBufferLength: 60,     // Biraz yüksek
  maxBufferSize: 200 * 1000 * 1000, // 200MB! ÇOK YÜKSEK
  backBufferLength: 30,       // Gereksiz yüksek
  enableWorker: false,
  lowLatencyMode: false,
});
Tahmini memory kullanımı: 150-250MB

Önerilen Ayarlar (Spotify Tarzı)

new Hls({
  maxBufferLength: 20,        // 20sn yeterli
  maxMaxBufferLength: 30,     // Max 30sn
  maxBufferSize: 30 * 1000 * 1000,  // 30MB - Spotify gibi
  backBufferLength: 5,        // 5sn geri yeterli
  enableWorker: false,
  lowLatencyMode: false,
  // Mobil için ek ayarlar:
  startLevel: -1,            // Auto quality
  abrEwmaDefaultEstimate: 500000, // 500kbps başla
});
Tahmini memory kullanımı: 30-50MB

Audio Pipeline Karşılaştırması

Spotify Audio Pipeline

CDN Edge Ogg Vorbis Decode Hardware Audio Speaker

Latency: ~10ms | CPU kullanımı: ~2-5% | Memory: Sabit ~50MB

YouTube Music Audio Pipeline

Google CDN AAC/Opus Decode ExoPlayer Speaker

Latency: ~15ms | CPU kullanımı: ~3-8% | Memory: Sabit ~60MB

Muzibu Audio Pipeline

Cloudflare CDN HLS Manifest AES-128 Decrypt HLS.js Parse JS Audio Decode HTML5 Audio Speaker

Latency: ~50-100ms | CPU kullanımı: ~15-30% | Memory: 100-250MB (değişken)

Neden Bu Kadar Fark Var?

Muzibu'da 4 ekstra adım var: HLS manifest parse, AES-128 decrypt, HLS.js segment birleştirme, JavaScript audio decode. Bunların hepsi CPU üzerinde çalışıyor (software-based). Spotify/YouTube ise bu işlemleri telefonun özel çiplerinde yapıyor (hardware-accelerated).

Muzibu İçin Çözüm Önerileri

Hızlı Çözümler (Hemen Yapılabilir)

  • 1
    Buffer Size Düşür

    200MB → 30MB (Spotify gibi)

  • 2
    Back Buffer Kaldır

    30sn → 5sn (geri sarma nadiren kullanılır)

  • 3
    Tek HLS Instance

    Her şarkıda yeni instance yerine reuse

  • 4
    Agresif Cleanup

    Şarkı değişiminde eski buffer'ı hemen sil

Uzun Vadeli Çözümler

  • 1
    PWA + Service Worker

    Offline playback, daha iyi caching

  • 2
    Native App (React Native/Flutter)

    Gerçek çözüm ama büyük yatırım

  • 3
    MP3 Fallback (HLS'siz)

    Mobilde HLS yerine direkt MP3 stream

  • 4
    WebCodecs API

    Yeni browser API, hardware decode

Beklenen İyileşme (Hızlı Çözümlerle)

%70
Memory Azalması
200MB → 50MB
%50
CPU Azalması
Tek instance ile
%80
Donma Azalması
Tahmin (test gerekli)
Web
Platform Limiti
Native kadar olamaz

Gerçekçi Beklenti: Web tabanlı bir player, Spotify/YouTube kadar akıcı olamaz. Ama buffer optimizasyonlarıyla kabul edilebilir seviyeye getirebiliriz. %100 değil ama %80-90 iyileşme sağlanabilir.

Kaynaklar