
Kuyambira masiku oyambirira akugwira ntchito pamtambo wowonera kanema wamtambo, tidakumana ndi vuto, popanda yankho lomwe titha kusiya pa Ivideon - iyi inali Everest yathu, kukwera komwe kunatenga mphamvu zambiri, koma tsopano tili ndi potsiriza. anamata nkhwangwa ya ayezi pamwamba pa chithunzithunzi cha nsanja.
Dongosolo lotumizira ma audio ndi makanema pa intaneti siliyenera kudalira zida, makasitomala a Webusayiti ndi miyeso yomwe amathandizira, komanso kugwira ntchito moyenera pamaso pa Network Address Translators ndi firewall. Wogwiritsa ntchito kanema wamtambo akufuna kuti apeze ntchitoyi, ngakhale atagwiritsa ntchito makamera a analogi, ndipo amakonda kuwonera kanema wamoyo pazida zamakono kwambiri.
Ndizofunikira kwambiri kuti wosuta akufuna kuwonera makanema osachedwetsa pang'ono. Pafupifupi njira yokhayo yosonyezera vidiyo yokhala ndi latency yotsika mumsakatuli ndikugwiritsa ntchito WebRTC (mawebusayiti anthawi yeniyeni). WebRTC ndi ukadaulo waukadaulo wotumizira anzanu mavidiyo ndi ma audio mu asakatuli, omwe poyamba adapangidwa kuti azitumiza ndikuseweranso mavidiyo omwe ali ndi latency yochepa. Pachifukwa ichi, mwa zina, protocol ya UDP imagwiritsidwa ntchito.
Tisanakuuzeni zomwe injini yatsopano imapatsa wogwiritsa ntchito, tikukumbutsani chifukwa chake komanso chifukwa chake timathandizira matekinoloje a HLS, komanso chifukwa chomwe tasankha kupitilira.
Injini ya HLS: zabwino ndi zoyipa

()
Ukadaulo wa HLS (HTTP Live Streaming) unapangidwa ndi Apple, kotero sizodabwitsa kuti unayamba kugwiritsidwa ntchito pa zipangizo za Apple. Masiku ano, kanema wa HLS umathandizidwanso ndi pafupifupi mabokosi onse okhazikika komanso zipangizo zambiri zomwe zimagwiritsa ntchito OS. Android.
Injini ya HLS imagwiritsa ntchito codec yodziwika bwino ya kanema ya H264 kuphatikiza ndi AAC kapena MP3 audio mitsinje kuti iwonetsere mavidiyo. Zonse zomvera ndi makanema zimayikidwa mu chidebe chonyamulira cha MPEG-TS. Pakufalitsa kudzera pa protocol ya HTTP, zomwe zili mumtsinjewo zimagawidwa m'zidutswa zomwe zafotokozedwa m'm3u8 playlists. Ndipo pokhapokha zidutswa izi, pamodzi ndi playlists, zimafalitsidwa kudzera HTTP. Chunking imangotanthauza kuchedwa mumasekondi. Ichi ndi mbali ya MPEG-TS chidebe.
Injini ya HLS imathandiziranso mitsinje yambiri, Live/VOD.
Ubwino waukulu wa HLS:
- Thandizo lomangidwa mu asakatuli onse akuluakulu;
- mosavuta kukhazikitsa (poyerekeza ndi WebRTC);
- Ndikosavuta komanso kothandiza kukonza zowulutsa zamitundu yonse kwa omvera ambiri chifukwa zigawo zitha kukwezedwa ku CDN kamodzi.
Ngakhale kuphweka kwa injini, sikuti zonse zimakhala zosalala monga zikuwonekera. Vuto lalikulu ndikuti opanga osewera a chipani chachitatu achoka pamalangizo a Apple, mwachitsanzo potengera mawonekedwe amawu omwe amathandizidwa. Makamaka, Madivelopa ambiri anayamba kuwonjezera luso ntchito ndi otchuka Audio mitsinje: MPEG2 kanema, MPEG2 zomvetsera, etc. Chifukwa, iwo anayenera kulenga osiyana playlist akamagwiritsa kwa osewera osiyanasiyana.
Koma vuto limodzi lalikulu ndi injini HLS ndi mkulu latency kusamutsa deta.
Chiyambi cha "mabuleki"
Chifukwa chachikulu cha kuchedwa kwambiri kwa HLS ndi chakuti opanga mapulogalamu adapanga injini kuti apeze zithunzi zapamwamba kwambiri. Chifukwa chake, magawo anthawi ya chimango omwe amagwiritsidwa ntchito komanso kukula kwa buffer yosewera sizoyenera kuwulutsa makanema. Chifukwa cha izi, pali kuchedwa kwakukulu pakufalitsa makanema, komwe kumatha kukhala masekondi 5-7.
Kumbali imodzi, izi sizochuluka, mwachitsanzo, kwa iwo omwe amawonera kanema kuchokera pa seva yochitira mavidiyo. Koma pamakina owonera makanema, kuchedwa kufalitsa makanema kungakhale kofunika kwambiri.
Ngati mukuwona ofesi yomwe antchito amayang'ana kuchokera kwa oyang'anira awo kamodzi pa ola, ndiye kuti kuchedwa kwa masekondi a 5 kulibe kanthu. Koma anthu anayamba kudandaula kuti, mwachitsanzo, pofalitsa masewera a mpira, adalemba kale GOOOOL pamacheza, koma izi sizinali pavidiyo :). Tili kale ndi angapo ogwiritsa ntchito pomwe Ivideon iyenera kusintha Skype.
Kodi ndizotheka kumenya latency mu HLS? Yankho la funsoli likumveka ngati mawu a munthu wodziwa kupha makoswe pa phunziro kwa akatswiri ongodziwa zolimbana ndi tizilombo: “Khoswe sangatheretu, koma manambala awo akhoza kuchepetsedwa pang’ono.” Mofanana ndi kuchedwa kwa HLS, sikungatheke kuchepetsa mpaka zero, koma pali zothetsera pamsika zomwe zingachepetse kwambiri kuchedwa.
Mabala abwino
Kuipa kwina kwa injini ndiko kugwiritsa ntchito mafayilo ang'onoang'ono potengera kusamutsa deta. Zikuwoneka kuti cholakwika ndi chiyani ndi izi?
Aliyense amene anayesa kukopera chiwerengero chachikulu cha mafayilo ang'onoang'ono kuchokera ku sing'anga kupita ku china mwina adawona kuti liwiro lolemba la seti yotere ndilotsika kwambiri kuposa fayilo imodzi yayikulu yofanana. Ndipo kuchuluka kwa mwayi wofikira pa hard drive kumawonjezeka kwambiri, zomwe zimasokoneza magwiridwe antchito a kompyuta yonse. Chifukwa chake, kutumiza deta yamavidiyo m'magulu ang'onoang'ono a 10 kumathandizanso kuwonjezereka kwa injini latency.
Tiyeni tifotokoze mwachidule zabwino zonse ndi zoyipa zaukadaulo wa HLS.
Ubwino wa HLS:
- Kutha kugwira ntchito ndi zida zilizonse. Mutha kuwona makanema pazida zilizonse zamakono, kukhala foni yam'manja, piritsi, laputopu kapena PC yapakompyuta. Chachikulu ndichakuti msakatuli ndi waposachedwa komanso wogwirizana ndi HTML5 ndi Media Source Extensions.
- Ubwino wazithunzi. Ntchito yosinthira deta yomwe imagwiritsidwa ntchito imakupatsani mwayi wosinthira mavidiyo omwe amafalitsidwa kutengera bandwidth ya intaneti, pomwe ma algorithm amayesetsa kukhalabe abwino kwambiri.
- Palibe chifukwa chosinthira zovuta za zida za wogwiritsa ntchito.
kuipa:
- Thandizo lochepa pogwira ntchito ndi injini pazida zina.
- Kuchedwa kwakukulu pakufalitsa zithunzi.
- Kuwonjezeka kwakukulu pamutu ndi zovuta za kukhathamiritsa chifukwa chogwiritsa ntchito mafayilo ang'onoang'ono. Chifukwa cha chikhalidwe cha chidebecho, sitidzatha kupeza latency yotsika kuposa kukula kwa gawo.
Kuipa kwa HLS kunaposa ubwino wake kwa ife ndipo kunatikakamiza kuyang'ana njira zina.
WebRTC ndi chiyani

()
Pulatifomu ya WebRTC idapangidwa ndi Google mu 2011 kuti itumize mavidiyo akukhamukira ndi zomvera pakati pa asakatuli ndi mapulogalamu am'manja opanda latency yochepa. Pachifukwa ichi, protocol ya UDP yokhazikika komanso ma algorithms apadera owongolera mafunde amagwiritsidwa ntchito. Masiku ano ndi ntchito yotseguka, ikusungidwa ndi Google ndipo ikupangidwa.
WebRTC ndi gulu la matekinoloje amakanema a anzanu ndi anzawo komanso kufalitsa mawu. Izi ndizo, mwachitsanzo, asakatuli ogwiritsa ntchito WebRTC amatha kusamutsa deta kwa wina ndi mzake mwachindunji, popanda kugwiritsa ntchito ma seva akutali kuti asunge ndi kukonza deta. Zidziwitso zonse zimakonzedwanso ndi asakatuli a ogwiritsa ntchito omaliza komanso mapulogalamu am'manja.
Kusavuta ndi luso lalikulu la ukadaulo uwu zayamikiridwa ndi opanga ma asakatuli onse otchuka. Thandizo la WebRTC likupezeka pano mu Mozilla Firefox, Opera, Google Chrome (ndi ma asakatuli onse ozikidwa pa Chromium), komanso mu mapulogalamu a pafoni omwe ali ndi ntchito. Android ndi iOS.
Pazabwino zake zonse zosakayikitsa, WebRTC ili ndi zovuta zingapo.
Zovuta kusankha
Tekinoloje ya WebRTC ndiyovuta kwambiri potengera kuyanjana kwa maukonde chifukwa ili pafupi ndi P2P. Ndikovuta kukonza, kuyesa, komanso kuchita zinthu mosadziwika bwino. Nthawi yomweyo, tifunika kuthana ndi NAT ndi firewall, tifunika kuonetsetsa kuti tikugwira ntchito pama network pomwe UDP yatsekedwa.
Kukhazikitsa kwa Google WebRTC ndikovuta kugwiritsa ntchito. Palinso kampani yonse yomwe imapereka misonkhano ya SDK. Kuphatikiza apo, kukhazikitsa kwa Google kunali kovuta kwambiri kuphatikiza ndi dongosolo lathu popanda kuyikanso kanema wonsewo.
Komabe, takhala tikufuna kupatsa ogwiritsa ntchito mwayi wogwira ntchito ndi kanema wa "live" wathunthu ndikuchepetsa kutsalira pakati pa chithunzi chomwe chili pazenera ndi zochitika zomwe. Kuphatikiza apo, tinali ndi chikhumbo chogwiritsa ntchito makamera a PTZ, komwe kuchedwa kuli kofunikira, komasuka.
Poganizira kuti zida zina zotsutsana ndi kuchedwa zikadali ndi magwiridwe antchito ochepa komanso zimagwira ntchito moyipa kwambiri, tinaganiza zogwiritsa ntchito WebRTC.
Tachita chiyani

Kugwiritsa ntchito bwino nsanja ya WebRTC si ntchito yophweka. Kulakwitsa kulikonse kapena kusalondola kungayambitse kuchedwetsa kufalitsa mavidiyo osati kucheperachepera poyerekeza ndi nsanja zina, komanso kuwonjezeka.
Kuti WebRTC igwire ntchito moyenera, choyamba, ndikofunikira kukweza ukadaulo wa stack kuti mugwire ntchito ndi makanema apa intaneti. Ndi zomwe tinachita.
Choyamba, tidakhazikitsa seva ya WebRTC yosainira pa Websocket, ndikuyikanso seva ya anzawo pa WebRTC mumtambo potengera webrtc.org SDK. Ntchito yake ndi kugawira mavidiyo mitsinje kwa kasitomala WebRTC anzawo mu H.264 + Opus/G.711 mtundu popanda mavidiyo transcoding.
Tidasankha Websocket ngati njira yowonetsera chifukwa ili kale ndi chithandizo chapamwamba pamasakatuli onse otchuka. Chifukwa cha ichi, mungathe kuchepetsa kwambiri chitukuko chapamwamba, komanso kupewa kutaya nthawi ndi chuma pa TCP mobwerezabwereza ndi TLS kugwirana chanza poyerekeza ndi AJAX.
Chowonadi ndi chakuti, mwachisawawa, WebRTC sichipereka ndondomeko yowonetsera yofunikira kuti ikonzedwe bwino, kusunga, ndi kuthetsa kuyankhulana kwakanema zenizeni pakati pa gwero ndi mapulogalamu a kasitomala.
Ndipo kuti tigwiritse ntchito ukadaulo wosainira mwaokha, tinkafunika kupanga seva yathu yolumikizirana ndi ma protocol angapo apaintaneti (Websocet, WebRTC). Ndipo ndikutha kuyang'anira mosamala magawo ndi zidziwitso munthawi yeniyeni, kasamalidwe kakanema ndi zina zambiri.
Tinagonjetsa malire a P2P mwa kuchepetsa latency osati kudzera mu P2P, koma kudzera mu UDP ndi kuyendetsa kayendedwe kuti muchepetse latency. Izi zimamangidwanso mu WebRTC, chifukwa chogwiritsa ntchito chachikulu ndi zokambirana za p2p kudzera pa msakatuli.
M'makasitomala am'manja, tidakhazikitsa wosewerayo pogwiritsa ntchito webrtc.org SDK, popeza ndiyokhayo yomwe imagwiritsa ntchito kuwongolera bwino, ili ndi ziwembu zonse zodziwika bwino za Forward Error Correction (FEC), ndikukhazikitsa njira yotumiziranso mapaketi a asakatuli onse. Ndikofunikiranso kuti webrtc.org SDK ikukonzedwa ndi Google.
Zotsatira zakugwiritsa ntchito WebRTC ndi zotani?
Kuti muwone kanema waposachedwa pamakamera, tawonjeza chosewerera chatsopano chotengera WebRTC ku akaunti yanu. Imapereka kuthamanga kwamavidiyo othamanga komanso kumathetseratu vuto la latency likuwonjezeka pamene nthawi yowonera ikuwonjezeka.
Pambuyo poyambitsa chithandizo cha WebRTC muutumiki wamtambo wa Ivideon, tikhoza kunena ndi chidaliro chonse kuti makasitomala athu tsopano akhoza kuwonera kanema wamoyo wonse. Tsopano kuchedwa pakuwulutsa mavidiyo sikudutsa sekondi imodzi! Poyerekeza, injini yam'mbuyo ya HLS idapereka makanema ndikuchedwa kwa masekondi 5-7. Kusiyanitsa kwa liwiro lowonetsera kanema ndikofunikira kwambiri, ndipo wogwiritsa ntchito adzazindikira atangoyamba kugwira ntchito ndi makanema athu.
Monga momwe timayembekezera, kukhazikitsidwa kwa wosewera watsopano kwathandizira kuyankha kwa PTZ komanso kulankhulana kwamawu ndi kamera.

Pali mfundo imodzi yokha yosaoneka bwino imene tikufuna kuifotokoza. Wosewerera watsopano wa WebRTC akugwira ntchito poyesa. Ndipo ndichifukwa chake sitimalola kuti makasitomala athu onse akhale osakhazikika. Koma mutha kuyiyambitsa nokha poyambitsa chinthu chofananira pazokonda za kamera (kuti muchite izi, pitani ku ).
Mawonekedwe a kukhazikitsidwa kwa WebRTC mu ntchito ya Ivideon

WebRTC akadali ukadaulo woyesera pakadali pano. Thandizo lake silinakhazikitsidwe bwino m'masakatuli onse ndi zida za ogwiritsa ntchito, komanso osati makamera onse.
Ichi ndichifukwa chake sitinapange wosewera wa WebRTC kukhala wokhazikika kwa ogwiritsa ntchito onse.
Pakadali pano, tikupangira kugwiritsa ntchito WebRTC mu asakatuli a Google Chrome okha. Mitundu yaposachedwa ya Firefox ndi Safari imathandiziranso ukadaulo uwu, koma, mwatsoka, ukadali wosakhazikika.
Sitinagwiritsebe ntchito thandizo la WebRTC pakusakatula pazida zam'manja. Pakadali pano, ngati mutalowa kuchokera pa foni yam'manja ndikutsegula WebRTC, njirayi sigwira ntchito. Komabe, WebRTC ikupezeka pamapulogalamu athu am'manja a и .
Ndipo pomaliza nkhani ya mawonekedwe a WebRTC muutumiki wathu, tiyeni tiwone mfundo zina ziwiri zobisika.
Choyamba, ukadaulo umayang'ana kwambiri kuwulutsa mavidiyo amoyo munthawi yeniyeni. Chifukwa chake, ngati njira yanu ilibe bandiwifi yokwanira yotumizira kanemayo, mudzawona kugwa kwa chimango (ndi HLS mudzawona mavidiyo akuzimiririka ndikuwonjezereka kwa latency, koma sipadzakhala madontho a chimango), koma kanemayo idzaulutsidwabe zenizeni. nthawi.
Kachiwiri, popeza ukadaulo wapangidwa kuti uzigwira ntchito makamaka ndi kanema wamoyo munthawi yeniyeni, sitigwiritsa ntchito kuti tigwiritse ntchito ndi data yosungidwa.
Zosintha zina pautumiki
Pakadali pano, Flash siyikugwiranso ntchito pamakina osankha injini. Mutha kugwiritsabe ntchito wosewera wotere, koma kuti muchite izi muyenera kusankha pamanja muakaunti kapena zoikamo za kamera. Uku sikulemekeza mafashoni, kungoti malinga ndi ziwerengero za ntchito yathu, palibe ogwiritsa ntchito omwe atsala ndi Flash. Ndipo poyesa kudziwa ngati msakatuli wa wosuta amathandizira, timataya pafupifupi masekondi awiri a nthawi yamtengo wapatali.
Nazi mwachidule za zosintha zomwe zikukuyembekezerani mumtambo wathu wowonera makanema ndi akaunti yanu. Khalani nafe ndikutsatira nkhani!
Source: www.habr.com
