Idan kana ginawa Aikin gefe na JavaScript Kuma idan kuna buƙatar kiran bidiyo, abu ne na al'ada a sami shakku: Shin ya kamata in yi amfani da WebRTC mai tsarki, SDK kamar Agora, Twilio, Mux, ko Zegocloud, ko kuma in yi amfani da RN-WebRTC a cikin React Native? Labari mara daɗi shine babu mafita ɗaya tilo. Labari mai daɗi shine cewa kun fahimci JavaScript na ainihin lokaci, wanda ke sanya ku cikin matsayi mai kyau don yanke shawara mai kyau da kuma guje wa ɓata tsarin.
A cikin layukan da ke ƙasa za ku ga, mataki-mataki, yadda yake aiki WebRTC CikiWace rawa Agora (da sauran masu samar da kayayyaki makamantan haka) ke takawa? Me ake nufi da kafa kayayyakin more rayuwa naka (STUN/TURN, siginar sigina, SFU, sabar kafofin watsa labarai…)? Kuma menene ainihin musayar ra'ayi tsakanin farashi, sarkakiya, da kuma iyawar faɗaɗa kiran bidiyo da kuma yaɗa shirye-shirye a ainihin lokaci?
Menene WebRTC kuma me yasa shine tushen komai?
WebRTC (Samun Sadarwar Yanar Gizo na Gaskiya) Tsarin ƙa'idodi ne na buɗaɗɗen tushe, APIs, da tsare-tsare waɗanda ke ba da damar yawo a ainihin lokaci na sauti, bidiyo, da bayanai kai tsaye daga mai bincike ko manhajar asali, ba tare da plugins ko aikace-aikacen waje ba. W3C da IETF sun daidaita shi kuma duk masu bincike na zamani: Chrome, Firefox, Safari, Edge, Opera, da masu bincike na wayar hannu da yawa suna tallafawa.
Falsafarsu a bayyane take: don ba da damar sadarwa tsara-zuwa-tsara (P2P) tsakanin masu amfani da ke da ƙarancin latency, suna magance duk matsalolin hanyar sadarwa marasa dacewa—codecs, jitter, echo, asarar fakiti, ɓoye bayanai, da sauransu—a bayan fage. Wannan ya haɗa da komai daga kiran bidiyo ɗaya zuwa ɗaya zuwa tsarin yawo mai mu'amala tare da ɗaruruwa ko dubban masu kallo idan kun haɗa shi da kayan more rayuwa da suka dace.
Maɓallan API na WebRTC: getUserMedia, RTCPeerConnection da RTCDataChannel
WebRTC ta dogara ne akan manyan API guda uku na gefen burauza waÉ—anda tabbas za ku yi amfani da su, ko kuna gina mafita ta kanku ko amfani da SDK kamar Agora:
- MediaStream / getUserMedia: don É—aukar bidiyo da sauti (kyamara, makirufo, har ma da allo ko shafuka).
- RTCPeer Connection: don yin shawarwari da jigilar rafukan sauti da bidiyo tsakanin takwarorinsu.
- RTCDataChannel: aika bayanai ba bisa ƙa'ida ba (rubutu, binary, fayiloli) tare da ƙarancin jinkiri tsakanin abokan ciniki.
con samuMai amfani Za ka iya neman damar shiga kyamarar da makirufo ta mai binciken kuma ka karɓi MediaStream wanda sannan kuke dangantawa da wani abu <video> con video.srcObject = stream. Kuna iya nema ƙuntatawa (ƙuduri, girman firam, kyamarar gaba/baya, da sauransu) kuma, idan ba a cika waɗannan ba, za ku sami kurakurai kamar OverconstrainedErrorwanda dole ne ku iya bayar da wasu zaɓuɓɓuka (misali, rage girman daga 1080p zuwa 720p da kuma amfani da gyare-gyare don inganta sautin makirufo).
API na RTCPeer Connection Ita ce zuciyar kiran: tana kula da tattaunawar SDP (tayin/amsa), tattara 'yan takara na ICE (stun/turn), kafa haɗin kai, da kuma watsawa mai tsaro ta hanyar SRTP. Daga lambar ku, kawai kuna ƙirƙirar haɗin, ƙara waƙoƙin kafofin watsa labarai, da kuma mayar da martani ga abubuwan da suka faru kamar onicecandidate u ontrack kuma kuna kula da alamun.
A ƙarshe, RTCDataChannel Yana ba ka damar saita tashoshin bayanai kamar WebSocket, amma tare da iko mai kyau akan aminci da tsari. Yana da amfani don hira ta bidiyo, raba fayiloli, daidaitawar yanayin wasa, ko haɗin gwiwa a ainihin lokaci. Tsarin ya saba da: dataChannel.send() y onmessage cikin mai karba.
Sigina: "manne" da WebRTC bai bayyana ba
Rashin fahimta ta yau da kullun: WebRTC bai haɗa da alamun baRTCPeerConnection yana buƙatar musayar bayanai, amma ba ya ƙayyade yadda za a yi ba. Dole ne ka ayyana hakan da kanka, ko kuma wani ɓangare na uku SDK zai iya taƙaita maka shi.
Ana aika nau'i-nau'i ta hanyar sigina:
- Saƙonnin sarrafa zaman: fara kira, kashe waya, kurakurai.
- Bayanin hanyar sadarwa: Masu neman ICE (an gano adiresoshin IP/tashoshin jiragen ruwa).
- Bayanan bayanai na kafofin watsa labarai: Tayin SDP da amsoshi tare da codecs, ƙuduri, da sauransu.
Ana aiwatar da wannan alamar yawanci tare da shafukan yanar gizoSocket.IO, HTTP (zaɓe/zaɓe mai tsayi), MQTT, ko wasu hanyoyin sadarwa biyu. Tsarin da aka saba amfani da shi shine uwar garken Node.js tare da Socket.IO wanda ke kula da "ɗakuna" da kuma tura saƙonni nau'in rubutu/JSON tsakanin abokan ciniki:
Sabis: karban create or joinYana ƙirƙirar ɗaki idan babu ɗaya, yana tallafawa har zuwa abokan ciniki biyu (don kiran bidiyo na asali), da kuma tura saƙonni. message zuwa ga sauran soket ɗin da ke cikin ɗakin. Kai ne ke da alhakin rashin wuce matsakaicin adadin masu amfani ko kuma tsara dabarun ɗakinka.
abokin cinikiLokacin loda shafin, yana buƙatar sunan ɗaki (ko kuma ya samo asali daga URL ɗin), yana fitar da create or joinSaurari abubuwan da suka faru kamar created, joined, full, ready kuma ya yarda da ɗayan ɓangaren don fara ko ƙin kiran.
Wannan tsari ya dace da kowa samfuri ko aikin gefeYana ba ku sabar siginar mai sauƙi wanda za ku iya aunawa tare da gungu da ma'aunin nauyi idan ana buƙata.
STUN, JUYA, ICE: Shiga ta hanyar NATs da firewalls ba tare da yin hauka ba
A cikin duniyar da ta dace, masu amfani biyu za su kasance a kan hanyoyin sadarwa masu sauƙin shiga kuma su yi haɗin kai tsaye. A cikin duniyar gaske, akwai NATs, firewalls, CGNAT daga masu ba da sabis na intanet da kuma hanyoyin sadarwa na kamfanoni masu ban tsoro. Nan ne ICE ke shigowa, tana haɗa STUN da TURN.
- STUN (Masu Amfani da Zama na Zamani don NAT) yana bawa abokin ciniki damar gano shi Adireshin IP na jama'a da tashar jiragen ruwaSabar STUN tana amsawa ne kawai da wannan bayanin.
- Juya (Tafiya ta Amfani da Relays a kusa da NAT) yana aiki kamar yadda uwar garken jigilar kaya na kafofin watsa labarai lokacin da babu hanyar buÉ—e tashar P2P kai tsaye. Zirga-zirgar sauti/bidiyo tana ratsa ta cikinta, don haka tana cinye bandwidth na uwar garken kuma tana kashe kuÉ—i.
- ICE (Interactive Connectivity Establishment) tana da alhakin gwada duk masu neman aiki (adireshin gida, wanda STUN ke nunawa, da kuma TURN relays) har sai an sami hanya mai kyau.
A aikace, a cikin abin daidaitawa na RTCPeerConnection ɗinka, kuna ƙara jerin Masu hidimar kankara Tare da STUN/TURN URIs, mai binciken zai yi sauran. Idan ka kafa tsarin aikinka, dole ne ka tura da kuma kula da sabar STUN/TURN ɗinka; idan kana amfani da SDK kamar Agora, Twilio, ko Zegocloud, sun riga sun tsara wannan kuma sun shirya don samarwa.
Yawo mai ƙarancin jinkiri a ainihin lokaci: WebRTC vs HLS/DASH

Lokacin da muke magana akan live yawo Akwai duniyoyi guda biyu daban-daban: ka'idojin HTTP (HLS, DASH) da WebRTC. HLS/DASH suna aiki ta hanyar saukewa da kunna sassan bidiyo daga abokin ciniki; wannan ya dace don daidaitawa ta hanyar CDN, amma yana gabatar da latency na daƙiƙa da yawa (Daƙiƙa 5-30 cikin sauƙi).
A gefe guda kuma, WebRTC yana amfani da UDP + RTP kuma yana isar da bidiyon a yanayin "turawa" daga tushe zuwa na'urar kunnawa, tare da ɗan gajeren lokacin farawa da kuma jinkirin da aka saba gani a ƙasa 500 ms (sau da yawa ~ 250 ms) idan hanyar sadarwar tana da kyau. Yana cimma wannan godiya ga:
- Kula da cunkoso haɗakarwa, wanda ke daidaita bitrate da ƙuduri a ainihin lokaci dangane da asarar fakiti, jitter ko RTT.
- Amfani da ingantattun kododi (VP8, VP9, ​​​​H.264; ƙara yawan AV1) tare da hardware hanzari idan akwai.
- Yiwuwar amfani da SVC (Scalable Video Codeing) don mai karɓar ya karɓi layukan da hanyar sadarwarsa/na'urarsa za ta iya tallafawa kawai.
Shi ya sa WebRTC shine zaɓi na halitta don ainihin-lokaci gwanjo, yin fare kai tsaye a wasanni, ciniki, wasanni masu hulɗa, tallafi daga nesa, maganin telemedicine, azuzuwan kama-da-wane masu shiga tsakani ko allon kuɗi waɗanda ba za su iya ɗaukar daƙiƙa da yawa na jinkiri ba.
Matsalar ita ce tsantsar P2P WebRTC ba ta kai ga dubban masu kallo ba; don haka kuna buƙatar hakan. SFUs, sabar kafofin watsa labarai ko dandamali masu haɗakawanda shine ainihin inda mafita kamar Flussonic, Agora, ko makamancin haka suka shigo.
Girman fiye da P2P: SFUs, sabar kafofin watsa labarai, da gine-ginen haÉ—in gwiwa
A cikin kiran bidiyo na mutum-da-ɗaya, WebRTC tana aiki ba tare da wata matsala ba. Amma idan ka fara ƙara masu amfani 10, 20, ko 100, abubuwa suna canzawa: kowane abokin ciniki dole ne ya aika/karɓi rafuka da yawa, CPU ɗinsa yana zafi sosai, kuma hanyar sadarwa ta faɗi. Tsarin gargajiya guda uku sun bayyana a nan:
- MCU (Sashin Kula da Maki da yawa)Sabar tana karɓar dukkan kwararar, tana haɗa su, sannan ta aika da kwarara guda ɗaya ga kowane abokin ciniki. Riba: ƙarancin amfani da albarkatu ga abokin ciniki. Rashin amfani: nauyin uwar garken mai yawa, ƙarancin sarrafa inganci na mutum ɗaya.
- SFU (Sashen Gabatarwa na Zaɓaɓɓu)Sabar tana karɓar rafuka ta kuma tura su gaba ba tare da haɗa su ba. Kowane mai kallo yana karɓar rafukan da yake buƙata, wataƙila a cikin halaye daban-daban. Wannan shine tsarin da aka fi amfani da shi a yau don taron bidiyo mai amfani da yawa da kuma yawo mai ma'ana mai iya daidaitawa.
- Tsarin gine-gine masu haɗaka WebRTC + HLS/DASHAna amfani da WebRTC don cin abinci da hulɗa, yayin da HLS/DASH ke rarrabawa ga manyan masu sauraro waɗanda ba sa buƙatar hulɗa ta ainihin lokaci. Daidaito ne tsakanin ultra low latency ga "'yan wasan kwaikwayo" da kuma babban sikelin "masu kallo".
Sabar kafofin watsa labarai kamar su Flussonic Wasu kuma suna ba da kayan baya da ake buƙata: suna karɓar rafin WebRTC, suna canza shi idan ya cancanta, suna tura shi ta hanyar WebRTC zuwa ga wasu abokan ciniki, ko kuma suna canza shi zuwa ka'idojin HLS don rarraba taro. Wannan nau'in kayan aikin shine, a aikace, yana sa ya zama da amfani a wuce kiran mutum-da-mutum ba tare da sake fasalin dabarar ba.
Yawancin lokuta na amfani: kiran bidiyo, yawo, IoT, da ƙari mai yawa
WebRTC ya zama ruwan dare gama gari, kuma wataƙila kuna amfani da shi kowace rana ba tare da kun sani ba. Wasu misalan inda ya dace musamman sune... kiran bidiyo da taron bidiyo:
- Kiran bidiyo da taron bidiyoGoogle Meet, Jitsi, Slack, Microsoft Teams da sauran kayan aiki da yawa sun dogara da WebRTC (wani ɓangare ko gaba ɗaya) don bidiyo, sauti da raba allo.
- Ayyukan yawo na ainihin lokaciDandamali kamar Twitch, Meta Live, Vimeo Livestream ko kayan aiki kamar Streamyard suna haÉ—a WebRTC don ingest da sauran fasahohi don rarrabawa da yawa.
- Hira da aika saƙonni tare da raba fayiloliGodiya ga RTCDataChannel za ku iya yin hira ta ainihin lokaci, raba fayiloli, daidaita matsayi, da sauransu, ba tare da sabar kafofin watsa labarai na tsakiya ba.
- Wasannin girgije da kuma wasan multiplayerAyyuka kamar GeForce NOW ko Xbox Cloud Gaming suna amfani da irin wannan fasahar don bidiyo mai hulÉ—a; yawancin wasannin P2P suna amfani da WebRTC don daidaita wasan.
- IoT da sa idoKyamarorin zamani, na'urorin saka idanu na jarirai, ƙararrawar ƙofa ta bidiyo, ko jiragen sama marasa matuƙa za su iya aika su real-lokaci video zuwa na'urorin hannu da masu bincike ta amfani da WebRTC.
- Ilimi da maganin telemedicine: azuzuwan kama-da-wane tare da allunan fari, tambayoyi da bidiyo mai hanyoyi biyu, ko shawarwarin likita ta yanar gizo inda jinkiri da tsaro suke da mahimmanci.
Tsaron WebRTC: ɓoyewa, izini, da mafi kyawun ayyuka
Tsaro a cikin WebRTC ba ƙari bane: an gina shi a ciki. haɗe daga zaneDuk wani abu da aka haɗa ta hanyar kafofin watsa labarai an ɓoye shi kuma APIs ɗin suna aiki ne kawai daga asali masu tsaro (HTTPS ko localhost), kodayake yana da kyau a yi taka tsantsan. zamba ta hanyar kiran bidiyo.
- DTLS (Tsaron Layer na Datagram Transport) yana ɓoye bayanai a cikin hanyar wucewa.
- SRTP (Tsarin Sufuri na Zamani Mai Tsaro) yana kare sauti da bidiyo ta yadda ba za a iya sarrafa su cikin sauƙi ko kuma a katse su ba.
- Samun damar zuwa kamara da makirufo Yana buƙatar izinin mai amfani a bayyane, tare da alamun gani da ake iya gani (alamomi, dige-dige masu launi, da sauransu).
- Tunda babu plugins da za a saka, haɗarin software mara kyau an ɓoye shi a cikin kari na ɓangare na uku ko binary.
Duk da haka, dole ne ka kula da yanayinka: amfani HTTPS a ko'inaYi bitar izinin da ka buƙata, ci gaba da sabunta masu bincike da ɗakunan karatu, kuma kada ka yi watsi da tsaron sabar siginar ka ko kuma REST APIs ɗinka.
WebRTC idan aka kwatanta da sauran fasahohi: VoIP, WebSockets da dandamali na mallakar kai
Idan kana zuwa daga duniyar VoIP ta gargajiya, za ka saba da SIP, PBX, wayoyin salula masu laushi, da kuma sabar masu tsada. WebRTC tana canza yanayin: ba kwa buƙatar buƙatar mai amfani ya samar da wani bayani. abokin ciniki na tebur Ba a buƙatar takamaiman kayan aiki; mai bincike da uwar garken sigina mai sauƙi sun isa.
A kan VoIP na GargajiyaWebRTC yana rage nauyin da ke kan manyan kayayyakin more rayuwa kuma yana buɗe ƙofa ga aikace-aikacen da aka haɗa kai tsaye cikin yanar gizo. A lokuta da yawa, zaku iya sake amfani da SIP backend ɗinku ta hanyar ƙofofin shiga waɗanda ke fassara sigina zuwa WebRTC.
Game da shafukan yanar gizoYa kamata a ɗauke su a matsayin ƙarin bayani: sun dace da sanarwa, tattaunawa mai sauƙi, ko sabunta matsayi, amma ba don kafofin watsa labarai masu zurfi ba. An inganta WebRTC don sauti/bidiyo na ainihin lokacitare da sarrafa cunkoso, kododi, buffer na jitter, da sauransu. A aikace, ayyuka da yawa suna amfani da WebSockets don sigina da WebRTC don jigilar kafofin watsa labarai.
Idan ka kwatanta su da dandamali kamar Zoom, GoToMeeting ko WebExBambancin yana cikin samfurin: waÉ—annan kayan aikin mafita ne masu rufewa, galibi tare da aikace-aikacen tebur na tilas da kuma madadin baya na musamman. WebRTC, a gefe guda, fasaha ce ta asali; zaku iya gina "mini-Meet" É—inku a saman sa ko haÉ—a shi da ayyukan da suka riga suka yi amfani da shi (kamar Google Meet ko Microsoft Teams).
Haɓakawa tare da WebRTC: ainihin rikitarwa da matsaloli na yau da kullun
Duk da cewa APIs ɗin suna da sauƙi a kan takarda, aiwatar da WebRTC daga farko ya fi rikitarwa. Za ku yi fama da:
- Alamar musamman: tsara saƙonni, ɗakuna, sarrafa sake haɗawa, sake gwadawa, kurakurai.
- Gudanar da Kankara/Tsayawa/TsayawaSanya sabar, sa ido kan amfani da TURN (wanda ke cinye bandwidth), daidaita lokacin ƙarewa.
- Ingancin sabis (QoS): daidaita saurin bit, sarrafa hanyoyin sadarwa marasa ƙarfi, yin shawarwari kan kododi, gano lokacin da haɗin ya lalace kuma ya mayar da martani.
- ma'auni: ƙaura daga P2P mai sauƙi zuwa ƙungiyoyi, sannan zuwa ɗaruruwan masu amfani, gabatar da SFUs ko sabar kafofin watsa labarai ba tare da karya ƙirar asali ba.
- Compatibilidad entre navegadoresKo da yake yanayin yana da kyau, har yanzu za ku sami wasu bayanai. Yi amfani da adaftar.js Har yanzu ana ba da shawarar sosai.
A cikin ƙaramin aiki na gefe, kafa sabar Node tare da Socket.IO da STUN na jama'a na iya isa ga kiran 1:1 ko ƙananan ƙungiyoyi. Amma idan ra'ayinka ya girma kuma kuna buƙatar babban taron jama'aKo dai ingantaccen tsarin kula da inganci ne, rikodin bayanai, nazari, rubuce-rubuce, ko kuma samun kuɗi, nan ba da jimawa ba za ku yi la'akari ko haɗa su uwar garken kafofin watsa labarai na kansako kuma canzawa zuwa ga ƙwararren mai bada sabis.
CDN na ainihin lokaci tare da SDKs: Agora, Twilio, Mux, ZEGOCLOUD…
Ayyuka kamar Agora, Twilio, Mux, ZEGOCLOUD ko makamancin haka fasahohin suna gina wani tsari mai daraja a saman WebRTC wanda ke ceton ku watanni na aiki da ciwon kai marasa adadi:
- suna maka a cibiyar sadarwa ta duniya tare da SFUs da aka rarraba a ko'ina cikin duniya, an inganta su don ƙarancin jinkiri.
- Takaitaccen Bayani STUN/TURN, sigina, sake gwadawa, sake haÉ—awa da kuma tsarin gudanarwa mai rikitarwa.
- Sun haÉ—a da SDKs masu kyau don yanar gizo, iOS, Android, React Native da sauran tsare-tsare.
- Suna bayar da ƙarin bayani kamar rikodi, watsa shirye-shirye zuwa RTMP/HLS, matsakaici, ƙididdiga na ainihin lokaci, sarrafa inganci, rawar da masu amfani ke takawa (mai masaukin baki, masu sauraro, mai magana), da sauransu.
Kudin, kamar yadda kuke tsammani, shine babbar matsalar: idan kuna da ɗan kuɗi. bidiyo na mintuna da yawa Ko kuma, tare da adadi mai yawa na masu amfani a lokaci guda, lissafin zai yi tashin gwauron zabi. Bugu da ƙari, za ku dogara ga dandamalinsu da canje-canjen farashinsa ko API.
A cikin takamaiman yanayin ku, tare da ƙwarewa mai ƙarfi a cikin JavaScript na ainihin lokaciZaɓi mai ma'ana shine a fara da SDK don hanzarta haɓakawa, tabbatar da samfurin, da kuma koyo game da tsarin ɗakinsa, rawar da yake takawa, zagayowar rayuwa, da kuma kula da jiha. Daga baya, idan aikin ya fara kuma farashi ya zama matsala, a hankali za ku iya ƙaura sassan mafita zuwa dandamali mafi ƙarfi. Kayayyakin more rayuwa na WebRTC na mallakarsu ko kuma dogara da sabar watsa labarai ta Flussonic don sarrafa matakin rarrabawa.
Mafi kyawun ayyuka da kayan aiki don gyara kuskuren WebRTC
Domin gujewa ɓacewa a cikin akwatin baƙi na WebRTC, yana da kyau a dogara da kayan aikin da suka riga suka wanzu a cikin masu bincike da kuma yanayin ƙasa:
- chrome: // webrtc-cikin gida (o ku:webrtc (a cikin Firefox): kwamitin tare da cikakken ƙididdiga na haɗi, bitrates, asarar fakiti, lambobin aiki, da sauransu.
- adaftar.js: wani tsari mai kula da al'umma wanda ke sassauta bambance-bambance tsakanin masu bincike da sigogi.
- test.webrtc.org: don duba kyamara, makirufo, hanyar sadarwa da kuma jituwa ta gabaÉ—aya akan na'ura.
- Samfuran Hukuma a webrtc.github.io/samples: misalan ƙuntatawa, haɗin kai na takwarorinsu, hanyoyin bayanai, raba allo… suna da matuƙar amfani don kwafi tsare-tsare.
Haka kuma kyakkyawan ra'ayi ne a tsara lambar ta hanyar raba ta a sarari Layer na sigina (soket, ɗakuna, saƙonni) na layin Tsarkakken WebRTC (ƙirƙirar haɗi, sarrafa kwarara, masu kula da abubuwan da suka faru). Wannan yana ba ku damar maye gurbin siginar baya ko sabar kafofin watsa labarai ba tare da sake rubuta duk dabarun abokin ciniki ba.
Da duk abubuwan da ke sama a kan teburi, don aikin gefe wanda ke farawa kuma inda kuke daraja sosai lokacin haɓakawa kamar yadda farashi na matsakaiciDabara mafi daidaito yawanci ita ce farawa da SDK na ainihin lokaci bisa WebRTC wanda ke ba ku damar maimaitawa cikin sauri a cikin React/React Native, shiga cikin yadda suke gudanar da ayyuka, zaman, zagayowar rayuwa da yanayin rayuwa, kuma a lokaci guda ku zurfafa cikin WebRTC "ta fata" (getUserMedia, RTCPeerConnection, RTCDataChannel, sigina tare da Node+Socket.IO, STUN/TURN, SFU) don kada a ɗaure ku har abada zuwa dandamali ɗaya kuma ku sami damar yin tsalle zuwa mafita ta musamman lokacin da samfurin ya tabbatar da hakan.