Streaming Protokolleri ve Karşılaştırmaları- Avantajlar ve Dezavantajlar

Streaming Protokolleri, medya verilerinin bir kaynaktan başka bir kaynağa transferindeki kuralları ve yordamları belirleyen standartlardır. Günümüzde RTMPRTP/RTSPHLSMPEG-DASHHDSSRT ve WebRTC protokolleri sıklıkla kullanılmaktadır. Bu yazımızda hem streaming protokollerinin temellerini hem de bu protokolleri detaylıca inceleyeceğiz.

Protokol, verilerin bir iletişim sisteminden diğerine nasıl gittiğini düzenleyen bir dizi kurallar topluluğudur. İnternetin temeli olan TCP/IP ve OSI katmanlarının her birinde çalışan onlarca farklı protokol vardır ve bunlar bir protokol yığını oluşturmak için üst üste yerleştirilmiştir. Bu şekilde, her katmandaki protokoller belirli bir işleve odaklanabilir ve birbirleriyle işbirliği yapabilir. En alt katman bir temel görevi görür ve her ek katman karmaşıklık katar.

Bu örnek resimde olduğu gibi her katman kendi protokollerine sahiptir ve her protokole katmanının işleyişini baz alarak çalışır. Birazdan göreceğimiz Streaming Protokollerini de katman olarak inceleyecek ve kıyaslamasını yapacağız.

1. Streaming Protokolü Nedir?

Protokolün ne demek olduğunu ve her katmanda farklı bir protokol çalıştığını öğrendikten sonra şimdi sıra Streaming yani akış protokollerine geldi.

Streaming protokolü, canlı veya kayıtlı bir videoyu veya sesi oynatmak istediğinizde ilgili akışı kaynağından alarak internet üzerinden size ulaştıran yöntemdir. Temel olarak bir streaming protokolü, bir cihazdan diğerine içeriğin “parçalarını” göndermek için belirli bir yöntem tanımlar. Ayrıca, bu parçaları öbür tarafta oynanabilir içeriğe “yeniden birleştirme” yöntemini de tanımlar.

Streaming protokollerinin neler olduğuna geçmeden önce bu protokolün temellerini biraz daha iyi anlamamız gerekiyor. Bunu ise üç başlık ile yapacağız.

1.1 Streaming Temelleri: TCP ve UDP

Kullanıcı Datagram Protokolü (UDP) ve İletim Kontrol Protokolü (TCP), transport (taşıma) katmanında bulunan protokollerdir ve internetin temel bileşenlerindendir. Streaming için kullanılan protokoller bunların üzerinde yer alır ve bu her akış protokolü bu iki seçenekten birisini kullanarak görevini yerine getirir. UDP ve TCP kalite ve hız açısından farklılık gösterir, bu yüzden daha yakından bakmaya değer.

UDP ve TCP arasındaki temel fark, TCP’nin veri aktarılırken üç yönlü bir el sıkışma gerektirdiğine bağlıdır. Başlatıcı (istemci), alıcıdan (sunucu) bir bağlantı başlatmasını ister, alıcı yanıt verir ve başlatıcı yanıtı onaylar ve her iki uç arasında bir oturum sürdürür. Bu nedenle, TCP oldukça güvenilirdir ve paket kaybı ve sıralama için kullanılabilir. UDP ise el sıkışma gerektirmeden başlar. Herhangi bir bant genişliği kısıtlamasına bakılmaksızın verileri aktarır, daha hızlı ve riskli hale getirir. UDP yeniden iletimi, paket sıralaması ve hata kontrolünü desteklemediğinden, bir ağ aksaklığının yoldaki verileri bozma potansiyeli vardır.

Özetle; TCP güvenlidir ve paketlerin karşıya ulaşıp ulaşmadığını kontrol eder. Ulaşmayan paketleri tekrar gönderir. 

UDP ise TCP ye göre daha hızlıdır ama güvenli değildir. Karşıya paketi gönderir ama paketin iletilip iletilmediğini umursamamaz. 

Her bir Streaming (akış) protokolünün TCP mi yoksa UDP mi tercih ettiğini teker teker ilerleyen başlıklarda inceleyeceğiz.

1.2 Streaming Protokolü ve Codec Farkı

Gerçek zamanlı aktarım protokolü yani streaming protoklü “codec” kavramından oldukça farklıdır. Codec “compressor/decompressor” anlamına gelir ve bu iki terimin baş harflerinden oluşur. Codec bileşeni, video dosyalarını daha küçük yapmak için kullanılan bir yöntemdir.

Ham video, sırayla hızlı bir şekilde oynatılan birçok hareketsiz görüntüden oluşur (genellikle saniyede 30 kare hızında). Şimdi bu 1 saniyelik görüntüyü elde etmek için arka arkaya sıralanan fotoğrafların her birinin yüksek MP değerlerine sahip olduğunu düşünün. Uzun bir videoda ne kadar da alan kaplayacaktır değil mi!

Çözüm, çok önemli olmayan verileri akıllıca atmak için matematiksel algoritmalar kullanan sıkıştırmadır. Örneğin, videonun bir köşesi siyahsa ve birkaç saniye siyah kalırsa, tek tek piksel verilerini atabilir ve bunun yerine bir referans ekleyebilirsiniz.

Özetle, Sıkıştırma standartları (codec), akıştan (streaming) ayrı olarak bulunur. Codec medyanızın boyutunu küçültmek için sıkıştırma işlemi yaparken Streaming protokolleri medyanızı iletmekle meşguldür. Ayrıca akış olmayan ortamda da sıkıştırma kullanılabilir. Ancak, belirli akış protokolleri yalnızca belirli kodekleri destekler. Bunu protokolleri incelerken belirteceğiz.

1.3 Streaming Protokolü ve Taşıma Formatı Farkı

Kafa karışıklığının bir başka kaynağı da taşıma formatıdır (transport format). Taşıma formatı, video aktarımı için kullanılan “container” veya diğer adıyla “packet” kavramından oluşur. Bir container biçimi genellikle sıkıştırılmış video, sıkıştırılmış ses ve altyazılar, zamanlama bilgileri vb. gibi meta veriler içerir. Bu veriler ise yine bir akış protokolü aracılığıyla iletilir. Taşıma Formatı, içeriğin akış olarak ayrı ayrı veri yığınlarında nasıl saklanacağını tanımlar. Video akışı için yaygın taşıma formatları veya containerler arasında MP4 (fragments) ve MPEG-TS örnek verilebilir.

2. Streaming Protokolleri Nelerdir?

Streaming (akış) protokolünün mantığını anladıktan sonra artık kullanılan akış protokollerini önce kategorilendirerek ardından özelliklerini ve kullanım yerlerini anlatmaya başlayabiliriz. Bunun için ilk önce akış protokollerini kategorilendirelim:

1- Geleneksel Streaming Protokolleri

  • RTMP (Real-Time Messaging Protocol)
  • RTP (Real-Time Transport Protocol)
  • RTSP (Real-Time Streaming Protocol)

2- HTTP Tabanlı Streaming Protokolleri

  • Apple HLS (HTTP Live Streaming)
  • MPEG-DASH (Moving Picture Expert Group Dynamic Adaptive Streaming over HTTP)
  • Microsoft Smooth Streaming
  • Adobe HDS (HTTP Dynamic Streaming)

3- Yeni Teknolojiler

  • SRT (Secure Reliable Transport)
  • WebRTC (Web Real-Time Communications)

Şimdi ise tüm protokolleri tek tek incelemeye başlayabiliriz.

2.1 Geleneksel Streaming Protokolleri

RTSP ve RTMP gibi geleneksel akış protokolleri düşük gecikmeli akışı destekler. Ancak tüm uç noktalarda (ör. İOS cihazları) desteklenmez. Bunlar, özel bir medya sunucusundan küçük bir kitleye akış için en iyi sonucu verir.

Yukarıda gösterildiği gibi, RTMP, videoyu yaklaşık beş saniyelik bir gecikmeyle kablo yayınıyla neredeyse aynı hızda iletir. RTSP / RTP ise yaklaşık iki saniyeye yakın bir gecikme hızıyla daha hızlıdır. Bu protokoller, yerel indirme veya önbellekleme yerine veriyi bir yangın hortumu yaklaşımı kullanarak ileterek elde eder. Ancak çok az oyuncu bu protokolleri desteklediğinden, büyük ölçekte mükemmel görüntüleme deneyimleri için optimize edilmemiştir. Birçok yayıncı, RTMP gibi durum bilgisi olan bir protokol kullanarak canlı akışları medya sunucusuna aktarmayı ve ardından çoklu aygıt dağıtımı için HTTP tabanlı bir teknolojiye dönüştürmeyi seçer.

2.1.1 Adobe RTMP

Adobe, özel bir akış sunucusu ve Adobe Flash Player arasında ses ve video verilerinin iletimi için RTMP protokolünü piyasaya sürmüştür. Güvenilir ve düşük gecikmeli olan RTMP protokolü canlı akış için yeterince iyi seviyede çalışmaktadır. Ancak Adobe’nin 2020 de Flash geliştirmelerini durduracağını duyurması ve neredeyse tüm modern tarayıcıların artık Flash desteklemeyeceğini açıklamasının ardından RTMP defteri kapanmış sayılır.

Flash’ın kullanım ömrü dolmuş olsa da, video üretiminde RTMP kullanımı için aynı şey söylenemez. RTMP kodlayıcıları istemciler tarafından son bulmasına rağmen halen birçok içerik üreticisi RTMP kullanımına devam etmektedir.

Kimler Kullanmalı: RTMP, çok düşük gecikmeli akışlar sağlayan bir akış protokolüdür. Ancak, Flash eklentisinin oynatılmasını gerektirdiğinden, önermiyoruz. Yine de bir üstte dediğimiz gibi ilk nokta da kullanabilirsiniz.

  • Audio Codecs: AAC, AAC-LC, HE-AAC+ v1 & v2, MP3, Speex, Opus, Vorbis
  • Video Codecs: H.264, VP8, VP6, Sorenson Spark®, Screen Video v1 & v2
  • Uyumluluk: Çok az destekleniyor (Flash Player, Adobe AIR, RTMP-uyumlu oynatıcılar)
  • Avantajları: Düşük geçikme ve tamponlamaya (buffering) gerek duyulmaması
  • Dezavantajları: Kalite veya ölçeklenebilirlik için optimize edilmemiştir
  • Gecikme: ~5 saniye
  • Varyasyonlar: RTMPT (tunneled through HTTP), RTMPE (encrypted), RTMPTE (tunneled and encrypted), RTMPS (encrypted over SSL), RTMFP (travels over UDP instead of TCP)

2.1.2 RTSP/RTP

RTMP gibi RTSP / RTP de çoklu cihaz dağıtımının aksine video üretimi için kullanılan ve durum bilgisi olan bir protokoldür. RTMP, son kullanıcıların duraklatma ve oynatma özellikleri aracılığıyla medya sunucularına komut vermesini sağlayan bir sunum katmanı protokolü olsa da, RTP, söz konusu verileri taşımak için kullanılan bir aktarım protokolüdür. Taşıma katmanında yer alır ve UDP ile birlikte kullanılır.

Android ve iOS cihazlarda öntanımlı bir RTSP uyumlu oynatıcı bulunmaz. RTSP yayınını oynatabilmek için başka prokollerin yardımı gereklidir.

Kimler Kullanmalı: RTSP, düşük gecikmeli akışı desteklemek üzere tasarlanmıştır ve IP kamera akışları (örneğin güvenlik kameraları), IoT cihazları (örn. Dizüstü bilgisayar kontrollü drone) ve mobil SDK’lar gibi akış kullanım durumları için iyi bir seçim olabilir. Bununla birlikte, önemli bir dezavantaj, RTSP için sınırlı yerel tarayıcı desteğinin olmasıdır.

  • Audio Codecs: AAC, AAC-LC, HE-AAC+ v1 & v2, MP3, Speex, Opus, Vorbis
  • Video Codecs: H.265 (preview), H.264, VP9, VP8
  • Uyumluluk: Çok az destekleniyor (Quicktime Player ve diğer RTSP/RTP-uyumlu oynatıcılar, VideoLAN VLC media player, 3Gpp-uyumlu mobil cihazlar)
  • Avantajları: Düşük geçikme ve tamponlamaya (buffering) gerek duyulmaması
  • Dezavantajları: Kalite veya ölçeklenebilirlik için optimize edilmemiştir
  • Gecikme: ~2 saniye
  • Varyasyonlar: The entire stack of RTP, RTCP (Real-Time Control Protocol), and RTSP is often referred to as RTSP

2.2 HTTP Tabanlı Streaming Protokolleri

HTTP üzerinden dağıtılan akışlar teknik olarak “akış” değildir. Bunun yerine, normal web sunucuları aracılığıyla gönderilen aşamalı indirmelerdir. Uyarlanabilir bithızlı akış kullanan HTTP tabanlı protokoller, bağlantı, yazılım veya cihaz ne olursa olsun mümkün olan en iyi video kalitesini ve izleyici deneyimini sunar. En yaygın HTTP tabanlı protokollerden bazıları MPEG-DASH ve Apple’ın HLS’sidir.

2.2.1 Apple HLS

Apple, internete bağlı cihazlar dünyasında önemli bir oyuncu olduğundan, Apple’ın HLS protokolü dijital video sektöründe de önemli bir konuma sahip. HLS protokolü, izleyici deneyiminin anahtarı olan uyarlanabilir bit hızı akışını desteklemektedir. Daha da önemlisi, HLS aracılığıyla yayınlanan bir akış, cihazların çoğunda oynatılacak ve böylece kitlenizi genişletecektir.

HLS desteği başlangıçta iPhone’lar ve iPad’ler gibi iOS cihazlarıyla sınırlıyken, yerel destek o zamandan beri çok çeşitli platformlara eklendi. Tüm Google Chrome tarayıcılarının yanı sıra Android, Linux, Microsoft ve MacOS cihazları HLS kullanılarak yayınlanan akışları oynatabilir.

Kimler Kullanmalı: HLS günümüzde en çok kullanılan protokoldür ve sağlamdır. Örneğin, bir video arızası yaşarsa akış sırasında az sayıda izleyicinin bir siteye geri döneceğini biliyoruz. HLS gibi geniş çapta uyumlu, uyarlanabilir bir protokol kullanılması, mümkün olan en iyi kitle deneyimini sunar.

  • Audio Codecs: AAC-LC, HE-AAC+ v1 & v2, MP3
  • Video Codecs: H.265, H.264
  • Uyumluluk: Çok geniş (Tüm Google Chrome tarayıcıları; Android, Linux, Microsoft, and MacOS cihazları; bazı TV kutuları, akıllı TV ler, ve diğer video oynatıcıları)
  • Avantajları: Uyarlanabilir bitrate ve geniş uyumluluk
  • Dezavantajları: Kalite gecikmeden daha önceliklidir.
  • Gecikme: ~6-30 saniye (düşük gecikme yalnızca ayarlandığında mümkündür)
  • Varyasyonlar: Low-Latency HLS, PHLS (Protected HTTP Live Streaming)

2.2.2 MPEG-DASH

MPEG-DASH söz konusu olduğunda kısaltmasına bakarak hikayesini anlayabiliriz. Dijital ses ve video standartlarında uluslararası bir otorite olan Moving Pictures Expert Group (MPEG), HLS’ye endüstri standardı bir alternatif olarak HTTP üzerinden Dinamik Uyarlamalı Akış (DASH) geliştirdi. Temel olarak, DASH ile açık kaynaklı bir seçenek elde edersiniz. Ancak Apple, tescilli yazılımını önceliklendirdiğinden, DASH desteği ikinci sırada kalıyor.

Kimler Kullanmalı: Bugünlerde MPEG-DASH, HLS’ye kıyasla sadece daha az miktarda büyük yayıncı tarafından yaygın olarak kullanılmaktadır. Ancak, gelecekte standart teknoloji olacak. Şimdilik uyumluluk (ör. Apple Safari ve iOS aygıtları desteklemiyor) ve diğer ilgili sorunlar nedeniyle bu zaman henüz ortaya çıkmadı.

  • Audio Codecs: Tüm codeclerle uyumlu
  • Video Codecs: Tüm codeclerle uyumlu
  • Uyumluluk: Geniş seviyede (Tüm Android cihazlar; çoğu Samsung, Philips, Panasonic, ve Sony TV ler; Chrome, Safari, ve Firefox tarayıcıları)
  • Avantajları: Uyarlanabilir bit hızı için satıcıdan bağımsız, uluslararası standart sunar
  • Dezavantajları: iOS ve Apple TV tarafından desteklenmiyor
  • Gecikme: ~6-30 saniye (düşük gecikme yalnızca ayarlandığında mümkündür)
  • Varyasyonlar: MPEG-DASH CENC (Common Encryption)

2.2.3 Microsoft Smooth Streaming

Microsoft, Silverlight oynatıcı uygulamalarıyla kullanmak için Microsoft Smooth Streaming’i geliştirdi. Tüm Microsoft cihazlarına uyarlanabilir ve destekler.

Kimler Kullanmalı: Ana hedef kitleniz Xbox kullanıcıları değilse veya Windows’a özgü uygulamalar oluşturmayı planlamıyorsanız, MSS’yi birincil video akışı protokolü olarak kullanmanızı önermiyoruz.

  • Audio Codecs: AAC, MP3, WMA
  • Video Codecs: H.264, VC-1
  • Uyumluluk: İyi Seviyede (Microsoft ve iOS cihazlar, Xbox, birçok akıllı TV)
  • Avantajları: Uyarlanabilir bit hızı ve iOS desteği
  • Dezavantajları: Tescilli teknoloji
  • Gecikme: ~6-30 saniye (düşük gecikme yalnızca ayarlandığında mümkündür)

2.2.4 Adobe HDS

HDS, ilk uyarlanabilir bit hızlı protokol olarak Flash Player uygulamalarıyla kullanılmak üzere geliştirilmiştir. Flash’ın ömrünün sona ermesi sebebiyle için gözden RTMP gibi gözden düşmüştür.

Kimler Kullanmalı: Genel olarak HDS kullanmanızı önermiyoruz. Son yıllarda, Flash desteği, herhangi bir yayıncının kitlesine ulaşmak için bu teknolojiye güvenmesi için çok yavaş oldu. Kısacası, web videonuzu Flash oynatıcı etrafında oluşturmak bugün kötü bir seçimdir.

  • Audio Codecs: AAC, MP3
  • Video Codecs: H.264, VP6
  • Uyumluluk: Çok az destekleniyor (Flash Player, Adobe AIR)
  • Avantajları: Flash için uyarlanabilir bit hızı teknolojisi
  • Dezavantajları: Eksik destekli tescilli teknoloji
  • Gecikme: ~6-30 saniye (düşük gecikme yalnızca ayarlandığında mümkündür)

2.3 Yeni Streaming Protokoller

Son olarak, WebRTC ve SRT gibi yeni teknolojiler gecikme süreleri göz önünde bulundurularak tasarlanmıştır. Low-Latency HLS ve Low-Latency CMAF for DASH protokolleri gibi, bu protokoller de gelişmeye devam etmektedir.

2.3.1 SRT

Açık kaynaklı bir protokol olan SRT, streaming teknolojilerine kanıtlanmış bir alternatif olarak kabul edilir – ağ kalitesinden bağımsız olarak güvenilir akışlar sağlamaya yardımcı olur. Kayıp paketlerin kurtarılmasından zamanlama davranışının korunmasına kadar SRT, video katkısı ve internette dağıtım zorluklarını çözmek için tasarlanmıştır. Sektörü hızla fırtınaya sokmasına rağmen, SRT çoğunlukla son noktada istemci tarafından ziyade ilk nokta olan üretim safhası için kullanılır.

  • Audio Codecs: Tüm codeclerle uyumlu
  • Video Codecs: Tüm codeclerle uyumlu
  • Uyumluluk: Sınırlı (Daha çok üretim aşamasında kullanılır)
  • Avantajları: Yüksek kalite, yetersiz ağlar üzerinden düşük gecikmeli video
  • Dezavantajları: İstemci tarafındaki player kısmı için halen çalışılıyor
  • Gecikme: ~3 saniye

2.3.2 WebRTC

WebRTC, gerçek zamanlı iletişimi sağlayan standartların, protokollerin ve JavaScript API’lerinin bir kombinasyonudur. Chrome, Firefox veya Safari aracılığıyla bağlanan kullanıcılar, tarayıcıları aracılığıyla doğrudan iletişim kurabilir ve 500 milisaniyeden daha az gecikmeyi mümkün kılarlar.

Kimler Kullanmalı: Canlı konferans uygulamaları için gözünüz kapalı olarak seçebilirsiniz.

  • Audio Codecs: Opus, iSAC, iLBC
  • Video Codecs: VP8, VP9
  • Uyumluluk: Chrome, Firefox, and Safari tarayıcıları (eklentiye gerek yoktur)
  • Avantajları: Süper hızlı ve tarayıcı bazlı
  • Dezavantajları: Görüntülü konferans için tasarlanmıştır
  • Gecikme: 1 saniyeden daha az

3. SONUÇ

Protokoller aşağıdaki alanlara göre birbirlerinden farklılık gösterirler:

  • Ölçeklenebilirlik
  • Gecikme
  • Kalite (Uyarlanabilir bit hızı vb.)
  • Kullanım aşaması (ilk nokta (üretim) veya son nokta (teslimat))
  • Oynatma desteği
  • Tescilli ve açık kaynak olması
  • Codec gereksinimleri

Yukarıdaki hususlara öncelik vererek, sizin için en iyi olan protokolü seçmeniz önemlidir. Tabi kimler hangi seçimi yaptı diye sorarsanız Wowza 2019 Video Streaming raporuna göre kullanılan protokollerin kıyaslaması şu şekilde:

Son söz olarak; RTMP ve SRT, ilk noktada üretim için harika protokollerdir. DASH ve HLS protokolleri ise oynatma konusunda öncülük etmektedirler. Ancak, canlı konferans görüşmeleri için kullanmayı düşünüyorsanız, bu durumda WebRTC daha uygun olacaktır.