1 Numarali Oncelik: Donma Sifir
Ses kalitesinden daha onemli. Muzik hic duraksamadan, hic takilmadan, kesintisiz akmali.
Muzibu Kimlere Hizmet Veriyor?
Bu bir bireysel muzik uygulamasi degil. B2B isletme platformu.
Kritik Gercek: Farkli Cihaz Kaliteleri + Ses Sistemi + Degisken Internet
Cihazlar
- Eski Android tabletler
- Ucuz telefonlar (2GB RAM)
- iPad Pro, Samsung Galaxy Tab
- Yeni iPhone/Android
Ses Sistemi
- Profesyonel hoparlorler
- Amfi + kolon
- Kalite fark edilir
Internet
- WiFi degisken olabilir
- 4G/5G her yerde yok
- Donma = musteri kaybi
Sonuc: Cihaz turu + kapasitesi belirler. Iyi mobil → HLS, Zayif mobil → MP3 128k, PC → HLS.
Sorun olursa admin kisi bazli mudahale eder. Toplu zorlama yok.
Cihaz Kapasitesi Tespiti v5 YENI
v4'te tum mobil/tabletler MP3 128k aliyordu. Ama iPad Pro ile ucuz tablet ayni kefeye konmamali. v5 bunu cozer.
Basit Anlatim (Herkes Icin)
Sayfa acilinca tarayici sessizce cihazi "tartiyor":
Puanlama: Her kriter 1 puan. 3 uzerinden 2 veya daha fazla = "Iyi cihaz"
HLS verilir. Adaptif kalite, sifreli, daha iyi ses.
Ornek: iPad Pro (8GB RAM, 8 cekirdek, 4G) = 3/3
MP3 128k verilir. Donma sifir, hafif, stabil.
Ornek: Eski Android (2GB RAM, 2 cekirdek, 3G) = 0/3
Teknik Detaylar (Gelistiriciler Icin)
// Sayfa acilinca IIFE calisir
navigator.deviceMemory >= 4 → +1 puan (Chrome/Edge/Opera)
navigator.hardwareConcurrency >= 4 → +1 puan (tum tarayicilar)
navigator.connection.effectiveType === '4g' → +1 puan
// Sonuc: cookie'ye yaz (24 saat gecerli)
document.cookie = 'mz_device=good' // veya 'weak'
// resolveAudioFormat() icinde:
if ($agent->isMobile() || $agent->isTablet()) {
$deviceCap = request()->cookie('mz_device', 'weak');
if ($deviceCap === 'good') return 'hls'; // Iyi mobil → HLS
return 'mp3'; // Zayif → MP3 128k
}
// Frontend JS yazdigi icin Laravel sifreleyemez
$middleware->encryptCookies(except: ['mz_device']);
Cookie manipule edilebilir mi? Teorik olarak evet. Ama bu B2B platform — kullanicilar isletmeler, cookie degistirme motivasyonu yok. Ayrica "good" yazmak = HLS almak = daha fazla bant genisligi kullanmak. Zarar bize degil kendilerine.
Iki Farkli Dinleme Sekli
Sarkilar iki sekilde dinlenebilir. Isletme hangisini dinledigini bilmez, sunucu sessizce karar verir.
HLS
PC + Iyi Mobil/Tablet
- Internete gore kalite otomatik ayarlanir
- 4 seviye: ultralow → low → mid → original
- Sifreli — kopyalanamaz (AES-128)
- Kotu internet → ABR otomatik dusurur, donma yok
MP3 128k
Zayif Mobil & Tablet (Soft Mode)
- Tek dosya — basit, hafif, stabil
- Islemci neredeyse hic calismaz
- HLS kutuphanesi yuklenmez (-140 KB)
- En kotu internette bile donmaz
Karar Agaci: 4 Adim
Cihaz tipi + kapasitesi birlikte degerlendirilir.
Admin bu kisiye format atamis mi?
Sikayet gelirse admin kisi bazli degistirir. Toplu zorlama yok.
Mobil veya Tablet mi?
Sunucu User-Agent basligini okur.
→ adim 3'e gec (kapasite kontrolu)
→ adim 4'e gec (direkt HLS)
Cihaz kapasitesi ne? YENI
mz_device cookie'si okunur (frontend JS olctu)
≥4GB RAM + ≥4 cekirdek + 4G
Dusuk RAM/CPU veya 3G/2G
PC → HLS (Adaptif Bitrate)
Internet iyiyse orijinal kalite. Kotu internet olursa ABR otomatik dusurur (ultralow'a kadar). Donma yok.
v4'ten fark: v4'te tum mobil/tabletler MP3 128k aliyordu. v5'te iyi mobil cihazlar (iPad Pro, yeni Galaxy vs.) HLS aliyor — daha iyi ses kalitesi, donma riski yok (ABR var).
Tam Cizelge: 16 Kombinasyon
Her admin ayari + cihaz turu + cihaz kapasitesi + internet kombinasyonunda ne olur:
Admin: Otomatik (varsayilan — cogu kullanici)
| # | Cihaz | Kapasite | Internet | Sonuc | Fallback |
|---|---|---|---|---|---|
| 1 | PC | — | Iyi | HLS Original | — |
| 2 | PC | — | Kotu | HLS (ABR dusurur) | ultralow'a kadar |
| 3 | Mobil | Iyi | Iyi | HLS Original | — |
| 4 | Mobil | Iyi | Kotu | HLS (ABR dusurur) | ultralow'a kadar |
| 5 | Mobil | Zayif | Iyi | MP3 128k | 128k yoksa → Orijinal MP3 |
| 6 | Mobil | Zayif | Kotu | MP3 128k | 128k yoksa → Orijinal MP3 |
Admin: HLS Zorla ("ses kotu" sikayeti + guclu cihaz varsa)
| # | Cihaz | Kapasite | Internet | Sonuc | Not |
|---|---|---|---|---|---|
| 7 | PC | — | Her turlu | HLS | Admin karari, cihaz kontrolu yok |
| 8 | Mobil | — | Her turlu | HLS | Zayif cihazda risk! |
Admin: MP3 Zorla ("donuyor" sikayeti icin)
| # | Cihaz | Kapasite | Internet | Sonuc | Fallback |
|---|---|---|---|---|---|
| 9 | PC | — | Her turlu | MP3 128k | 128k yoksa → Orijinal MP3 |
| 10 | Mobil | — | Her turlu | MP3 128k | 128k yoksa → Orijinal MP3 |
Okuma Kilavuzu
Cogu kullanici bu modda. Sistem cihaz tipi + kapasitesine gore karar verir.
"Ses kotu" sikayeti gelirse ve isletmenin guclu cihazi varsa admin bunu secer. Kapasite kontrolu atlanir.
"Donuyor" sikayeti gelirse admin bunu secer. Her yerde MP3 128k, donma sifir.
Gercek Hayat Senaryolari
Otel lobisi: iPad Pro (8GB RAM, 8 cekirdek). Eskiden MP3 128k aliyordu, simdi HLS Original → profesyonel ses sistemi farkini duyar.
Kafe: Eski Android tablet (2GB RAM, 2 cekirdek). MP3 128k = sifir donma. Ortam gurultusu kalite farkini maskeliyor.
Ofis/lobi: PC guclu, internet stabil. En iyi deneyim — orijinal kalite, sifreli, donma yok.
HLS orijinal baslar ama ABR interneti olcer → 4sn icinde kaliteyi dusurur. Ses kesilmez, kalite duser. Donma yok.
"Ses kotu" → Admin o kisiye HLS Zorla atar. "Donuyor" → Admin o kisiye MP3 atar. Kisi bazli, toplu degil.
Admin Paneli
Bir isletme aradi. Admin ne yapacak?
Kullanici Duzenle Sayfasi
→ MP3 sec. O kisi her cihazdan 128k dinler. Donma sifir.
→ HLS Zorla sec. Her cihazlarinda HLS alirlar.
Fallback Zinciri
Bir dosya bulunamazsa sistem otomatik orijinal MP3'e duser. Muzik asla kesilmez.
Her senaryoda orijinal MP3 son savunma hatti. Muzik asla kesilmez.
HLS Segment Suresi
Tum Kaliteler 4 Saniye
Yeni Sarki Yuklenince
Admin sadece MP3 yukler, gerisini sistem halleder.
Versiyon Gecmisi
Frontend JS cihaz olcer (RAM + CPU + baglanti) → cookie'ye yazar → backend okur. Iyi mobil = HLS (adaptif, daha iyi ses). Zayif mobil = MP3 128k (donma sifir). PC = her zaman HLS. Tum fallback'lar orijinal MP3'e duser.
Mevcut Durum
Tamamlanan Isler
Kalan Isler
SongStreamController, player-core.js, performance-debug.js, AddHlsVariantsCommand
Mevcut high segmentler 6sn → 4sn olarak yeniden olustur + master.m3u8 guncelle
HLS.js "after key load, decryptdata unset or changed" hatasi. Arastirma devam ediyor.