Safari iOS + Bunny CDN Raporu

PC HLS Optimizasyonları (✓) + Safari iOS Sorunu (⏳)

23 Mart 2026 • v3 (24 Mart 2026 güncellemesi)

📢 24 Mart 2026 Durumu

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ümantasyonuBirleşik Plan (Güncel)

🔙 Geri Alınan Safari iOS Denemeleri

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.

⚠️ Temel Sorun

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)

✅ PC HLS Optimizasyonları (Çalışıyor)

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ü.

P2-10: Master Inline

master.m3u8 içeriği API yanıtına gömülü.

P2-11: Key Inline

AES-128 şifreleme anahtarı base64 olarak gömülü.

P2-12: Playlists Inline

Tüm variant playlist'ler (32k, 64k, 128k, orig) gömülü.

Çalışma Durumu

  • ✅ Chrome / Firefox / Edge → HLS çalışıyor (HLS.js + inline cache)
  • ✅ Safari macOS → HLS çalışıyor (native player)
  • ✅ Android Chrome → HLS çalışıyor (HLS.js)
  • ⚠️ Safari iOS → HLS çalışıyor (sadece local modda)

💡 Önerilen Çözüm: Safari iOS MP3 Fallback

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).

Uygulama Adımları

  1. 1

    Safari iOS Tespiti (Frontend)

    var isSafariIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) &&
                   /Safari/.test(navigator.userAgent) &&
                   !navigator.userAgent.includes('CriOS');
  2. 2

    force_mp3 Parametresi (Frontend)

    if (isSafariIOS) {
        streamUrl += '?force_mp3=1';
    }
  3. 3

    Backend force_mp3 Desteği

    // SongStreamController.php
    if ($request->has('force_mp3')) {
        return response()->json([
            'mp3_url' => $signedUrlService->generateBunnyMp3Url($song),
            'format' => 'mp3'
        ]);
    }

Beklenen Davranış (Hybrid Mode)

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

📍 Mevcut Durum (24 Mart 2026)

.env Ayarları

BUNNY_STORAGE_ENABLED=true
BUNNY_STORAGE_CDN_URL=https://audio.muzibu.com
BUNNY_STORAGE_MODE=local      ← Şu an LOCAL
BUNNY_FALLBACK_TO_LOCAL=true

Bunny Storage

  • ✅ 33,112 HLS klasörü yüklü
  • ✅ 33,112 MP3 original yüklü
  • ✅ 33,103 MP3 64kbps yüklü
  • ✅ 33,099 MP3 128kbps yüklü

Git Geçmişi

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