Muzibu Ses Platformu — Tüm Akış, Tüm Parametreler
23 Şubat 2026 — 13 Bölüm
Muzibu'da müzik iki farklı yöntemle gönderilebilir:
Şarkı tek seferde, komple indirilir. Tıpkı bir fotoğraf indirmek gibi — ya gelir ya gelmez.
Kalite: 64 kbps, 128 kbps veya orijinal
Şarkı küçük parçalara bölünerek gönderilir. Netflix gibi — internet hızına göre kaliteyi otomatik ayarlar.
4 seviye: 32, 64, 128 kbps + orijinal
HLS'nin hafifletilmiş hali. Yüksek kalite seçenekleri kaldırılır, sadece düşük kaliteler kalır.
Varsayılan: ultralow + low + mid
Soft Mode neden var? İnternet bağlantısı zayıf olan ortamlarda (kafeler, metrolar, kırsal bölgeler) yüksek kaliteye geçiş yapılmasını engellemek için. Böylece şarkı hiç takılmaz — ama yine de iki seviye arasında otomatik geçiş yapar (sabit MP3'ten üstün).
Kurumsal hesap ne zaman MP3'e geçer? Bir şirketin Muzibu hesabında 50'den fazla kullanıcı varsa, sunucu yükünü azaltmak için tüm kullanıcılar otomatik olarak MP3 formatına geçer. Bu eşik ENV'den ayarlanabilir.
Zayıf telefonlar artık MP3 128kbps alıyor. Daha önce v3'te Soft HLS planlanmıştı, ancak zayıf cihazlarda HLS decoder işlemciye yük bindirdiğinden MP3'e geri dönüldü. MP3 tek dosya olduğundan işlemci kullanmaz, batarya tüketmez.
| Seçenek | Gönderim | Soft? | ABR? | Şifreli? | Açıklama |
|---|---|---|---|---|---|
| auto | Değişken | — | — | — | Cihaz + internet'e göre otomatik karar |
| mp3_64 | Bütün | Hayır | Hayır | Hayır | Sabit 64 kbps MP3. En düşük kalite, en az veri. |
| mp3_128 | Bütün | Hayır | Hayır | Hayır | Sabit 128 kbps MP3. Orta kalite. MOBİL VARSAYILAN |
| mp3_auto | Bütün | Hayır | Hayır | Hayır | Cihaz güçlüyse 128k, zayıfsa 64k MP3. |
| hls_soft | Parçalı | EVET | Evet | AES-128 | Soft Mode! master.m3u8'den high kaldırılır. ENV'de ayarlanabilir. |
| hls_32 | Parçalı | Hayır | Kilitli | AES-128 | Sadece ultralow (32k). Level lock, ABR yok. |
| hls_64 | Parçalı | Hayır | Kilitli | AES-128 | Sadece low (64k). Level lock, ABR yok. |
| hls_128 | Parçalı | Hayır | Kilitli | AES-128 | Sadece mid (128k). Level lock, ABR yok. |
| hls_auto | Parçalı | Hayır | 4 seviye | AES-128 | Tüm seviyeler açık, ABR serbest. En güçlü mod. |
v3'te eklenmişti (zayıf mobil otomatik soft HLS). v4'te kaldırıldı — zayıf mobiller artık MP3 128kbps alıyor. Kodda hiçbir referansı kalmadı.
4 seviye arası otomatik geçiş (ABR)
3 seviye: ultralow + low + mid (max 128 kbps)
ENV: MUZIBU_SOFT_PLAYER_VARIANTS=ultralow,low,mid
Dikkat: Soft modda hangi varyantların kalacağı MUZIBU_SOFT_PLAYER_VARIANTS ile belirlenir. Varsayılan ultralow,low,mid. Sadece ultralow,low yazarsan mid de kaldırılır.
Dosya: SongStreamController.php → resolveAudioFormat() — Her stream isteğinde bu zincir çalışır:
MUZIBU_AUDIO_FORCE doluysa → herkesi (admin dahil) zorla bu formata geçir?_mz=hsoft veya ?_mz=s6 gibi parametre varsa ve kullanıcı root ise → test formatını kullanauto değilse → o tercihi kullancorporate_account_id varsa ve o hesapta 50'den fazla kullanıcı varsa → otomatik MP3Neden? 50+ kişilik kurumsal hesapta herkes HLS dinlerse sunucu segment istekleriyle dolar. MP3 tek dosya olduğundan sunucu yükü çok daha az.
Eşik: MUZIBU_CORPORATE_MP3_THRESHOLD=50 (ENV'den ayarlanabilir)
| Cihaz | mz_device | Sonuç | Açıklama |
|---|---|---|---|
| Mobil | good | HLS TAM | RAM≥4GB + CPU≥4 + 4G → kaliteli müzik |
| Mobil | weak | MP3 128k | Zayıf telefon → MP3 128kbps (batarya dostu, CPU yükü yok) |
| Mobil | yok | MP3 128k | Cookie yok (ilk ziyaret, süresi dolmuş, JS kapalı) → güvenli MP3 |
| Tablet | good | HLS TAM | Güçlü tablet → tam HLS |
| Tablet | weak | MP3 128k | Zayıf tablet → MP3 128kbps |
v4 değişiklik: v3'te zayıf mobil → Soft HLS olarak değiştirilmişti. Ancak kullanıcı kararıyla geri alındı: zayıf telefon/tablet → MP3 128kbps. Cookie yoksa da MP3 128kbps (güvenli taraf). 64kbps MP3 sadece admin tarafından kullanıcıya atanabilir.
hls (full ABR, 4 seviye). Cookie kontrol edilmez.| Özellik | Soft Mode (hls_soft) | Level Lock (hls_32/64/128) |
|---|---|---|
| Kullanılan variant sayısı | 3 (varsayılan: ultralow+low+mid) | 1 (sadece seçilen) |
| ABR (otomatik geçiş) | EVET (3 seviye arası) | HAYIR (sabit) |
| Max kalite | 128 kbps (ENV'den ayarlanır) | Seçime bağlı (32/64/128) |
| İnternet kötüleşirse | 128→64→32'ye düşer (takılmaz) | Düşemez, takılabilir |
| Şifreleme | AES-128 (aynı key, farklı IV) | AES-128 (aynı key, farklı IV) |
| Token flag | userId.s | userId.u / .l / .m / .h |
| Kullanım senaryosu | İnternet dalgalı, bazen iyi bazen kötü | İnternet sürekli aynı hızda ama düşük |
Not: Soft Mode sadece admin ataması (hls_soft) veya kill switch (MUZIBU_AUDIO_FORCE=hls_soft) ile aktif olur. Otomatik karar zincirinde (Adım 3) mobil cihazlar artık Soft değil MP3 alıyor.
Dosya: user-manage-component.blade.php:184 — Kullanıcı düzenleme sayfasında:
Bu ayar users.audio_preference alanına yazılır. Sadece Muzibu tenant'ında (1001) görünür.
Mobil/Tablet tespiti jenssegers/agent kütüphanesi ile yapılır. UA hash'i 24 saat cache'lenir.
| Cihaz | mz_device | Format | Kalite | Açıklama |
|---|---|---|---|---|
| Mobil | good | HLS | 4 seviye ABR | Güçlü telefon → tam kalite HLS |
| Mobil | weak | MP3 | 128 kbps | Zayıf telefon → MP3 128kbps |
| Mobil | yok | MP3 | 128 kbps | Cookie yok → güvenli taraf: MP3 128kbps |
| Tablet | good | HLS | 4 seviye ABR | Güçlü tablet → tam HLS |
| Tablet | weak | MP3 | 128 kbps | Zayıf tablet → MP3 128kbps |
| PC | — | HLS | 4 seviye ABR | PC her zaman HLS (cookie kontrol edilmez) |
v3: Zayıf mobil → Soft HLS (3 seviye ABR, şifreli)
v4: Zayıf mobil → MP3 128kbps (tek dosya, CPU yükü yok)
Dosya: player-core.js:110-143 — Sayfa yüklendiğinde JS ile hesaplanır:
navigator.deviceMemorynavigator.hardwareConcurrencynavigator.connection.effectiveTypeEncryptCookies istisnasında: bootstrap/app.php:51
Tüm MUZIBU_ ile başlayan ENV değişkenleri tek blokta. Değişiklik sonrası: php artisan config:cache
| # | ENV Değişkeni | Değer | Açıklama |
|---|---|---|---|
| 1 | MUZIBU_DEFAULT_AUDIO_FORMAT | auto | Varsayılan format (auto/hls/mp3) |
| 2 | MUZIBU_AUDIO_FORCE | (boş) | Acil override — doldurursan HERKESİ zorlar |
| 3 | MUZIBU_HLS_TIMEOUT | 2 | HLS başarısız → MP3 fallback bekleme (sn) |
| 4 | MUZIBU_SOFT_PLAYER_VARIANTS | ultralow,low,mid | Soft modda izin verilen HLS kaliteleri |
| 5 | MUZIBU_CROSSFADE_DURATION | 7000 | Crossfade süresi (ms) — 0=kapalı |
| 6 | MUZIBU_SESSION_POLLING | 30000 | Session polling aralığı (ms) |
| 7 | MUZIBU_SESSION_TTL | 7200 | Redis session süresi (sn) |
| 8 | MUZIBU_CACHE_PREMIUM_TTL | 300 | Premium durum cache (sn) |
| 9 | MUZIBU_CACHE_SONG_TTL | 86400 | Şarkı cache süresi (sn = 24h) |
| 10 | MUZIBU_DEVICE_LIMIT | 1 | Eşzamanlı cihaz limiti |
| 11 | MUZIBU_CORPORATE_MP3_THRESHOLD | 50 | Kurumsal hesap MP3 eşiği AKTİF |
Herhangi bir acil durumda (HLS çöktü, sunucu yükü arttı, bug) tüm kullanıcıları tek satırla başka formata geçirebilirsin:
| Değer | Format | Etki |
|---|---|---|
| (boş) | — | Normal akış — karar zinciri çalışır |
| mp3_original | MP3 | Herkes orijinal MP3 dinler. HLS tamamen kapalı. |
| mp3_128 | MP3 | Herkes 128kbps MP3 dinler. |
| mp3_64 | MP3 | Herkes 64kbps MP3 dinler. En düşük bant genişliği. |
| hls | HLS | Herkes tam HLS dinler (4 seviye ABR). |
| hls_soft | SOFT | Herkes soft HLS dinler (varsayılan: ultralow+low+mid). |
URL'ye ?_mz=kod eklenerek root kullanıcı herhangi bir formatı test edebilir:
?_mz=s6
MP3 64kbps
?_mz=s12
MP3 128kbps (varsayılan)
?_mz=s0
MP3 Orijinal
?_mz=h3
HLS ultralow (32k kilitli)
?_mz=h6
HLS low (64k kilitli)
?_mz=h12
HLS mid (128k kilitli)
?_mz=h0
HLS high (orijinal kilitli)
?_mz=hsoft
HLS Soft Mode testi
Token Flag Sistemi: _mz parametresi backend'de signed URL'nin token kısmına gömülür. Örnek: token=5.s (userId=5, flag=s=soft). Flag'ler: s=soft, u=ultralow, l=low, m=mid, h=high. serveHls() bu flag'i okuyup master.m3u8'den ilgili varyantları filtreler.
Dosya: player-core.js — Konsol loglarında tespit edilen 3 hata düzeltildi:
Hata: Cannot read properties of null (reading 'trigger') — HLS.js dahili streamController henüz hazır değilken ABR kilidini açma girişimi.
Çözüm: unlockABR() fonksiyonuna guard eklendi:
Kök neden: currentLevel = -1 → immediateLevelSwitch → flushMainBuffer çağrılıyor ama media element null (destroyed veya henüz attach olmamış).
Hata: POST /api/muzibu/songs/{id}/track-end 404 — API route'ları domain-scoped (mztest.muzibu.com) ama JS relative URL kullanıyordu.
Çözüm: 5 fetch noktasında URL'ye window.location.origin prefix'i eklendi:
Etkilenen uç noktalar: track-start, track-hit, track-progress, track-end (fetch + sendBeacon)
Hata: HlsPool overflow: aktif=2, poolSize=2 — Pool boyutu 2 iken current + preload + next pattern'i 3 instance gerektiriyordu.
Çözüm: Pool boyutu 2 → 3'e çıkarıldı. Normal davranış olduğundan console.warn kaldırıldı.
Eski: config/config.php:55'te tanımlıydı ama resolveAudioFormat() içinde hiçbir yerde kontrol edilmiyordu. Ölü ayardı.
Yeni: Karar zincirinin Adım 2'sine eklendi. Kurumsal hesapta 50'den fazla kullanıcı varsa otomatik MP3'e geçiyor. try-catch ile korumalı (test ortamında kolon yoksa hata vermez).
v3: Zayıf mobil (mz_device=weak) → Soft HLS. hls_soft_mobile format türü eklenmişti.
v4: Zayıf mobil → MP3 128kbps. hls_soft_mobile tamamen kaldırıldı (kodda hiçbir referansı kalmadı).
Neden: Zayıf telefonlarda HLS decoder CPU yükü + batarya tüketimi. Cookie olmayan durumda güvenli taraf = MP3.
unlockABR TypeError, track-end 404, HlsPool overflow — tamamı düzeltildi. Detaylar Bölüm 12'de.
navigator.deviceMemory Safari'de desteklenmiyor → bu kriter her zaman 0. Sadece CPU + bağlantı kalır.
Safari'de güçlü bir iPhone bile weak çıkabilir (2 kriter yerine max 2 — eşik geçiyor ama marj az).
Etki: Safari'de weak çıkan güçlü telefonlar MP3 128kbps alır. Müzik kalitesinde kayıp var ama çalma sorunu yok.
is_soft ve corporate_id alanları debug'a eklendi. Debug bilgisi artık root kullanıcıya görsel overlay (sağ alt köşe, 5sn sonra kaybolur) olarak gösteriliyor.
v1 raporunda soft modda sadece 2 seviye (ultralow+low) gösteriliyordu. Gerçekte MUZIBU_SOFT_PLAYER_VARIANTS=ultralow,low,mid — 3 seviye. v2'de düzeltildi.
23 Şubat 2026 • Muzibu.com.tr
v4 — Güncel akış (MP3 mobil, player fix'ler) | v3: Soft HLS deneyimi | v2: Kapsamlı analiz | v1: İlk analiz