FFmpeg Audio Filtrelerinin Neden Olduğu Segment Bozulmaları
Bazı şarkılar HLS formatına dönüştürülürken tamamen bozuk dosyalar üretiliyor. Şarkı hiç başlamıyor, oynatıcı hemen hata veriyor.
fragParsingError: "Failed to find demuxer by probing fragment data" position_sec: 0 (şarkının başında)
Bu mesaj şunu söylüyor: "İndirdiğim dosyayı açamıyorum, içerik anlaşılmaz."
MP3 şarkınız = Mükemmel pizza tarifi
FFmpeg filtreleri = Tarifine ekstra baharatlar ekleme
Bazı pizzalara çok baharat ekleyince = Tamamen yenilmez hale geliyor
Tarayıcı = İlk lokmasını alıyor ve reddediyor
Ses kalitesini iyileştirmek için kullanılan filtreler (loudnorm, stereotools, equalizer) bazı şarkılarla uyumsuz.
Özellikle stereo genişletme (stereotools) mono veya dar stereo şarkılarda sesi tamamen bozuyor.
fragParsingError yazıyorHLS FATAL ERROR: {
song_id: 36102,
song: 'Everything Moves',
artist: 'Muzibu',
hls_path: 'muzibu/hls/36102',
errorType: 'mediaError',
errorDetails: 'fragParsingError',
errorFatal: true,
errorReason: 'Failed to find demuxer by probing fragment data',
position_sec: 0,
response: undefined,
url: undefined
}
FFmpeg Audio Filtreleri bazı ses dosyalarında corrupt audio frames üretiyor.
Sorunlu Kod:
Modules/Muzibu/App/Jobs/ConvertToHLSJob.php:116-122
$audioFilters = implode(',', [
'loudnorm=I=-16:TP=-1.5:LRA=11', // Loudness normalization
'stereotools=mlev=1.2', // ❌ SORUN BURADA!
'equalizer=f=100:t=q:w=1:g=1', // Bass boost +1dB
'equalizer=f=8000:t=q:w=1:g=-2', // Treble cut -2dB
'lowpass=f=14000' // 14kHz low-pass
]);
Stereo genişletme %120
Kombinasyon riski
LUFS bazlı normalize
Genelde sorunsuz, sadece bazı edge case'lerde hafif bozulma
Frekans filtreleme
Minimal risk, genelde sorunsuz
Demuxer: Konteyner formatını (TS) parse edip audio/video stream'lerini ayıran component
Hata: segment-000.ts dosyası indirildi ama içerik geçerli bir MPEG-TS formatında değil
Sebep: FFmpeg filtreleri corrupt frame üretince, segment dosyası bozuk binary data içeriyor
Sonuç: HLS.js dosyayı açamıyor, MEDIA_ERR_DECODE veriyor
| Özellik | DECODE Error (177s) | PARSING Error (0s) |
|---|---|---|
| Konum | 177. saniye (ortada) | 0. saniye (başlangıç) |
| Segment | segment-017.ts | segment-000.ts |
| Sonuç | Şarkı başlıyor, sonra duruyor | Şarkı hiç başlamıyor |
| Ciddiyet | Orta | Yüksek |
| Cloudflare | Cache corruption olabilir | FFmpeg encoding hatası |
Bozuk şarkıyı yeniden convert et
Song ID 36102 → Delete HLS files → Re-convert
Cloudflare cache'i temizle
Purge: muzibu/hls/36102/*
⚠️ Not: Yeniden convert edince yine bozuk olabilir (filtreler değişmediği sürece)
Yeni filtre konfigürasyonu:
$audioFilters = 'loudnorm=I=-16:TP=-1.5:LRA=11';
Artılar: %95+ şarkı sorunsuz, minimal risk
Eksiler: Stereo genişletme yok, EQ yok
Yeni filtre konfigürasyonu:
$audioFilters = implode(',', [
'loudnorm=I=-16:TP=-1.5:LRA=11',
'equalizer=f=100:t=q:w=1:g=1', // Bass boost
'lowpass=f=14000' // High freq cut
]);
Artılar: %90+ şarkı sorunsuz, EQ korunuyor
Eksiler: Stereo genişletme yok
Yeni filtre konfigürasyonu:
$audioFilters = implode(',', [
'loudnorm=I=-16:TP=-1.5:LRA=11',
'stereotools=mlev=1.05', // ⚠️ 1.2 → 1.05 (hafif)
'equalizer=f=100:t=q:w=1:g=1',
'lowpass=f=14000'
]);
Artılar: Tüm efektler korunuyor
Eksiler: %70-80 başarı, hala risk var
💡 Öneri: Seçenek 2 ile başlayın. Eğer kullanıcılar "stereo dar" derse, Seçenek 3'ü deneyin.
Bozuk şarkıları tespit et
FFmpeg error loglarını kontrol et fragParsingError veren song_id'leri listele
FFmpeg filtrelerini değiştir
ConvertToHLSJob.php → $audioFilters değişkeni
Tüm HLS dosyalarını sil
storage/tenant1001/app/public/muzibu/hls/* → DELETE (Veya sadece bozuk olanları)
Cloudflare cache'i temizle
Purge Everything (veya sadece *.ts ve *.m3u8)
Toplu HLS conversion
php artisan muzibu:bulk-convert-hls
Filtre değişikliği sonrası test adımları:
1. Song ID 36102'yi (Everything Moves) yeniden convert et
2. İlk 30 saniyeyi tarayıcıda çal → Hata var mı?
3. Aynı şarkıyı farklı tarayıcıda dene (cache test)
4. Console'da fragParsingError kontrolü
5. Başarılıysa → 10-20 rastgele şarkı daha test et
6. Tümü başarılıysa → Toplu conversion başlat
Sorun: FFmpeg audio filtreleri (özellikle stereotools) bazı şarkılarda tamamen bozuk HLS segment'leri üretiyor.
Sonuç: Şarkı hiç başlamıyor, 0. saniyede fragParsingError veriyor.
Çözüm: stereotools filtresini kaldır veya %5'e düşür. Sadece loudnorm kullanmak en güvenli.
Aksiyon: ConvertToHLSJob.php dosyasındaki $audioFilters değişkenini düzenle, bozuk şarkıları yeniden convert et, Cloudflare cache'i temizle.