17 Aralık 2020 Perşembe

WebRTC - Streaming Protokolü

Giriş
Not : Bu konuyla ilgili RTMP, RTP/RTSP, HLS, WebRTC, CMAF, DASH protokollerine de bakmak lazım.

WebRTC'den önce video ve ses iletişimi için merkezi bir sunucu bulunur ve tüm veri bu sunucu üzerinden akardı. WebRTC ile iletişim artık peer-to-peer şeklinde. WebRTC tarayıcılarda bulunur ve eklenti (plug-in) kurmaya gerek kalmaz.

Transcoding Nedir?
Açıklaması şöyle. Transcoding sayesinde bir stream'i farklı cihaz ve bağlantı hızına sahip çok daha fazla insan izleyebilir
The definition of transcoding is the process of converting an audio or video file from one encoding format to another in order to increase the number of compatible target devices on which a media file can be played.
Burada Transrating and Transsizing kavramlarını bilmek gerekiyor.Açıklaması şöyle
Transcoding term includes these two terms: Transrating and Transsizing.

Transrating specifically refers to changing bitrates, such as taking a 2k video input stream at 16 Mbps and converting it into lower-bitrate streams like 720p at 5 Mbps (the process is also called renditions). 

Transsizing specifically means resizing the video frame; for example, from a resolution of 2560×1440 (2K UHD) down to 1920×1080 (1080p), 1280×720 (720p), or 720×480(480p)
Transmuxing Nedir?
Açıklaması şöyle
Transcoding Is not the same as transmuxing. Transmuxing is also called recoding, repacking, packaging, or repacking. Transmuxing is a process where you take compressed audio and video and pack/repack it in different formats with keeping audio or video content original.

For example, you might have H.264/AAC content and change the container in which it is packaged so you can use it HTTP Live Streaming (HLS), Smooth Streaming, HTTP Dynamic Streaming (HDS), or Dynamic Adaptive Streaming over HTTP (DASH). The computational overhead for transmuxing is much smaller than transcoding.
1. WebRTC Nedir?
2010 yılında Google tarafından geliştirildi. WebRTC ile tarayıcılar kendi aralarından direkt iletişim kuruyorlar. Sunucu sadece istemcilerin IP adreslerini paylaşmak için kullanılıyor. WebRTC güvenlik zaafiyetleri ile ilgili bir yazı burada.

WebRTC hemen tüm tarayıcılarda mevcut. Yani özel bir eklenti kurmaya gerek yok. Ayrıca WebRTC kütüphaneleri olduğu için uygulamalarda da kullanmak mümkün. Açıklaması şöyle
WebRTC (Web Real-Time Communication protocol) is an open-source standard for real-time communication supported by almost every modern browser, including Safari, Google Chrome, Firefox, Opera, and others. WebRTC supports Opus audio codec as well as high-quality VP8 and VP9. In the near future, the protocol will gain support for a brand new AV1 video codec. The protocol is expected to be used in a much wider area.

One of the biggest advantages of WebRTC is that it converts millions of browsers into streaming terminals without the need to install any additional plugins. What’s more, WebRTC supports sub-second latency, which means no more delay(as we mentioned, the audience hates delay)! Finally, the protocol uses an adaptive bitrate technology that allows it to automatically adjust video quality and avoid any interruptions and interruptions. 
Streaming Latency Nedir?
WebRTC "low latency" için tasarlanmış. Streaming Latency için açıklama şöyle
Streaming latency is basically the delay between the camera capturing an event and the event being displayed on viewers’ devices. It takes time to transfer the content from the source to the viewers’ devices. The time of this period depending on the type of live streaming directly affects the success of the live broadcast.
WebRTC Bileşenleri
Temel olarak 3 bileşenden oluşuyor
- Voice Engine
- Video Engine
- Transport

WebRTC Nasıl Çalışır
1. GetUserMedia JavaScript API
Kamera ve mikrofona erişim içindir

2. RTCPeerConnection  - Setting–up and creating a peer-to-peer connection 
Şu işleri yapar
- Taking care of session management 
- Managing all Session Description Protocol (SDP) message exchanges and handling negotiations through ICE candidates (uses STUN and Turn if required) 
- Encoding and decoding media streams (audio/video/text) in real-time 
- Handling all network-related issues such as bandwidth estimation, packet loss etc.  
STUN ve Turn NAT Traversal İçin Gerekiyor
Açıklaması şöyle
That’s where the roles of STUN (Session Traversal Utilities for NAT) and TURN (Traversal Using Relays around NAT) servers come into the picture.   

This is how the process goes:  

- A request for public IP address is sent to STUN/TURN servers.  
- Now, this server responds with the IP address that it perceives correct.   
- It creates a set of Interactive Connectivity Establishment (ICE) that contains IP address, port, and transport protocols.   
- With this information about the public IP and port, it easily connects with the peer.    
- The peer browser, on the other hand, does the same thing while using the STUN or TURN server. 

Here it is to be noted that signalling is not a part of the WebRTC framework, it was left out for valid reasons. Different applications might need different protocols and the working group for WebRTC did not want to limit the choices for developers.  
3. RTCDataChannel
Metin, dosya gibi ses ve video dışındaki herhangi bir veriyi göndermek içindir.

WebRTC ve Ölçeklenebilirlik (Scalability)
WebRTC'nin ölçeklendirme problemler olabiliyor.
- 50 bağlantıdan sonra performans düşüyor
- Kalite düşebiliyor
vs.

WebRTC ile ilgili diğer şeyler şöyle

2. SIP (Session Initiation Protocol)
Telekom dünyasında kullanılır

3. HLS - HTTP Live Streaming
HLS yazısına taşıdım

4. WebTransport Nedir?
WebRTC'nin problemlerini çözmek için tasarlanmış yeni bir protokol



Hiç yorum yok:

Yorum Gönder