22 Subat / v1 / v2 / v3 / v4 / v5 (guncel)

Soft Mode & Format Sistemi

Kim neyi dinleyecek? Sistem nasil karar verecek? Her seyin basit anlatimi.

22 Subat 2026 v5 mztest.muzibu.com Cihaz Kapasitesi Tespiti

1 Numarali Oncelik: Donma Sifir

Ses kalitesinden daha onemli. Muzik hic duraksamadan, hic takilmadan, kesintisiz akmali.

1.
Donma sifir
2.
Ses kalitesi
3.
Bant genisligi

Muzibu Kimlere Hizmet Veriyor?

Bu bir bireysel muzik uygulamasi degil. B2B isletme platformu.

Restoran & Kafe
Tavan hoparloru, amfi sistemi
Otel & Lobi
Zon bazli ses sistemi
Magazalar & AVM
Profesyonel ses altyapisi

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":

Hafiza (RAM)
4GB veya ustu = iyi
Islemci (CPU)
4 cekirdek veya ustu = iyi
Baglanti Kalitesi
4G baglanti = iyi

Puanlama: Her kriter 1 puan. 3 uzerinden 2 veya daha fazla = "Iyi cihaz"

2-3 puan → Iyi Cihaz

HLS verilir. Adaptif kalite, sifreli, daha iyi ses.

Ornek: iPad Pro (8GB RAM, 8 cekirdek, 4G) = 3/3

0-1 puan → Zayif Cihaz

MP3 128k verilir. Donma sifir, hafif, stabil.

Ornek: Eski Android (2GB RAM, 2 cekirdek, 3G) = 0/3

Teknik Detaylar (Gelistiriciler Icin)

1. Frontend: Kapasite Olcumu (player-core.js)
// 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'
2. Backend: Cookie Oku (SongStreamController.php)
// 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
}
3. Cookie Sifreleme Istisnasi (bootstrap/app.php)
// Frontend JS yazdigi icin Laravel sifreleyemez
$middleware->encryptCookies(except: ['mz_device']);
Guvenlik Notu

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
Hedef
PC / Laptop + Iyi Mobil

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
Hedef
Eski/ucuz telefon & tablet
128k yoksa → orijinal MP3 (fallback)

Karar Agaci: 4 Adim

Cihaz tipi + kapasitesi birlikte degerlendirilir.

1

Admin bu kisiye format atamis mi?

Sikayet gelirse admin kisi bazli degistirir. Toplu zorlama yok.

AKTIF
HLS Zorla MP3 Zorla Otomatik → adim 2'ye gec
2

Mobil veya Tablet mi?

Sunucu User-Agent basligini okur.

AKTIF
Mobil / Tablet

→ adim 3'e gec (kapasite kontrolu)

PC / Laptop

→ adim 4'e gec (direkt HLS)

3

Cihaz kapasitesi ne? YENI

mz_device cookie'si okunur (frontend JS olctu)

AKTIF
mz_device = good

≥4GB RAM + ≥4 cekirdek + 4G

→ HLS (adaptif)
mz_device = weak

Dusuk RAM/CPU veya 3G/2G

→ MP3 128k
128k yoksa → orijinal MP3
4

PC → HLS (Adaptif Bitrate)

Internet iyiyse orijinal kalite. Kotu internet olursa ABR otomatik dusurur (ultralow'a kadar). Donma yok.

AKTIF

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

Admin: Otomatik

Cogu kullanici bu modda. Sistem cihaz tipi + kapasitesine gore karar verir.

Admin: HLS Zorla

"Ses kotu" sikayeti gelirse ve isletmenin guclu cihazi varsa admin bunu secer. Kapasite kontrolu atlanir.

Admin: MP3 Zorla

"Donuyor" sikayeti gelirse admin bunu secer. Her yerde MP3 128k, donma sifir.


Gercek Hayat Senaryolari

iPad Pro
+
Ses Sistemi
HLS Original
YENI

Otel lobisi: iPad Pro (8GB RAM, 8 cekirdek). Eskiden MP3 128k aliyordu, simdi HLS Original → profesyonel ses sistemi farkini duyar.

Eski Tablet
+
Ses Sistemi
MP3 128k

Kafe: Eski Android tablet (2GB RAM, 2 cekirdek). MP3 128k = sifir donma. Ortam gurultusu kalite farkini maskeliyor.

PC
+
Iyi Internet
HLS Original

Ofis/lobi: PC guclu, internet stabil. En iyi deneyim — orijinal kalite, sifreli, donma yok.

PC
+
Kotu Internet
HLS ultralow → low

HLS orijinal baslar ama ABR interneti olcer → 4sn icinde kaliteyi dusurur. Ses kesilmez, kalite duser. Donma yok.

Sikayet Geldi
Admin Mudahale

"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

Otomatik (Onerilen)
Otomatik — Cihaz turu + kapasitesine gore. Iyi mobil → HLS, zayif mobil → MP3 128k, PC → HLS.
HLS Zorla — Her cihazda HLS. "Ses kotu" sikayeti + guclu cihazi varsa bunu sec.
MP3 — Her cihazda MP3 128k. "Donuyor" sikayeti icin bunu sec.
"Donuyor" derlerse

→ MP3 sec. O kisi her cihazdan 128k dinler. Donma sifir.

"Ses kotu" derlerse

→ HLS Zorla sec. Her cihazlarinda HLS alirlar.


Fallback Zinciri

Bir dosya bulunamazsa sistem otomatik orijinal MP3'e duser. Muzik asla kesilmez.

Zayif Mobil/Tablet Fallback
MP3 128k 128k dosyasi yoksa Orijinal MP3 (320k)
Iyi Mobil/Tablet + PC Fallback
HLS Original kotu internet HLS ultralow (32k)
HLS Tamamen Basarisiz
HLS hata player fallback Orijinal MP3 (320k)

Her senaryoda orijinal MP3 son savunma hatti. Muzik asla kesilmez.


HLS Segment Suresi

Tum Kaliteler 4 Saniye

ultralow
4 sn
16 KB/parca
low
4 sn
32 KB/parca
mid
4 sn
64 KB/parca
original
4 sn
~100 KB/parca
Internet dusunce 4sn icinde kalite duser → donma yok
ConvertToHLSJob.php guncellendi: hls_time 6 → 4

Yeni Sarki Yuklenince

1
HLS Original + ultralow + low + mid
4 kalite seviyesi, AES-128 sifreli, 4sn segmentler
OTOMATIK
2
MP3 128k (Soft Mode)
Zayif mobil/tablet icin. 128k yoksa orijinal MP3'e fallback
OTOMATIK
3
master.m3u8
4 HLS kalite seviyesini listeleyen ana dosya
OTOMATIK

Admin sadece MP3 yukler, gerisini sistem halleder.


Versiyon Gecmisi

v1 Frontend JS cihaz tespiti + MP3 128k
v2 Sunucu User-Agent + MP3 320k (isletme ses sistemi)
v3 MP3 128k (donma sifir onceligi) + kurumsal esik
v4 Kurumsal esik kaldirildi — sadece 3 adim (Admin > Cihaz > HLS)
v5 (guncel) Cihaz kapasitesi tespiti — iyi mobil/tablet artik HLS aliyor

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

resolveAudioFormat() — 4 adim: Admin > Cihaz Tipi > Kapasite > HLS
audio_preference migration + Model + Admin panel dropdown
User-Agent tespiti (jenssegers/agent) — Mobil/Tablet ayiklama
MP3 128k serve + orijinal MP3 fallback
Kurumsal esik kaldirildi (kisi bazli admin mudahalesi)
ConvertToHLSJob: hls_time 6 → 4
Yeni sarki: 4 HLS variant + MP3 128k otomatik uretim
"high" → "original" isimlendirme (HLSService.php)
Cihaz kapasitesi tespiti (v5) — Frontend JS + Cookie + Backend
mz_device cookie → EncryptCookies istisnasi (bootstrap/app.php)

Kalan Isler

KOD "high" → "original" tum dosyalarda tamamla

SongStreamController, player-core.js, performance-debug.js, AddHlsVariantsCommand

BATCH 5 test sarkisini 4sn + "original" ile yeniden encode

Mevcut high segmentler 6sn → 4sn olarak yeniden olustur + master.m3u8 guncelle

BUG HLS keyLoadError cozumu

HLS.js "after key load, decryptdata unset or changed" hatasi. Arastirma devam ediyor.