PC HLS Optimizasyonları (✓) + Safari iOS Sorunu (⏳)
23 Mart 2026 • v3 (24 Mart 2026 güncellemesi)
✅ HLS Optimizasyonları (P2-10/11/12) tamamlandı ve çalışıyor.
✅ Bunny Migration tamamlandı: 33,112 HLS + MP3 dosyası yüklendi.
🔙 Safari iOS Denemeleri geri alındı — blob URL ve cross-origin cookie denemeleri başarısız oldu.
⏳ Önerilen çözüm: Safari iOS için MP3 fallback (henüz uygulanmadı).
📍 Şu an: BUNNY_STORAGE_MODE=local — Tüm müzikler kendi sunucudan çalıyor.
🐰 İlgili: Bunny.net Hesap Dokümantasyonu • Birleşik Plan (Güncel)
Safari iOS'ta Bunny CDN ile HLS çalıştırmak için çeşitli yaklaşımlar denendi. Hiçbiri başarılı olmadı ve tüm değişiklikler geri alındı.
Git: eb0acb8ff 🔙 Safari iOS denemelerini geri al + Bunny local moda Git: 83d1043bd 🍎 Safari iOS HLS Denemeleri (HATALI - GERİ ALINDI)
1. Blob URL + Data URI Key
Playlist'i blob URL olarak oluşturup, key'i data URI ile inline etmeye çalıştık.
Safari native HLS player blob:// desteklemiyor → "NotSupportedError"
2. Cross-Origin Cookie
withCredentials=true ile cookie göndermeye çalıştık. Safari iOS cross-origin isteklerde 3rd party cookie'leri engelliyor.
3. HLS.js Override
CachingKeyLoader ile key'i cache'den sunmaya çalıştık.
Safari iOS'ta Hls.isSupported() = false — HLS.js çalışmıyor.
Safari iOS: ├── HLS.js çalışmıyor (native player kullanıyor) ├── Native player, playlist farklı domain'deyken... │ └── ...key için farklı domain'e istek atarken cookie göndermiyor ├── Playlist: https://audio.muzibu.com/hls/... (Bunny) ├── Key: https://www.muzibu.com/hls-key/... (Bizim sunucu) └── Sonuç: 401 Unauthorized (session yok → yetkisiz)
P2-10, P2-11, P2-12 inline optimizasyonları tamamlandı ve PC/Mac'te çalışıyor. Şarkı başlatma süresi 4 HTTP isteğinden 1'e düşürüldü.
master.m3u8 içeriği API yanıtına gömülü.
AES-128 şifreleme anahtarı base64 olarak gömülü.
Tüm variant playlist'ler (32k, 64k, 128k, orig) gömülü.
Safari iOS'ta HLS yerine MP3 formatında müzik sunarak sorunu aşabiliriz. MP3 dosyaları zaten Bunny'ye yüklendi (33,103 x 64kbps + 33,099 x 128kbps).
Safari iOS Tespiti (Frontend)
var isSafariIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) &&
/Safari/.test(navigator.userAgent) &&
!navigator.userAgent.includes('CriOS');
force_mp3 Parametresi (Frontend)
if (isSafariIOS) {
streamUrl += '?force_mp3=1';
}
Backend force_mp3 Desteği
// SongStreamController.php
if ($request->has('force_mp3')) {
return response()->json([
'mp3_url' => $signedUrlService->generateBunnyMp3Url($song),
'format' => 'mp3'
]);
}
| Chrome/Firefox/Edge | HLS from audio.muzibu.com |
| Safari macOS | HLS from audio.muzibu.com + local key |
| Safari iOS | MP3 from audio.muzibu.com (fallback) |
| Android | HLS from audio.muzibu.com |
BUNNY_STORAGE_ENABLED=true
BUNNY_STORAGE_CDN_URL=https://audio.muzibu.com
BUNNY_STORAGE_MODE=local ← Şu an LOCAL
BUNNY_FALLBACK_TO_LOCAL=true
eb0acb8ff 23 Mar 05:XX 🔙 Safari iOS denemelerini geri al + Bunny local moda 83d1043bd 23 Mar 05:XX 🍎 Safari iOS HLS Denemeleri (HATALI - GERİ ALINDI) f2ef4bcbd 22 Mar 22:56 🐰 Bunny Hybrid Serving + Redis Tracking b489ec4fa 22 Mar 22:41 🐰 Bunny Migration optimizasyonları 55ff250f8 21 Mar 00:27 🐰 Bunny Storage Zone entegrasyonu 6b7340e26 01 Mar 21:19 🚀 P2-10/11/12 inline + HLS iyileştirmeleri