HTTP Live Streaming (HLS) Protokolü Nasıl Çalışır?
HLS (HTTP Live Streaming), Apple tarafından geliştirilmiş ve IETF standardı (RFC 8216) haline gelmiş dünyanın en yaygın canlı ve isteğe bağlı medya dağıtım protokolüdür. Geleneksel RTSP veya RTMP gibi özel TCP soket protokollerinin aksine, HLS tamamen standart HTTP/HTTPS portları (80 ve 443) üzerinden çalışır. Bu sayede güvenlik duvarlarını (firewall) ve kurumsal proxy ağlarını sorunsuzca aşabilir.
Bir HLS akışı temelde iki ana bileşenden oluşur:
- Master Playlist (.m3u8): Yayıncının sunduğu farklı çözünürlükleri (1080p, 720p, 480p) ve bit hızlarını içeren ana dizindir. Oynatıcı, kullanıcının internet hızına göre bu dizinden en uygun akışı dinamik olarak seçer (Adaptive Bitrate Streaming - ABR).
- Media Playlist & Segment Dosyaları (.ts / fMP4): Genellikle 2 ila 10 saniye uzunluğundaki küçük video parçalarının (chunks) sıralandığı listedir. Oynatıcı bir sonraki segmenti sürekli talep ederek tarayıcının medya tampon belleğine (SourceBuffer) iletir.
Media Source Extensions (MSE) ve Hls.js Entegrasyonu
Masaüstü Chrome, Firefox ve Edge tarayıcıları yerel olarak .m3u8 URL'lerini HTML5 <video>etiketinde doğrudan çalıştıramaz (Safari hariç). Akipa Web Player, W3C standardı olan Media Source Extensions (MSE)API'sini ve endüstri standardı Hls.js kütüphanesini kullanarak bu sınırlamayı ortadan kaldırır.
Arka planda çalışan JavaScript motoru, HTTP üzerinden indirilen MPEG-2 Transport Stream (TS) segmentlerini tarayıcı belleğinde anlık olarak fMP4 (fragmented MP4) paketlerine dönüştürür (transmuxing). Bu sayede tarayıcınızın donanım hızlandırmalı video kartı (GPU) doğrudan devreye girer ve CPU yükü minimumda tutulur.
Yayın Akış Protokolleri ve Format Karşılaştırma Matrisi
| Özellik / Protokol | HLS (.m3u8) | MPEG-TS (.ts) | DASH (.mpd) |
|---|---|---|---|
| Segment Yapısı | Parçalı TS / fMP4 | Sürekli Ham Byte Akışı | XML Manifest + fMP4 |
| Adaptif Bit Hızı (ABR) | Tam Destek (Kademeli) | Desteklenmez (Sabit) | Tam Destek |
| Tarayıcı Uyumluluğu | %100 (MSE ile) | %100 (mpegts.js ile) | %100 (dash.js ile) |
| Gecikme Süresi (Latency) | 4 - 8 saniye (LL-HLS ile 2s) | 1 - 3 saniye (Düşük) | 3 - 6 saniye |
Sıkça Karşılaşılan Sorular ve Çözümler
M3U8 linkini oynatırken neden "CORS Hatası" veya siyah ekran alıyorum?
Modern tarayıcılar, HTTPS üzerinden çalışan güvenli bir web sayfasının şifrelenmemiş HTTP yayınlarına bağlanmasını (Mixed Content) ve Access-Control-Allow-Origin: * başlığı sunmayan kaynaklardan veri çekilmesini güvenlik sebebiyle engeller. Akipa Web Player, doğrudan bağlantı başarısız olduğunda akıllı opt-in proxy mekanizmasını devreye alarak bu kısıtlamayı şeffaf biçimde aşar. Daha fazla bilgi içinCORS Çözüm Rehberimizi inceleyin.
Yayın donduğunda sayfayı yenilemem gerekir mi?
Hayır. Oynatıcı çekirdeğimize entegre edilen State Machine, akıştaki ağ kopmalarını ve tampon boşalmalarını anında tespit eder. 1s, 3s ve 5s kademeli gecikmelerle yayın sunucusuyla yeniden el sıkışarak bağlantıyı kullanıcı müdahalesi olmadan otomatik olarak tazeler.