HLS Nedir? Segmentler, Oynatma Listeleri ve Gecikme Rehberi
Kısa cevap: HLS (HTTP Live Streaming), Apple tarafından geliştirilen ve videoyu küçük parçalara bölerek sıradan web sunucularından ileten bir yayın protokolüdür. Oynatıcı önce bir .m3u8 oynatma listesini indirir, sonra listedeki parçaları sırayla çeker ve bağlantı hızına göre kaliteyi değiştirebilir. Teknik tanımı RFC 8216'dadır. Alpa Player HLS yayınlarını oynatır.
Öne çıkanlar
- HLS, videoyu birkaç saniyelik parçalara bölüp bunları sıradan HTTP üzerinden ileten bir yayın protokolüdür.
- Bir .m3u8 oynatma listesi parçaların sırasını ve adreslerini verir; oynatıcı parçaları art arda indirip oynatır.
- Aynı içeriğin birden çok kalitesi sunulabilir; oynatıcı bağlantı hızına göre bunlar arasında geçer.
- Parçalı yapı nedeniyle canlı HLS yayınlarında gecikme genellikle onlarca saniyeye çıkar; kısa parçalar ve Low-Latency HLS bunu azaltır.
- HLS bir protokoldür ve yasaldır; izlediğiniz içeriği kullanma hakkınız olup olmadığı ayrı bir konudur.
HLS nedir sorusuyla çoğu kişi, bir yayın adresinin ".m3u8" ile bittiğini gördüğünde karşılaşır. HLS, bugün canlı ve isteğe bağlı videonun en yaygın iletim yollarından biridir. Bu yazıda HLS'nin ne olduğunu, videoyu nasıl parçalara böldüğünü, oynatma listelerinin görevini ve canlı yayında gecikmenin nereden geldiğini anlatıyoruz.
Anlatılanlar her oynatıcı için geçerlidir. https://alpayazilim.com tarafından geliştirilen ücretsiz medya oynatıcı Alpa Player da HLS yayınlarını oynatır.
HLS nedir?
HLS (HTTP Live Streaming), videoyu küçük parçalara bölüp bu parçaları sıradan HTTP sunucularından ileten, Apple tarafından geliştirilmiş bir yayın protokolüdür. Adında "Live" geçse de yalnızca canlı yayın için değildir; bitmiş videolar (VOD) için de aynı biçimde kullanılır.
Apple, protokolü 2009'da kullanıma sundu. Teknik belgesi RFC 8216 olarak Ağustos 2017'de yayımlandı; belge, yazarlarının da belirttiği gibi bir bilgilendirme (informational) belgesidir, yani resmî bir İnternet standardı değildir. Buna rağmen Apple cihazlarından akıllı TV'lere kadar çok geniş bir yelpazede kullanılır.
HLS'nin güçlü yanı, özel bir yayın sunucusu gerektirmemesidir. Parçalar sıradan dosyalar gibi bir web sunucusunda ya da içerik dağıtım ağında (CDN) durur; oynatıcı bunları normal web istekleriyle indirir. Güvenlik duvarları ve proxy'ler de bu trafiği olağan web trafiği olarak görür.
HLS nasıl çalışır?
HLS'de video önce parçalara bölünür, parçalar bir oynatma listesinde sıralanır ve oynatıcı bu listeyi okuyarak parçaları art arda indirir. Süreç genel olarak şu adımlardan oluşur:
- Kaynak video kodlanır; genellikle aynı içeriğin birkaç farklı kalitesi (düşük, orta, yüksek) üretilir.
- Her kalite, birkaç saniyelik parçalara (segmentlere) bölünür.
- Parçaların sırasını yazan medya oynatma listeleri ve kaliteleri sıralayan bir ana oynatma listesi hazırlanır. Bunların hepsi .m3u8 dosyasıdır.
- Dosyalar bir web sunucusuna ya da CDN'e yüklenir.
- Oynatıcı ana listeyi indirir, bağlantısına uygun bir kalite seçer ve o kalitenin medya listesini okur.
- Oynatıcı parçaları sırayla indirip oynatır; canlı yayında listeyi periyodik olarak yenileyip yeni parçaları yakalar.
Parçalar, RFC 8216'ya göre MPEG-2 Transport Stream (.ts) ya da parçalı MPEG-4 (fMP4, genellikle .m4s) biçiminde olabilir. Hangi codec'in kullanıldığı, oynatıcının ve cihazın desteğine bağlıdır; ayrıntı için H.264, H.265 ve AV1 karşılaştırmasına bakabilirsiniz.
HLS'de segment, ana liste ve medya listesi nedir?
HLS'nin üç temel kavramı vardır: video parçası olan segment, parçaları sıralayan medya listesi ve kalite seçeneklerini tanıtan ana liste. Hepsi birbirine .m3u8 adresleriyle bağlanır.
| Kavram | Ne işe yarar? | Örnek |
|---|---|---|
| Segment | Videonun birkaç saniyelik parçası | segment0.ts, segment1.ts |
| Medya listesi (media playlist) | Bir kalitenin parçalarını sırayla ve sürelerle sıralar | 720p/playlist.m3u8 |
| Ana liste (master playlist) | Mevcut kaliteleri, bant genişliklerini ve çözünürlükleri tanıtır | index.m3u8 |
| Hedef süre | En uzun parçanın saniye cinsinden süresi (EXT-X-TARGETDURATION) | 6 |
Aşağıda, çalışan bir canlı yayının medya listesine benzeyen sade bir örnek var. Listenin sonunda #EXT-X-ENDLIST bulunmaması, yayının sürdüğünü ve sunucunun listeye yeni parçalar eklemeye devam edeceğini gösterir.
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:6.000,
https://live.example.com/stream/seg2680.ts
#EXTINF:6.000,
https://live.example.com/stream/seg2681.ts
#EXTINF:6.000,
https://live.example.com/stream/seg2682.ts
Ana listenin nasıl göründüğünü ve etiketlerin tek tek ne yaptığını M3U8 nedir yazısında örnek satırlarla anlattık. Kökeni olan düz liste biçimi için M3U dosyası nedir yazısına bakabilirsiniz.
HLS'de kalite neden kendiliğinden değişir?
HLS, aynı içeriği birden çok kalitede sunar ve oynatıcı bağlantı hızına göre bu kaliteler arasında geçiş yapar; buna adaptif bit hızı denir. Ana listedeki her kalite bir BANDWIDTH değeri taşır. Oynatıcı indirme hızını ölçer, tamponu izler ve yetebilecek en yüksek kaliteyi seçer.
Bağlantı yavaşlarsa oynatıcı bir sonraki parçayı daha düşük kaliteden ister; hız toparlanınca yukarı çıkar. Geçişler parça sınırlarında olduğu için yayın durmadan devam eder. Mekanizmanın ayrıntılarını adaptif bit hızı yazısında bulabilirsiniz. Her kalite için ne kadar internet hızı gerektiği ise video izlemek için internet hızı yazısında tablo halindedir.
HLS yayınlarında gecikme neden yüksektir?
HLS canlı yayınlarında gecikme, videonun parçalara bölünmesinden ve oynatıcının bu parçalardan belirli bir miktarını tamponlamasından doğar. RFC 8216, oynatıcıların listede yer alan son parçalardan üç hedef süre kadar geriden başlamasını önerir; aynı belge tipik bir hedef sürenin 10 saniye olduğunu belirtir. Parçalar uzunsa gecikme onlarca saniyeye çıkabilir.
| Hedef süre | Kuralın getirdiği asgari gecikme | Not |
|---|---|---|
| 10 saniye | Yaklaşık 30 saniye | RFC'de "tipik" olarak anılan değer |
| 6 saniye | Yaklaşık 18 saniye | Daha kısa parça, daha çok istek |
| 2 saniye | Yaklaşık 6 saniye | Sunucu ve CDN yükü artar |
Gerçek gecikme bunun üzerine kodlama, CDN ve ağ gecikmelerini de ekler. Daha kısa parçalar gecikmeyi azaltır ama istek sayısını ve sunucu yükünü artırır. Apple bu soruna Low-Latency HLS ile yanıt verdi: parçaları daha da küçük parçalara bölen ve listeyi yenileme isteğini sunucuda bekleten bir uzantı, gecikmeyi birkaç saniyeye indirmeyi hedefler. Buna karşılık, maç ya da konser izlerken birkaç saniye geriden gelmek çoğu zaman sorun yaratmaz; bu fark yalnızca etkileşimli yayınlarda önemlidir.
HLS hangi cihaz ve oynatıcılarda çalışır?
HLS, Apple cihazlarında yerleşik olarak, diğer platformlarda ise oynatıcı yazılımları aracılığıyla çalışır. Neredeyse her modern platformda bir HLS oynatma yolu vardır.
- Apple cihazları ve Safari: HLS'yi doğrudan oynatır.
- Android: ExoPlayer (Media3) kitaplığı HLS'yi destekler.
- Diğer tarayıcılar: Genellikle hls.js gibi bir kitaplıkla oynatır.
- Akıllı TV'ler: Birçok TV platformu HLS'yi destekler.
Alpa Player; Android telefon ve tablet, Android TV ve Google TV, Samsung TV (Tizen 2020 ve sonrası), LG TV (webOS 2020 ve sonrası) ve Windows'ta HLS yayınlarını, ayrıca M3U ve M3U8 oynatma listelerini, MP4, MKV, RTSP ve daha fazlasını oynatır. Android'de varsayılan motor ExoPlayer (Media3) tabanlıdır; VLC motoru ve harici oynatıcı da seçilebilir. Alpa Player'ı ücretsiz indirin.
Uygulamada hazır kanal, film, dizi ya da liste yoktur; Alpa Player bir yayın hizmeti değildir. Adres eklemek isterseniz açık lisanslı test yayınları güvenli bir başlangıçtır.
HLS, MP4 dosyası ve diğer yayın yöntemlerinden nasıl ayrılır?
HLS, videoyu tek parça olarak değil parçalar halinde ve kalite seçenekleriyle ilettiği için basit bir MP4 indirmesinden ayrılır. Aşağıdaki tablo üç yaygın yöntemi karşılaştırır.
| Özellik | Düz MP4 dosyası | HLS | RTSP |
|---|---|---|---|
| İletim | Tek dosya, HTTP | Çok sayıda parça, HTTP | Özel protokol, sürekli akış |
| Kalite değişimi | Yok | Parçalar arasında kendiliğinden | Genellikle yok |
| Canlı yayın | Uygun değil | Uygun | Uygun, düşük gecikmeli |
| Gecikme | Yok (kayıtlı) | Birkaç ile onlarca saniye | Genellikle düşük |
| Tipik kullanım | Tek video indirme | Genel yayın ve VOD | IP kameralar |
HLS'nin en yaygın rakibi MPEG-DASH'tir; ikisinin farkını MPEG-DASH ve HLS farkı yazısında karşılaştırdık. Kameralarda kullanılan RTSP için RTSP nedir yazısına bakabilirsiniz.
HLS yayını oynatılmıyorsa ne yapmalısınız?
HLS yayını oynatılmıyorsa sorunun nedeni çoğunlukla adreste, parçalarda ya da ağda aranır. Sırayla şunlara bakın:
- Adresi bir metin düzenleyicide ya da tarayıcıda açıp listenin gerçekten yüklendiğini doğrulayın.
- Listede görünen parça adreslerinden birini deneyin; süresi dolmuş ya da kapalı olabilir.
- Yayını başka bir oynatma motorunda açın. Alpa Player'da Android için motor değiştirme seçeneği vardır; ExoPlayer ve VLC farkları yazısı yardımcı olur.
- Görüntü takılıyorsa video donma çözümlerindeki ağ adımlarını izleyin.
HLS ve yasal kullanım
HLS yasal bir teknolojidir; yasal sorun, yayının taşıdığı içeriğin kullanım hakkından doğar. HLS parçaları AES-128 gibi yöntemlerle şifrelenebilir, ancak şifreleme içeriği kullanma hakkınız olduğu anlamına gelmez. Çoğu ülkede olduğu gibi Türkiye'de de izinsiz ya da lisanssız içerik yayımlamak ve izlemek yasa dışıdır; genel olarak 5846 sayılı Fikir ve Sanat Eserleri Kanunu ile 6112 sayılı Kanun anılabilir. Bu yazı hukuki tavsiye değildir.
Alpa Player'da eklenen adres ve şifreler cihazın güvenli deposunda AES-256 ile şifreli tutulur, ekranda gösterilmez ve Alpa Yazılım'a gönderilmez. Siteden liste yüklemesini kullanıcı kendisi yapar; sorumluluk kullanıcıdadır ve yüklemeler IP ile MAC adresiyle kayıt altına alınır. Ayrıntılar yasal uyarı sayfasındadır. Oynatıcılara genel bakış için medya oynatıcı nedir yazısı iyi bir başlangıçtır.
Sık sorulan sorular
HLS ne demek?
HLS, "HTTP Live Streaming" sözcüklerinin kısaltmasıdır. Apple tarafından geliştirilen bu yayın protokolü videoyu küçük parçalara böler ve bunları sıradan HTTP üzerinden iletir. Oynatıcı, parçaların sırasını yazan bir .m3u8 listesini okuyarak videoyu parça parça indirir ve oynatır.
HLS ile M3U8 aynı şey mi?
Hayır. HLS bir yayın protokolüdür; M3U8 ise bu protokolün kullandığı oynatma listesi dosyasıdır. HLS'nin bir parçası olan .m3u8 dosyası, videonun parçalarını ve kalite seçeneklerini tarif eder. Ayrıntıları M3U8 nedir yazısında bulabilirsiniz.
HLS yayınında gecikme neden olur?
Video birkaç saniyelik parçalara bölünür ve oynatıcı güvenli oynatma için birkaç parçayı önceden indirir. RFC 8216, canlı listede sondan üç hedef süre kadar geriden başlamayı önerir. Parçalar ne kadar uzunsa gecikme o kadar büyür. Low-Latency HLS bu süreyi kısaltmayı hedefler.
HLS yalnızca Apple cihazlarında mı çalışır?
Hayır. HLS Apple tarafından geliştirildi ama bugün Android, Windows, akıllı TV'ler ve tarayıcılar dahil geniş bir yelpazede oynatılır. Android'de ExoPlayer (Media3) HLS'yi destekler; birçok tarayıcı hls.js gibi kitaplıklar kullanır. Alpa Player, desteklediği platformlarda HLS yayınlarını oynatır.
HLS için özel bir sunucu gerekir mi?
Hayır. HLS parçaları ve .m3u8 dosyaları sıradan dosyalardır; herhangi bir web sunucusu ya da CDN üzerinden HTTP veya HTTPS ile sunulabilir. Bu özellik, protokolün yaygınlaşmasının en önemli nedenlerinden biridir.
HLS yayınları nasıl izlenir?
HLS destekleyen bir medya oynatıcı kurun ve yayın adresini ekleyin. Alpa Player'da adresi Kaynak Ekle ekranından oynatma listesi adresi ya da tek yayın bağlantısı olarak eklersiniz. Yalnızca kullanma hakkınızın olduğu kaynakları izleyin.