v2 — Kapsamlı

Soft Mode & Audio Karar Sistemi

Muzibu Ses Platformu — Tüm Akış, Tüm Parametreler

23 Şubat 2026 — 12 Bölüm

İçindekiler

1. Basit Anlatım (Herkes İçin)

Muzibu'da müzik iki farklı yöntemle gönderilebilir:

BÜTÜN (MP3)

Şarkı tek seferde, komple indirilir. Tıpkı bir fotoğraf indirmek gibi — ya gelir ya gelmez.

Kalite: 64 kbps, 128 kbps veya orijinal

PARÇALI (HLS)

Ş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

SOFT (HLS Lite)

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).

2. Tüm Format Seçenekleri — Detaylı Tablo

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.
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.

3. Normal HLS vs Soft HLS — Ne Değişiyor?

Normal HLS (hls_auto)

high orijinal kalite ~256 kbps
mid 128 kbps
low 64 kbps
ultralow 32 kbps

4 seviye arası otomatik geçiş (ABR)

Soft HLS (hls_soft) — Varsayılan ENV

high kaldırıldı
mid 128 kbps aktif
low 64 kbps aktif
ultralow 32 kbps aktif

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.

4. Audio Format Karar Zinciri (resolveAudioFormat)

Dosya: SongStreamController.php:1041 — Her stream isteğinde bu zincir çalışır:

Adım -1: Acil Override (Kill Switch)
MUZIBU_AUDIO_FORCE doluysa → herkesi (admin dahil) zorla bu formata geçir
$forceFormat = config('muzibu.audio.force_format');
if ($forceFormat) → mp3_* = 'mp3', hls_* = 'hls' // Zincir BURADA biter
Adım 0: Root Test Override (?_mz=...)
URL'de ?_mz=hsoft veya ?_mz=s6 gibi parametre varsa ve kullanıcı root ise → test formatını kullan
Adım 1: Admin Kullanıcı Tercihi (audio_preference)
Admin panelden kullanıcıya atanan tercih. auto değilse → o tercihi kullan
Değerler: mp3_64, mp3_128, mp3_auto, hls_32, hls_64, hls_128, hls_auto, hls_soft
Adım 2: Mobil/Tablet Tespiti
jenssegers/agent ile User-Agent parse. Mobil veya tablet ise:
$deviceCap = request()->cookie('mz_device', 'weak');
return $deviceCap === 'good' ? 'hls' : 'mp3';

Dikkat: Mobilde mz_device cookie yoksa veya weak ise → MP3 128kbps. Soft mode otomatik devreye GİRMİYOR!

Adım 3: PC → HLS
Masaüstü/Laptop → her zaman hls (full ABR, 4 seviye)

5. Soft Mode vs Level Lock — Fark Ne?

Ö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

6. Admin Panel — Format Tercihi Dropdown

Dosya: user-manage-component.blade.php:184 — Kullanıcı düzenleme sayfasında:

─── Genel ───
  auto — 0 — Varsayılan (cihaz+internet otomatik)
─── Bütün (MP3) ───
  mp3_64 — 1. Seviye — En sorunlu müşteri
  mp3_128 — 2. Seviye — Sorunlu müşteri
  mp3_auto — Auto — Normal internet, normal cihaz
─── Parçalı (HLS) ───
  hls_32 — 1. Seviye — İnternet çok sorunlu (32k kilitli)
  hls_64 — 2. Seviye — İnternet sorunlu (64k kilitli)
  hls_soft — 1+2+3. Seviye — Soft — İnternet sorunlu ama cihaz iyi
  hls_128 — 3. Seviye — İyi cihaz, normal internet (128k kilitli)
  hls_auto — 0 — Auto — İyi cihaz, iyi internet (4 seviye ABR)

Bu ayar users.audio_preference alanına yazılır. Sadece Muzibu tenant'ında (1001) görünür.

7. Mobilde Ne Oluyor? (Detaylı Analiz)

Mobil/Tablet tespiti jenssegers/agent kütüphanesi ile yapılır. UA hash'i 24 saat cache'lenir.

Cihaz mz_device Format Kalite Soft? Açıklama
Mobil weak MP3 128 kbps Hayır RAM<4GB veya CPU<4 core
Mobil good HLS 4 seviye ABR Hayır Güçlü telefon → tam HLS (soft değil!)
Mobil yok MP3 128 kbps Hayır Cookie yoksa varsayılan = weak
Tablet weak MP3 128 kbps Hayır Zayıf tablet
Tablet good HLS 4 seviye ABR Hayır Güçlü tablet → tam HLS
PC HLS 4 seviye ABR Hayır PC her zaman HLS (cookie kontrol edilmez)
ÖNEMLİ BULGU

Mobilde soft mode hiçbir zaman otomatik devreye girmiyor!

Güçlü mobil (good) → tam HLS alıyor, soft değil. Zayıf mobil → direkt MP3. Arası yok.

Soft mode sadece admin panelden audio_preference=hls_soft atanırsa veya MUZIBU_AUDIO_FORCE=hls_soft ile zorlanırsa devreye girer.

8. mz_device Cookie Sistemi

Dosya: player-core.js:110-143 — Sayfa yüklendiğinde JS ile hesaplanır:

Kriter 1: RAM

navigator.deviceMemory
≥ 4 GB → +1 puan
< 4 GB → 0 puan
Sadece Chrome/Edge/Opera destekler

Kriter 2: CPU

navigator.hardwareConcurrency
≥ 4 çekirdek → +1 puan
< 4 çekirdek → 0 puan

Kriter 3: Bağlantı

navigator.connection.effectiveType
4g → +1 puan
3g/2g/slow-2g → 0 puan
Network Info API gerekli
// Karar
const capability = score >= 2 ? 'good' : 'weak';
// Cookie yaz — 24 saat TTL
document.cookie = 'mz_device=' + capability + '; expires=24h; path=/; SameSite=Lax';
good (2+ puan)
Backend HLS verir (mobilde). ABR ile 4 seviye arası geçiş. Şifreli, adaptif.
weak (0-1 puan)
Backend MP3 128kbps verir (mobilde). Tek dosya, şifresiz, sabit kalite.
Not: Cookie sadece bir kere hesaplanır (sayfa yüklendiğinde). Zaten varsa tekrar hesaplanmaz. 24 saat sonra süresi dolunca yeniden hesaplanır. EncryptCookies istisnasında: bootstrap/app.php:51

9. ENV Ayarları (11 Parametre)

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 KULLANILMIYOR

10. Kill Switch — Acil Override (MUZIBU_AUDIO_FORCE)

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).
# Örnek: HLS sorun çıkardı, herkesi MP3'e geçir
MUZIBU_AUDIO_FORCE=mp3_original
php artisan config:cache
# Sorun düzeldi, normal akışa dön
MUZIBU_AUDIO_FORCE=
php artisan config:cache

11. Test Parametreleri (_mz) — Sadece Root

URL'ye ?_mz=kod eklenerek root kullanıcı herhangi bir formatı test edebilir:

MP3 Testleri (s = soft/mp3)

?_mz=s6 MP3 64kbps
?_mz=s12 MP3 128kbps (varsayılan)
?_mz=s0 MP3 Orijinal

HLS Testleri (h = hls)

?_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.

12. Tespit Edilen Sorunlar & Eksikler

SORUN 1 MUZIBU_CORPORATE_MP3_THRESHOLD kullanılmıyor

config/config.php:55'te tanımlı, .env'de 50 değeri var. Ama resolveAudioFormat() içinde hiçbir yerde corporate_mp3_threshold kontrolü yapılmıyor.

Beklenen davranış: Kurumsal hesapta 50'den fazla kullanıcı varsa otomatik MP3'e geç.

Gerçek davranış: Hiçbir etki yok. Ölü ayar.

EKSİK 2 Mobilde soft mode otomatik gelmiyor

Güçlü mobil (mz_device=good) → tam HLS (4 seviye) alıyor. Soft mode sadece admin'den atanırsa devreye girer.

Öneri: Güçlü mobil cihazlara soft HLS vermek bant genişliğini azaltır ve takılma riskini düşürür. İsteğe bağlı.

EKSİK 3 Safari'de mz_device cookie sorunu

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).

BİLGİ 4 v1 raporunda soft = "ultralow+low" yazıyordu

v1 raporunda soft modda sadece 2 seviye (ultralow+low) gösteriliyor. Ama gerçekte MUZIBU_SOFT_PLAYER_VARIANTS=ultralow,low,mid3 seviye. v2'de düzeltildi.

BİLGİ 5 _debug_format'ta soft_player bilgisi eksik

Root kullanıcıya gösterilen debug bilgisinde (_debug_format) soft_player anahtarı var ama backend'de bu alana değer atanmıyor. Player'da df.soft_player ? ' [SOFT]' : '' kontrolü yapılıyor ama her zaman boş.

Dosya: SongStreamController.php:102-116 — formatDebug'a 'is_soft' => $isSoft eklenmeli.

23 Şubat 2026 • Muzibu.com.tr

v2 — Kapsamlı analiz (12 bölüm) | v1: İlk analiz