HLS & MP3 Variant Analizi

Tüm Şarkıların Ses Format Durumu - tenant_muzibu_1528d0

Basit Anlatım (Herkes Icin)

Sistemde toplam 511 sarki var. Her sarki farkli kalitelerde dinlenebilmesi icin cesitli formatlara donusturuluyor:

HLS (Adaptive Streaming): Sarkilar parcalara bolunup sifreleniyor. Dinleyicinin internet hizina gore kalite otomatik ayarlaniyor. 4 seviye var: ultralow (cok dusuk), low (dusuk), mid (orta), high (yuksek/orijinal).

MP3 Fallback: HLS desteklemeyen cihazlar icin yedek MP3 dosyalari. 128kbps (iyi kalite) ve 64kbps (dusuk kalite) olmak uzere 2 seviye.

Neden Onemli?

  • - Yavas interneti olan dinleyiciler dusuk kalitede kesintisiz dinleyebilir
  • - Hizli interneti olanlar en iyi kaliteyi alir
  • - MP3 fallback sayesinde eski cihazlar da calabilir
  • - 109 sarki henuz sadece yuksek kalitede, dusuk kalite secenekleri eklenmemis
  • - 274 sarki icin MP3 64k (dusuk kalite yedek) uretilmemis

Genel Durum

511
Toplam Sarki
450
Aktif Sarki
61
Pasif Sarki
34455-34965
Song ID Araligi

HLS Variant Durumu

High (Orijinal Kalite) 511 / 511
Ultralow (32k AAC, mono) 402 / 511
Low (64k AAC, mono) 402 / 511
Mid (128k AAC, stereo) 402 / 511
master.m3u8 (ABR Index) 402 / 511
AES-128 Sifreleme (enc.bin + enc.keyinfo) 511 / 511
402
Tam HLS (4 variant + master)
ID: 34455 - 34691 + 34800 arasi (kismen)
109
Eksik Variant (Sadece High)
ID: 34692 - 34801 arasi
Tumu aktif sarki!
Ornek HLS Klasor Yapisi
muzibu/hls/34455/
├── enc.bin          (16 byte AES key)
├── enc.keyinfo      (FFmpeg key bilgisi)
├── master.m3u8      (ABR index)
├── playlist.m3u8    (high/orijinal)
├── segment-000.ts   (~140 KB, 4sn)
├── segment-001.ts
├── ...
├── ultralow/
│   ├── enc.keyinfo
│   ├── playlist.m3u8
│   └── segment-*.ts (~18 KB)
├── low/
│   ├── enc.keyinfo
│   ├── playlist.m3u8
│   └── segment-*.ts (~35 KB)
└── mid/
    ├── enc.keyinfo
    ├── playlist.m3u8
    └── segment-*.ts (~69 KB)

MP3 Variant Durumu

Orijinal MP3 (song_*.mp3) 511 / 511
Konum: storage/tenant1001/.../muzibu/songs/song_*.mp3
MP3 128k (loudnorm + es esitleme) 402 / 511
Konum: .../songs/mp3_128/{song_id}.mp3
MP3 64k (mono, dusuk kalite) 237 / 511
Konum: .../songs/mp3_64/{song_id}.mp3
MP3 Variant Bilgisi
Format Bitrate Sample Kanal Filtre
Orijinal Degisken Degisken Stereo Yok
MP3 128k 128 kbps 44.1 kHz Stereo 2-pass loudnorm
MP3 64k 64 kbps 22.05 kHz Mono 2-pass loudnorm

Sarki Gruplari (Komple Tablo)

Grup Sayi HLS High Ultralow Low Mid Master MP3 128k MP3 64k Sifreleme ID Araligi
Tam Komple 237 34455-34691
HLS Full + MP3 128k 165 34692-34965 (kismen)
Sadece HLS High 109 34692-34801
TOPLAM 511

Onemli Not

109 eksik variant sarkinin tamami aktif. Bu sarkilar su anda sadece yuksek kalitede (high) sunuluyor. Dusuk bant genislikli kullanicilar icin adaptive bitrate calismayacaktir.

Disk Kullanimi

5.2 GB
HLS Klasorleri
muzibu/hls/
3.5 GB
Orijinal MP3
muzibu/songs/ (toplam)
1.1 GB
MP3 128k
songs/mp3_128/
332 MB
MP3 64k
songs/mp3_64/
Toplam muzik deposu: ~10.1 GB | Segment boyutu: 4 saniye | Sifreleme: AES-128

Segment Boyut Karsilastirmasi (Ornek: Song #34455)

Ultralow (32k)
567 KB
31 segment | ~18 KB/seg
Low (64k)
1.06 MB
31 segment | ~35 KB/seg
Mid (128k)
2.10 MB
31 segment | ~69 KB/seg
High (orijinal)
4.11 MB
31 segment | ~136 KB/seg

Teknik Detaylar (Gelistiriciler Icin)

Veritabani Tablolari

muzibu_songs
song_id (PK) | album_id | genre_id
file_path (varchar 255) → "song_xxx.mp3"
hls_path (varchar 500) → "muzibu/hls/{id}" veya "tenant1001/..."
encryption_key (varchar 32) → su an hepsi NULL
encryption_iv (varchar 32) → su an hepsi NULL
media_id → Spatie media FK (cover gorsel)
is_active | play_count | duration | color_hash
media (Spatie MediaLibrary)
collection: 'hero' (187 kayit) → sarki/album gorseli
collection: 'audio' → 0 kayit (kullanilmiyor)
Not
HLS/MP3 variant bilgileri veritabaninda tutulmuyor, dosya sisteminde klasor yapisi ile yonetiliyor. Ayri bir hls_variants veya mp3_variants tablosu yok.

Dosya Sistemi Yapisi

storage/tenant1001/app/public/muzibu/
├── songs/
│   ├── song_698203301fad4.mp3   (orijinal, 511 dosya)
│   ├── mp3_128/
│   │   └── {song_id}.mp3       (402 dosya, ~1.1 GB)
│   └── mp3_64/
│       └── {song_id}.mp3       (237 dosya, ~332 MB)
└── hls/
    └── {song_id}/              (511 klasor, ~5.2 GB)
        ├── enc.bin             (AES-128 key, 16 byte)
        ├── enc.keyinfo         (FFmpeg key bilgisi)
        ├── master.m3u8         (ABR index - 402 sarkida)
        ├── playlist.m3u8       (high variant)
        ├── segment-*.ts        (sifrelenmis parcalar)
        ├── ultralow/           (32k - 402 sarkida)
        ├── low/                (64k - 402 sarkida)
        └── mid/                (128k - 402 sarkida)

Ilgili Dosyalar

Modules/Muzibu/App/Models/Song.php
- hls_path, file_path, encryption_key alanlari
- needsHlsConversion(), getHlsUrl(), getAudioUrl()
app/Services/Muzibu/HLSService.php
- convertToHLS(), generateVariant(), generateMp3()
- VARIANTS sabiti: ultralow(32k), low(64k), mid(128k)
- buildTwoPassFilter() → 2-pass loudnorm ses esitleme
Modules/Muzibu/App/Console/Commands/AddHlsVariantsCommand.php
- hls:add-variants komutu
- --quality, --mp3-128, --mp3-64, --re-encode-high
Modules/Muzibu/App/Jobs/ConvertToHLSJob.php
- Tekil sarki HLS donusturme job'i

hls_path Format Tutarsizligi

Veritabanindaki hls_path alaninda 3 farkli format kullaniliyor:

Format Sayi Ornek
muzibu/hls/{id} 237 muzibu/hls/34455
muzibu/hls/{id}/playlist.m3u8 165 muzibu/hls/34800/playlist.m3u8
tenant1001/muzibu/hls/{id}/playlist.m3u8 109 tenant1001/muzibu/hls/34692/playlist.m3u8

Dikkat

3 farkli format, kodda getHlsDir() gibi metodlarda ekstra fallback mantigi gerektiriyor. Idealde tek formata normalize edilmeli.

Eksik Islem Ozeti

1
109 Sarki - HLS Variant Eksik (ultralow + low + mid + master)
ID araligi: 34692 - 34801 | Tamami aktif sarki
Komut: php artisan tenants:run hls:add-variants --tenants=1001 --quality=all
2
109 Sarki - MP3 128k Eksik
Ayni 109 sarki (34692-34801)
Komut: php artisan tenants:run hls:add-variants --tenants=1001 --quality=all --mp3-128
3
274 Sarki - MP3 64k Eksik
ID araligi: 34692 - 34965 (109 + 165 sarki)
Komut: php artisan tenants:run hls:add-variants --tenants=1001 --quality=all --mp3-64
4
hls_path Normalizasyonu (Opsiyonel)
3 farkli format → tek format (muzibu/hls/{id}/playlist.m3u8)
Bu islem DB guncelleme gerektirir, zorunlu degil ama temizlik icin tavsiye edilir.
5
encryption_key DB Alani Bos (Opsiyonel)
Tum sarkiler enc.bin dosyasinda sifreli ama DB'deki encryption_key kolonu hep NULL.
enc.bin dosyasindan okunuyor, fonksiyonel sorun yok, ancak veri tutarliligi icin doldurulabilir.

Tek Komutla Tum Eksikleri Tamamla

# 109 eksik sarki icin: HLS variant'lar + MP3 128k + MP3 64k
php artisan tenants:run hls:add-variants --tenants=1001 --quality=all --mp3-128 --mp3-64
# Sadece MP3 64k (274 sarkinin tamami icin)
php artisan tenants:run hls:add-variants --tenants=1001 --quality=all --mp3-64
# Dry-run (onizleme, degisiklik yapmaz)
php artisan tenants:run hls:add-variants --tenants=1001 --quality=all --mp3-128 --mp3-64 --dry-run
27 Subat 2026 • Muzibu.com.tr