Web aplikacije sa webrtc. WebRTC tehnologija: audio i video ćaskanje u pretraživaču

WebRTC (Web Real Time Communications) je standard koji opisuje prijenos striming audio podataka, video podataka i sadržaja od i do pretraživača u realnom vremenu bez instaliranja dodataka ili drugih ekstenzija. Standard vam omogućava da svoj pretraživač pretvorite u terminal za video konferencije, samo trebate otvoriti web stranicu da biste započeli komunikaciju.

Šta je WebRTC?

U ovom članku ćemo pogledati sve što trebate znati o WebRTC tehnologiji za prosječnog korisnika. Pogledajmo prednosti i nedostatke projekta, otkrijmo neke tajne, reći ćemo vam kako funkcionira, gdje i za šta se koristi WebRTC.

Šta trebate znati o WebRTC-u?

Evolucija video komunikacijskih standarda i tehnologija Sergey Yutsaitis, Cisco, Video+Conference 2016 Kako WebRTC radi Na strani klijenta
  • Korisnik otvara stranicu koja sadrži HTML5 tag.
  • Pretraživač traži pristup web kameri i mikrofonu korisnika.
  • JavaScript kod na korisničkoj stranici kontroliše parametre veze (IP adrese i portove WebRTC servera ili drugih WebRTC klijenata) kako bi se zaobišlo NAT i zaštitni zid.
  • Prilikom primanja informacija o sagovorniku ili o strimu sa konferencije pomešanog na serveru, pretraživač počinje da pregovara o audio i video kodecima koji se koriste.
  • Započinje proces kodiranja i prijenos streaming podataka između WebRTC klijenata (u našem slučaju između pretraživača i servera).
Na strani WebRTC servera

Video server nije potreban za razmjenu podataka između dva učesnika, ali ako trebate kombinirati više učesnika u jednoj konferenciji, potreban je server.



Video server će primati medijski promet iz različitih izvora, pretvarati ga i slati korisnicima koji koriste WebRTC kao terminal.

Također, WebRTC server će primati medijski promet od WebRTC kolega i prosljeđivati ​​ga učesnicima konferencije koji koriste desktop aplikacije ili mobilnih uređaja, ako iko.

Prednosti standarda
  • Nije potrebna instalacija softvera.
  • Veoma visok kvalitet komunikacije zahvaljujući:
    • Upotreba modernih video (VP8, H.264) i audio kodeka (Opus).
    • Automatsko prilagođavanje kvalitete streama uvjetima veze.
    • Ugrađeni sistem za smanjenje odjeka i šuma.
    • Automatsko podešavanje nivoa osetljivosti mikrofona učesnika (AGC).
  • Visok nivo sigurnosti: sve veze su zaštićene i šifrovane prema TLS protokoli i SRTP.
  • Postoji ugrađeni mehanizam za snimanje sadržaja, na primjer, desktopa.
  • Mogućnost implementacije bilo kojeg upravljačkog interfejsa zasnovanog na HTML5 i JavaScript-u.
  • Mogućnost integracije interfejsa sa bilo kojim pozadinskim sistemima koristeći WebSockets.
  • Projekat otvorenog koda - možete ga implementirati u svoj proizvod ili uslugu.
  • Prava cross-platforma: ista WebRTC aplikacija će raditi jednako dobro na bilo kojoj operativni sistem, desktop ili mobilni, pod uslovom da pretraživač podržava WebRTC. Ovo značajno štedi resurse za razvoj softvera.
Nedostaci standarda
  • Za organizaciju grupnih audio i video konferencija potreban je server za video konferencije koji bi miksao video i zvuk učesnika, jer Pretraživač ne zna kako da sinhronizuje više dolaznih tokova jedan s drugim.
  • Sva WebRTC rješenja su međusobno nekompatibilna, jer... standard opisuje samo metode za prijenos videa i zvuka, ostavljajući implementaciju metoda za obraćanje pretplatnicima, praćenje njihove dostupnosti, razmjenu poruka i datoteka, zakazivanje i druge stvari dobavljaču.
  • Drugim riječima, nećete moći pozvati iz WebRTC aplikacije jednog programera u WebRTC aplikaciju drugog programera.
  • Mešanje grupnih konferencija je računarski intenzivno, tako da ova vrsta video poziva zahteva kupovinu plaćena pretplata ili ulaganje u vašu infrastrukturu, gdje je za svaku konferenciju potrebno 1 fizičko jezgro modernog procesora.
WebRTC Secrets: Kako dobavljači imaju koristi od probojne web tehnologije


Tsachi Levent-Levi, Bloggeek.me, Video+Conference 2015 WebRTC za tržište videokonferencija povećavajući broj terminala za video konferencije

WebRTC tehnologija je imala snažan uticaj na razvoj tržišta video konferencija. Nakon objavljivanja prvih pretraživača s podrškom za WebRTC 2013. godine, potencijalni broj terminala za video konferencije širom svijeta odmah se povećao za milijardu uređaja. Zapravo, svaki pretraživač je postao terminal za video konferencije, koji nije inferioran u odnosu na svoje hardverske kolege u smislu kvaliteta komunikacije.

Upotreba u specijalizovanim rešenjima

Korištenje različitih JavaScript biblioteka i API-ja cloud servisa s podrškom za WebRTC olakšava dodavanje podrške za video komunikaciju bilo kojim web projektima. Ranije, za prijenos podataka u realnom vremenu, programeri su morali proučiti principe rada protokola i koristiti razvoje drugih kompanija, što je najčešće zahtijevalo dodatno licenciranje, što je povećavalo troškove. WebRTC se već aktivno koristi u uslugama kao što su „Poziv sa stranice“, „Podrška za ćaskanje na mreži“ itd.

Bivši korisnici Skype-a za Linux

Microsoft je 2014. godine najavio prestanak podrške za projekat Skype za Linux, što je izazvalo veliku iritaciju među IT stručnjacima. WebRTC tehnologija nije vezana za operativni sistem, već je implementirana na nivou pretraživača, tj. Korisnici Linuxa moći će vidjeti proizvode i usluge zasnovane na WebRTC-u kao potpunu zamjenu za Skype.

Konkurencija sa Flashom

WebRTC i HTML5 postali su fatalni udarac za Flash tehnologiju, koja je već imala svoje izazove. najbolje godine. Od 2017. godine vodeći pretraživači su zvanično prestali da podržavaju Flash i tehnologija je potpuno nestala sa tržišta. Ali moramo odati priznanje Flash-u, jer je on stvorio tržište web konferencija i ponudio tehničke mogućnosti za živu komunikaciju u pretraživačima.

WebRTC video prezentacije

Dmitrij Odintsov, TrueConf, Video+Conference oktobar 2017

Kodeci u WebRTCAudio kodecima

WebRTC koristi Opus i G.711 kodeke za kompresiju audio saobraćaja.

G.711 je najstariji glasovni kodek visoke brzine u bitovima (64 kbps), koji se najčešće koristi u tradicionalnim telefonskim sistemima. Glavna prednost je minimalno računarsko opterećenje zbog upotrebe lakih algoritama kompresije. Kodek je drugačiji nizak nivo kompresiju glasovnih signala i ne unosi dodatno kašnjenje zvuka tokom komunikacije između korisnika.

G.711 podržava veliki broj uređaja. Sistemi koji koriste ovaj kodek su lakši za upotrebu od onih zasnovanih na drugim audio kodecima (G.723, G.726, G.728, itd.). Što se tiče kvaliteta, G.711 je dobio ocenu 4,2 na MOS testiranju (ocena između 4-5 je najveća i znači dobar kvalitet, sličan kvalitetu ISDN govornog saobraćaja, pa čak i viši).

Opus je kodek sa niskom latencijom kodiranja (od 2,5 ms do 60 ms), podrškom za promjenjivu brzinu prijenosa i visokim nivoima kompresije, idealan za streaming zvuka preko mreža s promjenjivim propusnim opsegom. Opus je hibridno rješenje koje kombinuje najbolje karakteristike kodeci SILK (kompresija glasa, eliminacija izobličenja ljudskog govora) i CELT (kodiranje audio podataka). Kodek je besplatno dostupan programerima koji ga koriste ne moraju plaćati autorske naknade vlasnicima autorskih prava. U poređenju sa drugim audio kodecima, Opus nesumnjivo pobjeđuje u mnogim aspektima. Zamračio je prilično popularne kodeke niske bitrate kao što su MP3, Vorbis, AAC LC. Opus vraća zvučnu “sliku” bližu originalu nego AMR-WB i Speex. Ovaj kodek je budućnost, zbog čega su ga kreatori WebRTC tehnologije uvrstili u obavezni opseg podržanih audio standarda.

Video kodeci

Problemi sa odabirom video kodeka za WebRTC uzeli su programere nekoliko godina, a na kraju su odlučili da koriste H.264 i VP8. Gotovo svi moderni pretraživači podržavaju oba kodeka. Serveri za video konferencije trebaju podržavati samo jedan za rad sa WebRTC-om.

VP8 je besplatni video kodek sa otvorenom licencom, karakteriziran velikom brzinom dekodiranja video toka i povećanom otpornošću na gubitak kadrova. Kodek je univerzalan i lak za implementaciju u hardverske platforme, zbog čega ga programeri video konferencijskih sistema vrlo često koriste u svojim proizvodima.

Plaćeni H.264 video kodek postao je poznat mnogo ranije od svog brata. Ovo je kodek sa visokim stepenom kompresije video toka prilikom snimanja Visoka kvaliteta video. Velika rasprostranjenost ovog kodeka među hardverskim video konferencijskim sistemima ukazuje na njegovu upotrebu u WebRTC standardu.

Google i Mozilla aktivno promovišu VP8 kodek, a Microsoft, Apple i Cisco aktivno promovišu H.264 (kako bi osigurali kompatibilnost sa tradicionalnim sistemima za video konferencije). I tu nastaje vrlo veliki problem za programere cloud WebRTC rješenja, jer ako svi učesnici konferencije koriste isti pretraživač, onda je dovoljno konferenciju jednom pomiješati sa jednim kodekom, a ako su pretraživači različiti i Safari/Edge su među njima, tada će konferencija morati biti kodirana dva puta različitim kodecima, što će udvostručiti Zahtjevi sustava na medijski server i, kao rezultat, cijenu pretplate na WebRTC usluge.

WebRTC API

WebRTC tehnologija je zasnovana na tri glavna API-ja:

  • (odgovoran za web pretraživač koji prima audio i video signale sa kamera ili radne površine korisnika).
  • RTCPeerConnection (odgovoran za vezu između pretraživača za “razmjenu” medijskih podataka primljenih sa kamere, mikrofona i desktopa. Također, “odgovornosti” ovog API-ja uključuju obradu signala (čišćenje od strane buke, podešavanje jačine mikrofona) i kontrolu nad audio i video kodeci koji se koriste).
  • RTCData Channel (omogućava dvosmjerni prijenos podataka preko uspostavljene veze).

Prije pristupa korisnikovom mikrofonu i kameri, pretraživač traži dozvolu za to. IN google chrome Možete unaprijed konfigurirati pristup u odjeljku “Postavke” u Operi i Firefoxu, uređaji se biraju direktno u trenutku dobijanja pristupa, sa padajuće liste; Zahtjev za dozvolu će se uvijek pojaviti kada koristite HTTP protokol i samo jednom ako koristite HTTPS:


RTCPeerConnection. Svaki pretraživač koji učestvuje u WebRTC konferenciji mora imati pristup ovom objektu. Zahvaljujući upotrebi RTCPeerConnection, medijski podaci iz jednog pretraživača u drugi mogu čak proći kroz NAT i firewall. Za uspješan prijenos medijskih tokova, učesnici moraju razmijeniti sljedeće podatke koristeći transport kao što su web utičnice:

  • učesnik koji pokreće šalje drugom učesniku Ponuda-SDP (struktura podataka sa karakteristikama medijskog toka koji će prenositi);
  • drugi učesnik generiše “odgovor” - Odgovor-SDP i šalje ga inicijatoru;
  • tada se organizuje razmjena ICE kandidata između učesnika, ako se otkriju (ako su učesnici iza NAT-a ili firewall-a).

Nakon uspješnog završetka ove razmjene, između učesnika se organizira direktan prijenos medijskih tokova (audio i video).

RTCData Channel. Podrška za protokol Data Channel pojavila se u pretraživačima relativno nedavno, dakle ovaj API može se uzeti u obzir isključivo u slučajevima korišćenja WebRTC-a u pretraživačima Mozilla Firefox 22+ i Google Chrome 26+. Uz njegovu pomoć, učesnici mogu razmjenjivati ​​tekstualne poruke u pretraživaču.

WebRTC veza Podržani desktop pretraživači
  • Google Chrome (17+) i svi pretraživači bazirani na Chromium motoru;
  • Mozilla FireFox (18+);
  • Opera (12+);
  • Safari (11+);
Podržano mobilni pretraživači za Android
  • Google Chrome (28+);
  • Mozilla Firefox (24+);
  • Opera Mobile (12+);
  • Safari (11+).
WebRTC, Microsoft i Internet Explorer

Dugo je Microsoft šutio o podršci za WebRTC u Internet Exploreru i njegovom novom Edge pretraživaču. Momci iz Redmonda baš i ne vole da tehnologije koje ne kontrolišu stavljaju u ruke korisnika, to je njihova politika. Ali postepeno se stvar pomerila sa mrtve tačke, jer... Više nije bilo moguće zanemariti WebRTC, a najavljen je ORTC projekat, derivat WebRTC standarda.

Prema programerima, ORTC je proširenje WebRTC standarda sa poboljšanim skupom API-ja za JavaScript baziran i HTML5, što prevedeno na običan jezik znači da će sve biti isto, samo će Microsoft, a ne Google, kontrolisati standard i njegov razvoj. Skup kodeka je proširen podrškom za H.264 i nekim audio kodecima serije G.7HH, koji se koriste u telefoniji i hardverskim video konferencijskim sistemima. Možda postoji ugrađena podrška za RDP (za prijenos sadržaja) i razmjenu poruka. Usput, korisnici Internet Explorera nemaju sreće; podrška za ORTC bit će dostupna samo u Edgeu. I, naravno, ovaj skup protokola i kodeka lako se povezuje sa Skypeom za posao, što otvara još više poslovnih aplikacija za WebRTC.

WebRTC je API koji pruža pretraživač i omogućava vam da organizujete P2P vezu i prenosite podatke direktno između pretraživača. Na internetu postoji dosta tutorijala o tome kako napisati svoj vlastiti video chat koristeći WebRTC. Na primjer, ovdje je članak o Habréu. Međutim, svi su ograničeni na povezivanje dva klijenta. U ovom članku pokušat ću govoriti o tome kako organizirati vezu i razmjenu poruka između tri ili više korisnika koristeći WebRTC.

Interfejs RTCPeerConnection je peer-to-peer veza između dva pretraživača. Da bismo povezali tri ili više korisnika, morat ćemo organizirati mesh mrežu (mrežu u kojoj je svaki čvor povezan sa svim ostalim čvorovima).
Koristićemo sledeću šemu:

  • Prilikom otvaranja stranice provjeravamo prisustvo ID-a sobe u location.hash
  • Ako ID sobe nije naveden, generirajte novi
  • Šaljemo signalizirajućem serveru poruku da se želimo pridružiti navedenoj prostoriji
  • Server za signalizaciju šalje obavještenje o novom korisniku drugim klijentima u ovoj prostoriji
  • Klijenti koji su već u sobi šalju pridošlicu ponudu SDP-a
  • Novac odgovara na ponude
  • 0. Server za signalizaciju

    Kao što znate, iako WebRTC pruža mogućnost P2P veze između pretraživača, njegov rad ipak zahtijeva dodatni transport za razmjenu servisnih poruka. U ovom primjeru, korišteni transport je WebSocket server napisan u Node.JS koristeći socket.io:

    Var socket_io = require("socket.io"); module.exports = funkcija (server) ( var users = (); var io = socket_io(server); io.on("connection", function(socket) ( // Želim da se novi korisnik pridruži prostoriji socket.on( "room ", function(message) ( var json = JSON.parse(message); // Dodajte utičnicu na listu korisnika korisnika = socket; if (socket.room !== nedefinirano) ( // Ako je utičnica već u nekoj sobi, izađi iz nje socket.leave(socket.room) // Unesi traženu sobu socket.room = json.room (socket.room); novi učesnik socket.broadcast.to(socket.room).emit("new", json.id ) // Poruka vezana za WebRTC (SDP ponuda, SDP odgovor ili ICE kandidat) socket.on("webrtc", funkcija); (poruka) ( var json = JSON.parse(message); if (json.to !== undefined && users !== undefined) ( // Ako poruka specificira primaoca i taj primalac je poznat serveru, šaljemo poruka samo njemu... users.emit("webrtc", poruka); ) else ( // ...u suprotnom smatramo da je poruka emitirana socket.broadcast.to(socket.room).emit("webrtc", message); ) )); // Netko je prekinuo vezu socket.on("disconnect", function() ( // Kada se klijent prekine, obavijestite druge o tome socket.broadcast.to(socket.room).emit("leave", socket.user_id); obriši korisnike )); )); );

    1.index.html

    Izvorni kod za samu stranicu je prilično jednostavan. Namjerno nisam obraćao pažnju na izgled i ostale ljepote, jer ovaj članak nije o tome. Ako neko želi da ga ulepša, to neće biti teško.

    WebRTC Chat Demo Povezano sa 0 vršnjaka
    Pošalji

    2. main.js 2.0. Dobijanje veza do elemenata stranice i WebRTC interfejsa var chatlog = document.getElementById("chatlog"); var message = document.getElementById("message"); var connection_num = document.getElementById("connection_num"); var room_link = document.getElementById("room_link");

    I dalje moramo da koristimo prefikse pretraživača za pristup WebRTC interfejsima.

    Var PeerConnection = window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var SessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription; var IceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate;

    2.1. Određivanje ID sobe

    Ovdje nam je potrebna funkcija za generiranje jedinstvene sobe i identifikatora korisnika. U ove svrhe ćemo koristiti UUID.

    Funkcija uuid() ( var s4 = function() ( return Math.floor(Math.random() * 0x10000).toString(16); ); return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();

    Sada pokušajmo da izvučemo identifikator sobe iz adrese. Ako jedan nije naveden, generirat ćemo novi. Hajde da prikažemo link na trenutnu sobu na stranici, i istovremeno generišemo identifikator trenutnog korisnika.

    Var ROOM = location.hash.substr(1); if (!ROOM) ( ROOM = uuid(); ) room_link.innerHTML = "Veza do sobe"; var ME = uuid();

    2.2. WebSocket

    Odmah pri otvaranju stranice spojit ćemo se na naš signalni server, poslati zahtjev za ulazak u sobu i odrediti rukovaoce porukama.

    // Navedite da kada zatvorite poruku, trebate poslati obavijest serveru o ovome var socket = io.connect("", ("sync disconnect on unload": true)); socket.on("webrtc", socketReceived); socket.on("novo", socketNewPeer); // Odmah pošaljite zahtjev za ulazak u sobu socket.emit("room", JSON.stringify((id: ME, room: ROOM))); // Pomoćna funkcija za slanje adresnih poruka povezanih s WebRTC funkcijom sendViaSocket(type, message, to) ( socket.emit("webrtc", JSON.stringify((id: ME, to: to, type: type, data: message ) ));

    2.3. PeerConnection postavke

    Većina ISP-a pruža internetske veze putem NAT-a. Zbog toga direktna veza ne postaje tako trivijalna stvar. Kada kreiramo konekciju, potrebno je da navedemo listu STUN i TURN servera koje će pretraživač pokušati da koristi da zaobiđe NAT. Naznačićemo i par dodatne opcije za povezivanje.

    Var server = ( iceServers: [ (url: "stun:23.21.150.121"), (url: "stun:stun.l.google.com:19302"), (url: "turn:numb.viagenie.ca", vjerodajnica: "vaša lozinka ide ovdje", korisničko ime: " [email protected]") ] ); var options = ( opcionalno: [ (DtlsSrtpKeyAgreement: true), // potrebno za vezu između Chromea i Firefoxa (RtpDataChannels: true) // potrebno u Firefoxu za korištenje DataChannels API-ja ] )

    2.4. Povezivanje novog korisnika

    Kada se u sobu doda novi peer, server nam šalje novu poruku. Prema gore navedenim rukovateljima poruka, funkcija socketNewPeer će biti pozvana.

    Var peers = (); funkcija socketNewPeer(data) ( peers = (candidateCache: ); // Kreirajte novu vezu var pc = new PeerConnection(server, options); // Inicijalizirajte je initConnection(pc, data, "offer"); // Sačuvajte peers u lista peers.connection = pc // Kreirajte DataChannel kroz koji će se razmjenjivati ​​poruke var channel = pc.createDataChannel("mychannel", () channel.owner = data peers.channel = channel bindEvents(channel); ; // Kreiraj SDP ponudu pc.createOffer(function(offer) (pc.setLocalDescription(offer); )) function initConnection(pc, id, sdpType) (pc.onicecandidate = function (event) ( if (event.candidate) ( // Kada se otkrije novi ICE kandidat, dodajte ga na listu za dalje slanje peers.candidateCache.push(event.candidate) else ( // Kada je otkrivanje kandidata završeno, rukovalac će biti ponovo pozvan, ali bez kandidata); // U ovom slučaju prvo šaljemo ravnopravnom partneru SDP ponudu ili SDP odgovor (ovisno o parametru funkcije)... sendViaSocket(sdpType, pc.localDescription, id); // ...a zatim svi prethodno pronađeni ICE kandidati za (var i = 0; i< peers.candidateCache.length; i++) { sendViaSocket("candidate", peers.candidateCache[i], id); } } } pc.oniceconnectionstatechange = function (event) { if (pc.iceConnectionState == "disconnected") { connection_num.innerText = parseInt(connection_num.innerText) - 1; delete peers; } } } function bindEvents (channel) { channel.onopen = function () { connection_num.innerText = parseInt(connection_num.innerText) + 1; }; channel.onmessage = function (e) { chatlog.innerHTML += "Peer says: " + e.data + ""; }; }

    2.5. Ponuda SDP-a, odgovor SDP-a, kandidat ICE

    Kada primimo jednu od ovih poruka, pozivamo rukovaoca za odgovarajuću poruku.

    Funkcija socketReceived(data) ( var json = JSON.parse(data); switch (json.type) ( case "candidate": remoteCandidateReceived(json.id, json.data); break; case "offer": remoteOfferReceived(json. id, json.data pauza "odgovor": remoteAnswerReceived(json.id, json.data));

    2.5.0 Funkcija ponude SDP-a remoteOfferReceived(id, data) (createConnection(id); var pc = peers.connection; pc.setRemoteDescription(new SessionDescription(data)); pc.createAnswer(function(answer) (pc.setLocalDescription(odgovor) )); funkcija createConnection(id) ( if (peers === undefined) ( peers = (candidateCache: ); var pc = new PeerConnection(server, options); initConnection(pc, id, "answer"); peers.connection); = pc;ondatachannel = function(e) (peers.channel = e.channel; peers.channel.owner = id; bindEvents(peers.channel); ) ) 2.5.1 Funkcija SDP odgovora remoteAnswerReceived(id, data) ( var pc = peers.connection; pc.setRemoteDescription(new SessionDescription(data)) 2.5.2 ICE kandidat funkcija remoteCandidateReceived(id, data) (createConnection(id); var pc = peers.connection; pc. addIceCandidate(new IceCandidate)); (podaci)) 2.6. Slanje poruke

    Kada se klikne na dugme Pošalji, poziva se funkcija sendMessage. Sve što radi je da prođe kroz listu kolega i pokuša da pošalje navedenu poruku svima.

    WebRTC (skraćeno od Web komunikacije u realnom vremenu) je tehnologija koja omogućava audio i video streaming između pretraživača i mobilnih aplikacija.


    Razvoj ove tehnologije konkurira Skypeu. WebRTC se može koristiti za organizovanje video konferencija direktno u pretraživaču. Projekat je otvoren izvor i aktivno ga promovira Google, a posebno razvojni tim preglednika Google Chrome.


    Korisnički pretraživači, zahvaljujući WebRTC tehnologiji, mogu prenositi podatke direktno jedni drugima. WebRTC-u nije potreban poseban server za skladištenje i obradu podataka. Sve podatke obrađuju direktno pretraživači i mobilne aplikacije krajnjih korisnika.


    WebRTC tehnologiju podržavaju svi popularni Mozilla pretraživači Firefox, Opera, Google Chrome (i svi pretraživači bazirani na Google Chrome), kao i mobilne aplikacije zasnovane na Androidu i iOS-u.

    Opasnost od WebRTC-a

    Opasnost WebRTC tehnologije leži u određivanju vaše prave IP adrese. Budući da je veza direktna s drugim korisnikom, preglednikom, web-stranicom ili mobilna aplikacija, tada se mrežne postavke zanemaruju. Da bi stvorili audio i video komunikaciju, pretraživači moraju razmjenjivati ​​vanjske i lokalne IP adrese.

    Anonimni VPN servis rješava ovaj problem i sakriva pravu IP adresu. Maksimum koji se može otkriti je lokalna IP adresa dodijeljena korisniku VPN mreža. Ovo nije opasno, jer će se iste lokalne IP adrese prikazati ako koristite ruter za distribuciju Interneta.


    Ako koristite proxy, tada će WebRTC moći odrediti vašu stvarnu IP adresu iza proxyja ili IP adresu VPN servera ako koristite VPN + proxy lanac.


    WebRTC također određuje vašu stvarnu IP adresu kada koristite Tor mrežu.


    Najviše Najbolja odluka– onemogućite WebRTC tehnologiju ako je ne koristite.

    Kako onemogućiti WebRTC u pretraživačima

    Brza navigacija na ovoj stranici.

    Kako onemogućiti WebRTC u Mozilla Firefoxu

    Mozilla Firefox pretraživač je jedini pretraživač koji vam omogućava da onemogućite WebRTC tehnologiju bez instaliranja dodatnih dodataka.

    Ručno podešavanje

    Ako ne koristite WebRTC tehnologiju, možete je potpuno onemogućiti. U slučaju kada je potrebno povremeno koristiti WebRTC, to je praktičnije.

    Da biste onemogućili WebRTC tehnologiju u Mozilla Firefox-u potrebno je: adresna traka pretraživač, unesite sljedeći tekst i pritisnite tipku Enter.

    About:config


    Kliknite na dugme Prihvatam rizik.


    Uradite sljedeće:

  • Unesite tekst u traku za pretragu i pritisnite Enter.
  • media.peerconnection.enabled
  • Kliknite desnim tasterom miša na liniju i izaberite Prebaci. Ili dvaput kliknite na liniju.

  • Nakon ovih koraka, WebRTC će biti onemogućen.

    Konfiguracija putem dodatka WebRTC Control

    Ako koristite WebRTC tehnologiju, tada će onemogućavanje i omogućavanje putem postavki potrajati dosta vremena. Instalirajte dodatak koji će vam pomoći da uključite i isključite WebRTC jednim klikom.

    Otvorite Dodaci.


    Odaberite:

  • Search section
  • Unesite naziv dodatka u traku za pretragu: WebRTC kontrola
  • Kliknite na dugme Instaliraj

  • Kako onemogućiti WebRTC u pretraživaču Opera

    Da biste onemogućili WebRTC u pretraživaču Opera, idite na galeriju ekstenzija.


    Slijedite ove korake:

  • Unesite naziv dodatka u traku za pretragu: WebRTC kontrola
  • Kliknite na dodatak

  • Kliknite Dodaj u Opera.


    Aktivirajte dodatak. Ikona dodatka bi trebala postati plave boje blokirati WebRTC.

    Kako onemogućiti WebRTC u Google Chromeu

    Da biste onemogućili WebRTC u Google pretraživač Chrome, idite na odjeljak Ekstenzije.


    Pomaknite se prema dolje po stranici i kliknite na Još ekstenzija.


    Slijedite ove korake:

  • Unesite naziv dodatka u traku za pretragu: WebRTC kontrola
  • Kliknite na dugme Instaliraj.


  • Aktivirajte dodatak. Ikona dodatka bi trebala postati plava da blokira WebRTC.

    Kako onemogućiti WebRTC u Yandex pretraživaču

    Da biste onemogućili WebRTC u Yandex pretraživaču, idite na odjeljak Dodaci.


    Pomaknite se prema dolje po stranici i kliknite na Katalog ekstenzija za Yandex pretraživač.


    Slijedite ove korake:

  • Unesite naziv dodatka u traku za pretragu: WebRTC kontrola
  • Kliknite na dodatak da ga instalirate.

  • Kliknite Dodaj u Yandex pretraživač.


    Kliknite na Instaliraj ekstenziju.


    Aktivirajte dodatak. Ikona dodatka bi trebala postati plava da blokira WebRTC.

    Kako onemogućiti WebRTC u SRWare Iron pretraživaču

    SRWare Iron pretraživač je baziran na Google Chrome-u.

    Instalirajte dodatak WebRTC Control prema uputama za .

    WebRTC (Web Real-Time Communications) je tehnologija koja omogućava web aplikacijama i web lokacijama da snimaju i selektivno prenose audio i/ili video tokove medija, kao i razmjenu proizvoljnih podataka između pretraživača, bez nužnog korištenja posrednika. Skup standarda koje WebRTC tehnologija uključuje omogućava vam razmjenu podataka i vođenje peer-to-peer telekonferencija, bez potrebe da korisnik instalira dodatke ili bilo koje druge treće strane softver.

    WebRTC se sastoji od nekoliko međusobno povezanih interfejsa za programiranje aplikacija (API) i protokola koji rade zajedno. Dokumentacija koju ćete ovdje pronaći pomoći će vam da shvatite osnove WebRTC-a, kako postaviti i koristiti vezu za prijenos podataka i medija i još mnogo toga.

    Kompatibilnost

    Budući da je implementacija WebRTC-a još uvijek u povojima i svaki pretraživač ima WebRTC funkcionalnost, toplo preporučujemo korištenje Googleove biblioteke Adapter.js polyfill prije nego počnete raditi na svom kodu.

    Adapter.js koristi klinove i polifile kako bi neprimetno premostio razlike u implementaciji WebRTC-a među kontekstima koji ga podržavaju. Adapter.js također obrađuje prefikse dobavljača i druge razlike u nazivima svojstava, što olakšava razvoj na WebRTC-u s najkompatibilnijim rezultatima. Biblioteka je takođe dostupna kao NPM paket.

    Da biste dalje istražili biblioteku Adapter.js, pogledajte.

    WebRTC koncepti i upotreba

    WebRTC je višenamenski i, zajedno sa , pruža moćne multimedijalne mogućnosti za Web, uključujući podršku za audio i video konferencije, deljenje datoteka, snimanje ekrana, upravljanje identitetom i interoperabilnost sa starim telefonskim sistemima, uključujući podršku za DTMF tonsko biranje. Veze između čvorova mogu se kreirati bez upotrebe posebnih drajvera ili dodataka, a često i bez posrednih usluga.

    Veza između dva čvora je predstavljena kao RTCPeerConnection objekt interfejsa. Jednom kada se veza uspostavi i otvori, pomoću objekta RTCPeerConnection, mogu se dodati medijski tokovi ( MediaStream s) i/ili kanali podataka ( RTCDataChannel s).

    Medijski tokovi se mogu sastojati od bilo kojeg broja staza (traka) medijskih informacija. Ove staze su predstavljene objektima interfejsa MediaStreamTrack i mogu sadržati jednu ili više vrsta medijskih podataka, uključujući audio, video, tekst (kao što su titlovi ili naslovi poglavlja). Većina tokova sastoji se od najmanje samo jedne audio trake (jedne audio trake) ili video zapisa i može se slati i primati kao streamovi (mediji u realnom vremenu) ili sačuvati u datoteci.

    Također možete koristiti vezu između dva čvora za razmjenu proizvoljnih podataka pomoću objekta interfejsa RTCDataChannel, koji se može koristiti za prijenos informacija o uslugama, podataka o berzi, paketa statusa igre, prijenos datoteka ili zatvoreni kanali prijenos podataka.

    potrebni su više detalja i linkovi do relevantnih vodiča i tutorijala

    WebRTC sučelja

    Pošto WebRTC pruža interfejse koji rade zajedno za obavljanje različitih zadataka, podelili smo ih u kategorije. Pogledajte indeks bočne trake za brzu navigaciju.

    Postavljanje i upravljanje vezom

    Ova sučelja se koriste za konfiguriranje, otvaranje i upravljanje WebRTC vezama. Oni predstavljaju jednoslojne medijske veze, kanale podataka i interfejse koji se koriste za razmenu informacija o mogućnostima svakog čvora za odabir najbolje konfiguracije za uspostavljanje dvosmerne multimedijalne veze.

    RTCPeerConnection Predstavlja WebRTC vezu između lokalni računar i udaljeni čvor. Koristi se za rukovanje uspješnim prijenosom podataka između dva čvora. RTCSessionDescription Predstavlja parametre sesije. Svaki RTCSessionDescription sadrži opise tipa, koji označavaju koji dio (ponuda/odgovor) procesa pregovaranja opisuje, i SDP deskriptor za sesiju. RTCIceCandidate Predstavlja kandidata za server za uspostavljanje Internet veze (ICE) za uspostavljanje RTCPeerConnection veze. RTCIceTransport Predstavlja informacije o mogućnosti povezivanja s Internetom (ICE). RTCPeerConnectionIceEvent Predstavlja događaje koji se događaju na ICE kandidatima, obično RTCPeerConnection . Jedan tip se prosljeđuje ovom objektu događaja: icecandidate. RTCRtpSender Kontroliše strujanje i prijenos podataka kroz objekt tipa MediaStreamTrack za objekt tipa RTCPeerConnection. RTCRtpReceiver Kontrolira prijem i dekodiranje podataka preko objekta tipa MediaStreamTrack za objekt tipa RTCPeerConnection. RTCTrackEvent Označava da je kreiran novi dolazni MediaStreamTrack objekat i da je objekt RTCRtpReceiver dodan objektu RTCPeerConnection. RTCCertificate Predstavlja certifikat koji koristi objekt RTCPeerConnection. RTCDataChannel Predstavlja dvosmjerni kanal podataka između dva čvora veze. RTCDataChannelEvent Predstavlja događaje koji se javljaju kada je objekt tipa RTCDataChannel pripojen objektu tipa RTCPeerConnection datachannel . RTCDTMFSender Kontroliše kodiranje i prijenos dvotonske višefrekventne (DTMF) signalizacije za objekt tipa RTCPeerConnection. RTCDTMFToneChangeEvent Označava dolazni događaj promjene tona sa dvostrukim tonskim više frekvencija (DTMF). Ovaj događaj se ne pojavljuje u mjehurićima (osim ako nije drugačije navedeno) i nije moguće otkazati (osim ako nije drugačije navedeno). RTCStatsReport Asinkrono prijavljuje status za proslijeđeni objekt tipa MediaStreamTrack. RTCIdentityProviderRegistrar Registrira dobavljača identiteta (idP). RTCIdentityProvider Omogućava mogućnost pretraživača da zatraži kreiranje ili verifikaciju deklaracije identiteta. RTCIdentityAssertion Predstavlja identifikator udaljenog čvora trenutne veze. Ako čvor još nije instaliran i potvrđen, referenca interfejsa će vratiti null. Ne mijenja se nakon instalacije. RTCIdentityEvent Predstavlja objekt događaja deklaracije dobavljača identiteta (idP). Događaj objekta tipa RTCPeerConnection. Jedan tip se prosljeđuje ovom događaju identityresult. RTCIdentityErrorEvent Predstavlja objekat događaja greške povezan sa dobavljačem identiteta (idP). Događaj objekta tipa RTCPeerConnection. Dvije vrste greške se prosljeđuju ovom događaju: idpassertionerror i idpvalidationerror. Vodiči Pregled WebRTC arhitekture Ispod API-ja, koji programeri koriste za kreiranje i korištenje WebRTC-a, leži skup mrežnih protokola i standarda povezivanja. Ovaj pregled je prikaz ovih standarda. WebRTC vam omogućava da organizirate vezu u načinu od čvora do čvora za prijenos proizvoljnih podataka, audio, video tokova ili bilo koje njihove kombinacije u pretraživaču. U ovom članku ćemo pogledati životni vijek WebRTC sesije, počevši od uspostavljanja veze i sve dok se ne prekine kada više nije potrebna. Pregled WebRTC API-ja WebRTC se sastoji od nekoliko međusobno povezanih sučelja za programiranje aplikacija (API) i protokola koji rade zajedno kako bi podržali razmjenu podataka i medijskih tokova između dva ili više čvorova. Ovaj članak predstavlja kratka recenzija svaki od ovih API-ja i kojoj svrsi služi. Osnove WebRTC-a Ovaj članak će vas provesti kroz kreiranje RTC aplikacije za više pretraživača. Do kraja ovog članka trebali biste imati radni kanal podataka i medija od tačke do tačke. WebRTC protokoli Ovaj članak predstavlja protokole koji dopunjuju WebRTC API. Ovaj vodič opisuje kako možete koristiti vezu čvor-čvor i povezana

    Evropski korisnici interneta podijeljeni su na dva dijela: prema istraživanju Instituta za istraživanje javnog mnijenja u Allenbachu (Nemačka), Skype, chat i sistemi za instant poruke postali su sastavni dio svakodnevnog života za 16,5 miliona odraslih i djece, 9 miliona koriste ove usluge od slučaja do slučaja, a 28 miliona ih ne dira.

    To se može promijeniti jer Firefox sada integriše tehnologiju komunikacije u realnom vremenu (WebRTC) kao i samog klijenta. Pokretanje audio i video chata sada nije ništa teže od otvaranja web stranice. Servisi kao što su Facebook i Skype se, s druge strane, oslanjaju na rješenja koja koriste poseban klijent i kreiraju nalog.

    WebRTC se ne razlikuje samo po jednostavnosti upotrebe. Ova metoda vam čak omogućava da uspostavite direktnu vezu između dva pretraživača. Na ovaj način audio i video podaci ne prolaze kroz server gdje bi moglo doći do preopterećenja ili gdje administrator nije posebno osjetljiv na privatnost ili zaštitu podataka. Zahvaljujući direktnoj vezi, WebRTC ne zahtijeva ni registraciju ni Račun u bilo kojoj službi.

    Da biste započeli razgovor, potrebno je samo da pratite link. Komunikacija ostaje privatna jer je tok podataka šifriran. Google je počeo aktivno da se bavi komunikacijom u realnom vremenu putem pretraživača još 2011. godine, kada je objavio izvorni kod svoje WebRTC implementacije.

    Ubrzo nakon toga, Chrome i Firefox su dobili vlastite WebRTC motore. Trenutno su njihove mobilne verzije opremljene i ovom tehnologijom i WebView 3.6 motorom instaliranim sa Androidom 5.0, koji koriste aplikacije.

    Za komunikaciju u realnom vremenu, odgovarajući JavaScript interfejsi moraju biti implementirani u web preglednik. Uz GetUserMedia, softver omogućava snimanje iz audio i video izvora, tj. web kamere i mikrofona. RTCPeerConnection je odgovoran za uspostavljanje veze kao i za samu komunikaciju.

    Paralelno sa integracijom pretraživača, radna grupa World Wide Web Consortiuma (W3C) ubrzala je proces standardizacije WebRTC-a. Trebalo bi da bude završen 2015. godine.

    WebRTC se zadovoljava s malo

    Korišćenje WebRTC servisa ne zahteva mnogo resursa, jer server povezuje samo sagovornike. Uspostavljanje veze također nije posebno teško. Prvo, pretraživač signalizira WebRTC serveru da planira pokrenuti poziv. On prima HTTPS link sa servera - komunikacija je šifrovana. Korisnik šalje ovu vezu svom sagovorniku. Pregledač tada traži od korisnika dozvolu za pristup web kameri i mikrofonu.

    Da bi uspostavio direktnu striming vezu sa sagovornikom, pretraživač prima njegovu IP adresu i konfiguracione podatke od WebRTC servisa. Web pregledač druge osobe radi isto.

    Kako bi streaming veza funkcionirala nesmetano i kvalitetno, u pretraživaču rade tri motora. Dvije od njih optimiziraju i komprimiraju audio i video podatke, treći je odgovoran za njihov transport. Šalje podatke koristeći SRTP (Secure Real-time Transport Protocol), koji omogućava šifriranje streaming u realnom vremenu.

    Ako se direktna veza ne može uspostaviti, WebRTC traži drugu putanju. Na primjer, ovo se dešava kada mrežne postavke spriječiti STUN server da prijavi IP adresu. WebRTC standard predviđa da će se u ovom slučaju razgovor odvijati, ali uz međuaktivaciju TURN servera (Traversal Using Relays around NAT). Dakle, na web stranici netscan.co možete provjeriti da li je WebRTC implementiran na vašem računalu i sa vašim pristupom mreži.

    Kako se uspostavlja veza

    Prvo morate registrirati razgovor (1). WebRTC servis pruža link koji se mora poslati sagovorniku. Pretraživač, koristeći STUN server, saznaje sopstvenu IP adresu (2), šalje je servisu i prima IP partnera za uspostavljanje direktne veze (3). Ako STUN ne uspije, razgovor se preusmjerava pomoću TURN servera (4).

    Komunikacija pomoću WebRTC tehnologije u pretraživaču se pokreće pomoću JavaScript kod. Nakon toga, tri motora su odgovorna za komunikaciju: glasovni i video motori prikupljaju multimedijalne podatke sa web kamere i mikrofona, a transportni motor kombinuje informacije i šalje stream u šifriranom obliku koristeći SRTP (Secure Real-time Protocol).

    Koji pretraživači rade sa WebRTC-om

    Chrome i Firefox imaju WebRTC motor koji koristi usluge poput talky.io. Mozilla-in pretraživač može raditi direktno sa svojim klijentom.

    Google i Mozilla nastavljaju da razvijaju ideju komunikacije u realnom vremenu: Chrome može ugostiti WebRTC konferencije sa više učesnika, a Firefoxov novi Hello klijent razvijen je u saradnji sa podružnicom telekom giganta Telefonica. Apple je za sada po strani; ne biste trebali očekivati ​​WebRTC u Safariju. Međutim, postoji mnogo alternativnih iOS aplikacija i Safari dodataka.

    Microsoft ide malo drugačijim putem. Kao vlasnik konkurentskog Skype servisa, ova kompanija neće tako lako kapitulirati pred WebRTC-om. Umjesto toga, Microsoft razvija tehnologiju pod nazivom ORTC (Object Real-Time Communications) za Internet Explorer.

    Razlike u odnosu na WebRTC, kao što su različiti kodeci i protokoli za uspostavljanje kontakta sa serverom, su male i vremenom će se najverovatnije razviti u dodatak WebRTC standardu koji uključuje ove razlike. Tako je samo Apple ostao iza - kao i obično.

    Foto: proizvodne kompanije; goodluz/Fotolia.com

    mob_info