Browsed by
Etiket: WebRTC

Google Meet ve Yapay Zeka ile Gürültü Önleme Çözümü

Google Meet ve Yapay Zeka ile Gürültü Önleme Çözümü

Pandemi dönemi sebebiyle biliyorsunuz ki evden çalışma ile beraber web video konferans sistemleri de çok rağbet görmeye başladı. Pazarı açık ara Zoom domine etse de Google Meet de pazar payını artırmak isteyenlerden biri. Bunu da gün geçtikçe platformuna yeni özellikler ekleyerek hedefliyor. Yakın zamanda Google Meet’e eklenen gürültü önleme özelliği  sayesinde bu alanda Google yeni bir inovasyon yapmışa benziyor.

2020 Nisan ayında Google, Meet’ın gürültü engelleme özelliğinin G Suite Enterprise ve G Suite Enterprise for Education müşterilerine geldiğini duyurmuştu. Bu vesile ile bu özelliğin fikir babasının G Suite Ürün Yönetim Müdürü Serge Lachapelle olduğunu da belirtelim.  G Suite ürün yönetimi direktörü Serge Lachapelle, 13’ü Google’da olmak üzere 25 yıldır video konferans teknolojileri üzerinde çalışmış ve bu konuda oldukça deneyimli birisi.

Projenin Başlangıcı

Temel olarak bu proje Google’ın Ocak 2017’de Limes Audio‘yu satın almasıyla başlıyor. Esas fikir ise farklı saat dilimlerinde bulunan katılımcılar ile yapılan toplantılarda yaşanan sıkıntılar (evden çalışanların çocuklarının ve evcil hayvanlarının sesleri, kahvaltı sesleri vb.) sonucu doğuyor.

Google Meet’te Gürültü Nasıl Önleniyor?

Belki kullananlarınız vardır, bazı kulaklıklarda ve akıllı telefonlarda birden fazla mikrofonun kullanıldığı gürültü önleme mekanizmaları mevcut. Bu yöntem temelde ağıza tarafındaki mikrofondan alınan ses sinyalinden ağıza uzak olan başka bir mikrofondan (genelde mobil telefonların arkasında ya da üst-yanında bulunuyor) alınan ses sinyalinin çıkarılması ile çalışıyor. Google Meet’de sunulan özellik ise kullanıcı cihazından bağımsız, tamamen bulut tabanlı bir altyapı ve makine öğrenmesi kullanılarak gerçekleştiriliyor.

Neyin konuşma ve neyin konuşma olmadığını bulabilmek, gürültü ve konuşma arasındaki farkı anlamak ve daha sonra sadece konuşmayı filtreleyebilmek için bir makine öğrenme modelinin (denoiser) eğitilmesi gerekiyor. Serge ve ekibi, modeli eğitmek için kendi toplantılarını kullanıyor, daha sonra çok kişinin bulunduğu Youtube videoları ve arkasından manuel doğrulama yöntemleri ile algoritma olgunlaştırılıyor. Nihai durumda ise sistem köpek havlaması, kalem tıklaması ve daha fazlası gibi arka plandaki dikkat dağıtıcı sesleri akıllıca filtreleyebiliyor.

Aşağıdaki videoda da görebileceğiniz gibi Serge konuşurken bir yandan kuru yemiş poşeti, basmalı kalem ve bardak-kaşık gibi şeylerle gürültü çıkartarak özelliğin nasıl çalıştığını gösteriyor. Rutin olmayan gürültüler başladığı anda yüksek bir biçimde duyuluyor ama zaman içinde bu gürültüler sönümleniyor:

Google Meet Noise Cancellation Demosu

Takdir edeceğiniz üzere yapay zekanın işin içinde olduğu bir gürültü önleme sistemini kullanabilmek için sesinizin Google tarafından dinleniyor olması gerekiyor. Kullanıcı tarafında şifrelenen ses Google veri merkezlerinde çözülüp analiz ediliyor ve filtrelenen ses de yine aynı şekilde şifrelenerek kullanıcılara iletiliyor. Burada sesin dinlenerek analiz edilmesi kullanıcı tarafında bir soru işareti oluştursa da bu analizin sadece denoiser özelinde yapıldığı belirtiliyor. Bundan ziyade bu işlemlerin kısa sürede halledilebilmesi özellikle gerçek zamanlı iletişim için oldukça önemli bence.

Eğer G Suite Enterprise veya G Suite Enterprise for Education ürünlerini kullanıyorsanız bu özelliği aktif edebilmek için toplantı esnasında sağ altta bulunan üç noktaya tıklayıp Settings’den Noise cancellation‘ı aktif etmeniz yeterli:

Google Meet Noise Cancellation Ayarı
Google Meet Noise Cancellation Ayarı

Son Söz

Google’ın sevdiği bir yöntem olan veriyi merkezde (bulutta) işleyip kullanıcı tarafını daha yalın bırakma yöntemi başka bir alanda da vücut bulmuş. Şimdilik hala kısıtlı bir şekilde G Suite Enterprise ve G Suite Enterprise for Education müşterilerine sunulan bu hizmet tahminimce yakın zamanda tüm Google Meet kullanıcılarına da sunulacaktır. Hatta ileride Google’ın bunu başka hizmet sağlayıcılarına bir cloud hizmeti olarak da verebileceğini düşünüyorum.

Jitsi Meet Ubuntu’ya Nasıl Kurulur?

Jitsi Meet Ubuntu’ya Nasıl Kurulur?

Kısa Not: Jitsi Meet kurulumu ile ilgili profesyonel hizmet almak isterseniz bana iletişim linkinden ulaşabilirsiniz.

Jitsi Meet, çok kullanışlı ve basit, WebRTC tabanlı açık kaynaklı çok platformlu bir video konferans çözümüdür. Jitsi Meet’i bulut tabanlı veya kendi sunucularınızda da kullanabilirsiniz. Bu blog yazımda, Jitsi sunucusunu Ubuntu tabanlı linux platformunuza nasıl kuracağınızı açıklayacağım.

Jitsi Meet’i Ubuntu linux platformuna kurmak oldukça kolaydır. Bu kılavuzda, Jitsi sunucusunu Ubuntu 18.04 üzerinde .deb paketlerini kullanarak nasıl kurulacağını bulabilirsiniz.

Bu kurulum yazısında sizin Ubuntu’yu kurabileceğinizi farz ediyorum ve Jitsi kurulumuna temel kurulum noktasından devam edeceğim.

Öncelikle, sudo & ssh gibi temel paketleri kuralım. Konsoldan root olarak oturum açın, ardından gerekli paketleri kurun.

apt-get install -y ssh sudo ufw apt-transport-https

Root olmayan kullanıcınızı (benimki ferikci) /etc/sudoers dosyasına ekleyin.

ferikci  ALL=(ALL:ALL) ALL

Artık sudo komutlarını kullanarak mevcut kullanıcınızla devam edebilirsiniz.

Opsiyonel: UFW güvenlik duvarını etkinleştirin ve gereken portları açın:

sudo ufw allow in ssh 
sudo ufw allow in http 
sudo  ufw allow in https 
sudo  ufw allow in 10000/udp 
sudo  ufw enable 

Eğer linux makinenize SSH ile bağlıysanız, “ufw allow ssh” komutunu girdikten sonra “ufw enable” komutunu girin, aksi takdirde mevcut SSH bağlantınızı kaybedebilirsiniz.

Eğer Jitsi sunucusunu bir hostname ile kullanacaksanız /etc/hosts dosyasında ilgili hostname in blunduğuna emin olun:

127.0.0.1 localhost jitsi.test.local

Ardından linux makinenizi yeniden başlatın:

reboot

Şimdi kurulumun geri kalanında mevcut kullanıcınızla SSH üzerinden tekrar oturum açın.

Jitsi GPG anahtarını ekleyin.

 wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add - 

Ubuntu sistemlerinde Jitsi, Ubuntu’nun “universe” paketi deposundan bağımlılıklar gerektirir. Bunun için aşağıdaki komutla universe reposunu da ekleyin:

apt-add-repository universe

Daha sonra Jitsi deposunu ekleyin ve apt yi güncelleyin

sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt-get -y update 

Jitsi-Meet Kurulumu

Artık Jitsi sunucu kurulumuna hazırsınız. Jitsi-meet’i bağımlılıklarıyla birlikte kurmak için aşağıdaki komutu kullanın:

sudo apt-get -y install jitsi-meet

Kurulum esnasında bilgisayar adınız (hostname) sorulacak ancak, sadece bilgisayar adınızı yazmayın, bu alana bilgisayar adınızı FQDN olarak yazmalısınız, aksi takdirde bağlantı ile ilgili sorunlarla karşılaşabilirsiniz. Bu arada, FQDN’nin DNS sunucuları tarafından çözüğlebildiğinden emin olun. (Ya da FQDN’i bilgisayarınızın hosts dosyanıza ekleyebilirsiniz.).

Jitsi Hostname (FQDN) Ayarları

Kurulumda bundan sonra sertifika istenecektir. Ben bu kurulumda kendinden imzalı SSL sertifikası kullanacağım, bu yüzden ilk seçeneği seçiyorum.

Jitsi SSL Sertifika Konfigürasyon Menüsü

Kurulum bir süre sonra tamamlanacak ve komut istemine geçecektir.

Şimdi video konferans GUI’nize bağlanma zamanı geldi. Jitsi sunucusunun ana sayfasına gitmek için https://FQDN adresini kullanın:

https://jitsi.test.local

Oda adı giriş alanına sahip bir ana sayfa göreceksiniz. Bir oda adı girin ve Go düğmesine tıklayın.

Jitsi Meet Ana Sayfa

Hepsi bu kadar! Aynı prosedürle veya https://FQDN/odaadı URL’sini kullanarak odanıza daha fazla katılımcı ekleyebilirsiniz.

https://jitsi.test.local/testroom
Ve Jitsi Meet Çalışır

Jitsi’yi Bir NAT Arkasında Çalıştırmak

Jitsi sunucunuzu iç IP ile bir NAT arkasında kullanmak istiyorsanız, yönlendiricinizi aşağıdaki portları Jitsi Meet sunucunuza yönlendirecek şekilde yapılandırmanız (port forwarding) gerekir:

  • 80/TCP
  • 443/TCP
  • 10000/UDP

Ardından /etc/jitsi/videobridge/sip-communicator.properties dosyasına iç ve dış IPlerinizi içeren aşağıdaki satırları eklemeniz gerekir:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=[İÇ.IP.ADRESİ]
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=[DIŞ.IP.ADDRESİ]

Örnek olarak kendi konfigürasyonum şöyle:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=192.168.1.20
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=95.9.74.32

Coronavirus e Karşı Ücretsiz Video Konferans Hizmeti

Coronavirus e Karşı Ücretsiz Video Konferans Hizmeti

Tüm dünyayı tehdit eden Coronavirüs ün (COVID-19) yayılmasını önlemek için, seyahat etmeden uzaktan çalışmak / işbirliği yapmak, ya da sevdikleriniz ile görüntülü görüşmek için iyi bir zaman. Aşağıdaki linkte herkesin hizmetine sunduğum video konferans sunucusu ile bunu yapabilirsiniz.

Kayıt olmanıza, her hangi bir kullanıcı bilgisi girmenize gerek yok. Aşağıdaki bağlantıyı tıklayarak kolayca görüntülü arama odası oluşturabilirsiniz:

https://fatiherikci.com/videocall/

Bir video görüşmesi odası oluşturup katıldıktan sonra, tarayıcınızdaki sayfa URL’ini seçip kopyalayabilir ve aynı odaya katılabilmeleri için diğer katılımcılarla paylaşabilirsiniz. 🙂

Not: Bu sayfa en iyi Chrome / Chromium ve Opera ile çalışır.

coTURN Kurulum ve Yapılandırma Adımları

coTURN Kurulum ve Yapılandırma Adımları

Bu blog sayfası, SIP veya WebRTC projeleriniz (Jitsi Meet gibi) için güvenlik duvarlarının veya proxy’lerin arkasındaki kullanıcıların bağlanmasına izin vermek için coTURN sunucusunun kurulum ve yapılandırma adımları kapsar.

TURN Nedir?

TURN, Traversal Using Relays around NAT‘ın kısaltmasıdır. STUN’a benzer şekilde, Internet’teki eşler arasında iletişim kurmak için olası yolların keşfedilmesine yardımcı olmak için kullanılan bir ağ protokolü / paket biçimidir (IETF RFC 5766). Paketleri eşler arasında aktarmak için ortak bir röle sunucusu kullanması nedeniyle STUN’dan farklıdır. TURN, başka bir seçenek olmadığında medya paketlerini eşler arasında ulaştırmak için bir ara sunucu olarak kullanılır. TURN’ün kullanılması durumunda artık bağlantı p2p olmayacağından sunucu kaynakları tüketilir ve eşler arası bağlantıda fazladan bir hop eklenmesi nedeniyle gecikme süresi (latency) artar.

TURN’ü eşlerden birinin simetrik bir NAT’ın arkasında, diğeri ise simetrik bir NAT’ın veya port tabanlı NAT’ın arkasında olduğunda kullanmanız gerekir. Bu durum genelde toplam bağlantıların %10’unda karşımıza çıkar. Geri kalan bağlantıların çoğunda STUN tek başına yeterlidir.

CoTURN Sunucusunu Yüklemek

Ses / Video tabanlı servisler, WebRTC için kullanılan çeşitli UDP portlarını kullanır. NAT arkasındaki ya da sunucunuza doğru UDP bağlantılarını kısıtlayan bir güvenlik duvarı kullanımının olduğu bazı ağlarda kullanıcılar medya sunucunuzla UDP üzerinden bağlantı kuramayabilir.

TURN protokolü, istemciyi TURN sunucusuna bağlanmaya zorlayarak UDP iletişim akışlarının NAT veya güvenlik duvarlarını atlamasına izin vermek ve ardından TURN sunucusunun hedeflerine kendi adına bağlanması için tasarlanmıştır.

Kontrolünüz altında bir TURN sunucusu kullanmak, multimedya uygulamanızla olan bağlantıların başarısını ve aynı zamanda bir proxy gibi davrandığından kullanıcı gizliliğini artırır; böylece eşlerin IP adres bilgilerini artık halka açık bir STUN sunucusuna göndermemiş olursunuz.

Gerekli Donanım

TURN protokolü çok fazla CPU veya RAM’e ihtiyaç duymaz. Buna ek olarak, yalnızca bağlantı kurulumu sırasında (STUN için) kullanıldığında bant genişliği gereksinimleri yüksek değildir. TURN sunucunuz bir medya proxy olarak kullanıldığında eşlerin gönderdiği akışlar kadar giriş ve çıkış bant genişliği ihtiyacı olacaktır. Orta sayıda bağlantı için, tek bir küçük VPS yapılandırması genellikle yeterlidir. CoTURN kurulum için kaynak önerilerimi aşağıda bulabilirsiniz:

  • En az iki vCPU
  • 4GB RAM.
  • 20GB HDD. SSD kullanılabilir, ancak zorunlu değildir.
  • Ağ performansı:
    • Düşük jitter (30ms’den az)
    • Düşük gecikme süresi (latency) (150ms’den az)
    • Her iki yöndeki medya akışlarını karşılayabilmek için yeterli bant genişliği.

Sunucunun NAT arkasında olmasında (Amazon EC2’de olduğu gibi) bir sorun yoktur, ancak herhangi bir porta (TCP 80 & 443, UDP 3478, 10000-20000) gelen tüm UDP ve TCP bağlantılarının coTURN sunucusuna iletilmesi gerekmektedir.

coTURN Gerekli Yazılım ve Kurulum Adımları

coTURN için Debian Netinst veya Ubuntu ile minimal bir sunucu kurulumu işinizi görecektir. CoTURN yazılımı TCP 443 portunu kullandığından, coTURN’ün yükleneceği sunucuda çalışan başka bir web uygulaması olamaz. (farklı bir portta olabilir tabi :))

coTURN, Debian ve Ubuntu repolarında mevcuttur ve apt-get ile kurulabilir:

$ sudo apt-get update
$ sudo apt-get install coturn

coTURN konfigürasyonu tamamlanıncaya kadar coTURN’un otomatik olarak başlamayacağını lütfen unutmayın. Konfigürasyon adımlarını aşağıda bulabilirsiniz.

CoTURN İçin DNS Girişi

CoTURN sunucunuzun harici IP adresini çözen tam bir alanı adı (FQDN) ayarlamanız gerekir. Aynı zamanda bir TLS sertifikası oluşturmak için de bu alanı adını kullanacaksınız.

TLS Sertifikaları Üretmek

Ücretsiz bir TLS sertifikası oluşturmak için Let’s Encrypt’i kullanan certbot‘u kullanabilirsiniz. Certbot’u kurmak için coTURN sunucunuzda aşağıdaki komutları girin:

$ sudo add-apt-repository ppa:certbot/certbot 
$ sudo apt-get update 
$ sudo apt-get install certbot

Daha sonra, TURN sunucunuza sertifikayı oluşturmak için alan adı adresinizi kullanarak aşağıdaki gibi bir certbot komutu çalıştırabilirsiniz:

$ sudo certbot certonly --standalone --preferred-challenges http \
    --deploy-hook "systemctl restart coturn" \
    -d turn.fatiherikci.com

Certbot komutunun mevcut sürümleri varsayılan olarak sertifikalarınızı otomatik olarak yeniler. Certbot sertifikayı yenilediğinde, coTURN servisini yeniden başlatacağını, böylece coTURN’nin güncellenmiş sertifika dosyalarını kullanmaya başlayacağını unutmayın. Bu işlem, sunucunuzun aktif olarak üzerinden geçirdiği TURN bağlantılarında kesintiye neden olacaktır. Bu durumu engellemek için isterseniz, sertifika yenileme zamanlamasını değiştirebilir veya otomatik yenilemeyi devre dışı bırakabilirsiniz.

CoTURN’ü Yapılandırmak

coTURN yapılandırması /etc/turnserver.conf dosyasında depolanır. Bu dosya için çok fazla seçenek mevcuttur ve bu seçenekler ile ilgili açıklamaları yorum satırlarında bulmanız mümkündür. Aşağıdaki örnekte, önerilen ayarlar olarak yorumların yanı sıra, özelleştirmenin gerekli olduğu yerlerde notların bulunduğu örnek bir yapılandırmayı bulabilirsiniz.

/etc/turnserver.conf dosyasının içeriğini aşağıdaki dosyayla değiştirebilir ve aşağıdaki değişiklikleri yapabilirsiniz:

  • turn.fatiherikci.com adresini TURN sunucunuzun ana bilgisayar adıyla değiştirin.
  • Diğer kalın harfler ile belirtilen satırları kendi sunucunuza göre değiştirin.

Aşağıda bir örnek yapılandırma dosyası görebilirsiniz:

server-name=turn.fatiherikci.com
realm=turn.fatiherikci.com
cert=/etc/letsencrypt/live/turn.fatiherikci.com/cert.pem
pkey=/etc/letsencrypt/live/turn.fatiherikci.com/privkey.pem
fingerprint 
listening-ip=0.0.0.0 
external-ip= 1.2.3.4/192.168.0.1 #ya da sadece dış IP yazın
listening-port=3478 
min-port=10000 
max-port=20000 
log-file=/var/log/turnserver.log 
verbose 
user=myusername:mypassword 
lt-cred-mech

Konfigürasyonu tamamladıktan sonra coTURN’ü çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

$ systemctl start ​​coturn

CoTURN’u Servis Olarak Çalıştırmak

Debian / Ubuntu için olan coTURN paketini başlangıçta etkinleştirmek için /etc/default/coturn dosyasını açarak aşağıdaki satırın commentini açın:

TURNSERVER_ENABLED = 1

Bu kadar! coTURN kurulum adımlarımız tamamlandı. Artık çalışır durumda bir TURN sunucunuz var!

TURN Sunucunuzu Test Etmek

CoTURN sunucunuzu test etmek için Trickle-Ice test aracını kullanabilirsiniz. Trickle ICE’ın web sayfasına gidin ve aşağıdakileri girin:

  • STUN veya TURN URI: turn:PublicIPAdresiniz:3478
  • TURN username: kullanıcıadı
  • TURN password: şifre

Ardından Add Server düğmesini ve ardından Gather Candidates düğmesini tıklayın. Her şey yolunda giderse, sonuç olarak Done görmelisiniz.

WebRTC Nedir?

WebRTC Nedir?

WebRTC adını son zamanlarda oldukça fazla duymaya başladık. Aslında çok da yeni bir teknoloji değil, 2011 yılından beri kullanıma açık olan WebRTC, eş zamanlı olarak medya iletişimi (sesli ve/veya görüntülü) sağlayan bir teknolojidir. Pek çok avantaja sahip olan WebRTC’nin en büyük özelliği ise ek bir yazılım gerektirmeden bir çok popüler tarayıcı üzerinde doğrudan çalışabilmesidir.

WebRTC’nin açılımı Web Based Real Time Communication‘dır.  HTML5 ve Javascript API’leri kullanarak multimedya uygulamaları tasarlanabilir.

WebRTC’de kullanılan iletişim biçimini eşler arası (peer-to-peer) olarak tanımlayabiliriz. Bu iletişim doğrudan eşler arasında olduğundan her hangi bir medya sunucusuna ihtiyaç duymazsınız. WebRTC ücretsizdir ve BSD lisansına sahiptir, yani ücretsiz olarak WebRTC uygulamaları geliştirebilirsiniz. (Örneğin bu adreste WebRTC ile yapılmış bir video konferans sanal odasına girip görüşme yapabilirsiniz)

WebRTC Destekleyen Tarayıcılar

Günümüzde aşağıdaki tarayıcılar WebRTC desteklemektedir:

  • PC & MAC
    • Microsoft Edge 12+
    • Google Chrome 28+
    • Mozilla Firefox 22+
    • Safari 11+
    • Opera 18+
    • Vivaldi 1.9+
  • Android
    • Google Chrome 28+
    • Mozilla Firefox 24+
    • Opera Mobile 12+
  • iOS
    • MobileSafari/WebKit (iOS 11+)
  • Chrome OS
  • Firefox OS
  • BlackBerry 10
  • Tizen 3.0

WebRTC Bileşenleri

WebRTC’de 3 ana bileşen vardır:

1. MediaStream API

MediaStream API, javascript kullanarak kullanıcıdaki kamera, mikrofon veya ekrana erişim fonksiyonunlarını sağlar.

2. RTCPeerConnection API

RTCPeerConnection API, NAT traversal, Codec işleme, karşılıklı SDP anlaşması, medya iletimi ve eşler arasındaki güvenli bağlantı fonksiyonlarını sağlar.

3. RTCDataChannel API

RTCDataChannel API, eşler arasında çift yönlü veri aktarım kanalları kurulması fonksiyonlarını sağlar.

Eşler Arası Bağlantının Kurulması

Sinyaleşme, eşler arasındaki bağlantıyı oluşturan bir süreçtir. WebSocket, XMPP, SIP veya herhangi bir mekanizmayla elde edilebilir. WebRTC teknolojisi, RTP, STUN, SIP ve ICE gibi önemli protokollerden yararlanır.

WebRTC Sinyalleşme Süreci

Session Description Protocol (SDP)

SDP olarak da bilinir, Bir bağlantı kurmadan önce eşler arasındaki medya yeteneklerini (ses kodekleri, IP ve port bilgileri vs.) birbirlerini iletmek ve karşılıklı ortak noktada buluşmak için kullanılan bir protokoldür.

Interactive Connectivity Establishment (ICE)

ICE, NAT traversal mekanizması için kullanılan bir frameworktür. ICE mevcut tüm adayları toplar (yerel IP adresleri, dönüş IP adresleri STUN ve iletilen IP adresleri – TURN). Toplanan tüm adresler daha sonra SDP aracılığıyla uzak eşlere gönderilir.

STUN Sunucusu

STUN sunucusu, eşlerin genel (public) IP adreslerini, kullandıkları NAT türlerini ve NAT tarafından belirlenen yerel port bilgisi ile ilişkilendirilen Internet tarafı port bilgisi arasındaki ilişkiyi bulmalarını sağlar.

TURN Sunucusu

TURN sunucusu STUN kullanımı mümkün olmadığında, medya akışlarını bir TURN sunucusu üzerinden iletmek için (proxy gibi düşünebilirsiniz) kullanılır.

WebRTC her zaman eşler arası (P2P) değildir, çoklu iletişim durumlarında ise (ör. video konferans) farklı çözümler mevcuttur. Şimdi bunlara bir göz atalım.

Çoklu Nokta İletişim Türleri

1. Mesh

Mesh ağında, tüm eşler akışlarını doğrudan ağdaki diğer bağlı eşlere ayrı ayrı gönderir.

Mesh Topolojisinde Tüm Eşler Birbirleri İle İletişim Halindedir

Bu yapı tamamen dağıtık bir yapı olduğundan merkezde her hangi bir medya sunucusu bulunmasına gerek yoktur. Mesh yapısının dezavantajı ise yüksek bant genişliği kullanımıdır. Mesh yapısı kullanılan bir çoklu video görüşmesinde her kullanıcı 1 Mbps lik bir akış ürettiiği taktirde kullanıcı başına alınan ve gönderilen veri miktarı 4 er Mbps olacaktır.

2. SFU

SFU, Selective Forwarding Unit (Seçici İletme Birimi) anlamına gelir. Bir SFU gelen medya akışlarını tüm kullanıcılardan alır ve daha sonra hangi kullanıcılara gönderileceğine karar vererek iletimini sağlar.

SFU Merkezden Tüm Eşlere Ayrı Ayrı Aktarım Yapar

Bu yapıda her kullanıcı kendi ürettiği medya akışını SFU sunucusuna iletir. SFU sunucusu kim hangi akışı istiyorsa ona gönderebilir. Bu sayede bant genişliği daha efektif kullanılmış olur. Mesh örneğinde olduğu gibi burada da her kullanıcı 1 Mbps lik bir akış üretirse kullanıcı başına toplam gönderim miktarı 1 Mbps, toplam alım miktarı ise maksimum 4 Mbps olacaktır.

3. MCU

MCU, Multipoint Conferencing Unit (Çok Noktalı Konferans Birimi) anlamına gelir. Bir MCU gelen medya akışlarını tüm kullanıcılardan alır, hepsini çözer (decode), yeni bir düzen oluşturur ve tüm kullanıcılara tek bir akış olarak gönderir.

MCU Tüm Eşlerin Medyalarını Birleştirerek Eşlere Tek Bir Akış Gönderir

Bu yapının SFU dan farkı ise her kullanıcıya kombine tek bir akış gönderileceği için kullanıcı başı toplam gönderim ve alım miktarı 1 er Mbps olacaktır. Bu yapının da dezavantajı tahmin edebileceğiniz üzere merkezde bulunan yüksek işlem gücüne sahip olan MCU maliyetidir.