WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera

WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera

Kuanzia siku za kwanza za kufanya kazi kwenye mfumo wa ufuatiliaji wa video wa wingu, tulikabiliwa na shida, bila suluhisho ambalo tunaweza kukata tamaa kwa Ivideon - hii ilikuwa Everest yetu, kupanda ambayo ilichukua nguvu nyingi, lakini sasa tuna hatimaye. kupachika shoka la barafu juu ya fumbo la jukwaa.

Mfumo wa kusambaza sauti na video kwenye mtandao haupaswi kutegemea vifaa, wateja wa Mtandao na viwango wanavyounga mkono, na pia kufanya kazi kwa usahihi mbele ya Watafsiri wa Anwani za Mtandao na ngome. Mtumiaji wa ufuatiliaji wa video kwenye mtandao anataka kufikia huduma hiyo, hata kama anatumia kamera za analogi, na anapendelea kutazama matangazo ya video ya moja kwa moja kwenye kifaa cha kisasa zaidi.

Ni muhimu sana kwamba mtumiaji anataka kutazama video bila kuchelewa kidogo. Takriban njia pekee ya kuonyesha video yenye latency ya chini kwenye kivinjari ni kutumia WebRTC (mawasiliano ya mtandaoni kwa wakati halisi). WebRTC ni seti ya teknolojia za uwasilishaji wa video na sauti kutoka kati-kwa-rika kwenye vivinjari, ambazo ziliundwa awali kwa ajili ya kusambaza na kucheza tena mitiririko ya video yenye utulivu wa chini. Kwa kusudi hili, kati ya mambo mengine, itifaki ya UDP inatumiwa.

Kabla hatujakuambia ni nini injini mpya inampa mtumiaji, tutakukumbusha kwa nini na kwa nini tunaunga mkono teknolojia za HLS, na kwa nini tuliamua kuendelea.

Injini ya HLS: faida na hasara

WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera
(c)

Teknolojia ya HLS (HTTP Live Streaming) ilitengenezwa na Apple, kwa hivyo haishangazi kwamba iliungwa mkono kwa mara ya kwanza kwenye vifaa vya Apple. Leo, video ya HLS pia inaungwa mkono na karibu visanduku vyote vya kuweka juu na vifaa vingi vinavyoendesha OS. Android.

Injini ya HLS hutumia kodeki ya video inayojulikana ya H264 pamoja na mitiririko ya sauti ya AAC au MP3 ili kutiririsha data ya video. Mtiririko wote wa data ya sauti na video umewekwa kwenye chombo cha usafiri cha MPEG-TS. Kwa uwasilishaji kupitia itifaki ya HTTP, habari iliyomo kwenye mkondo imegawanywa katika vipande vilivyoelezewa katika orodha za kucheza za m3u8. Na kisha tu vipande hivi, pamoja na orodha za kucheza, hupitishwa kupitia HTTP. Chunking kiotomatiki inamaanisha kucheleweshwa kwa sekunde. Hiki ni kipengele cha chombo cha MPEG-TS.

Injini ya HLS pia inasaidia mitiririko ya multibitrate, Live/VOD.

Faida kuu za HLS:

  • usaidizi wa kujengwa katika vivinjari vyote vikuu;
  • urahisi wa utekelezaji (ikilinganishwa na WebRTC);
  • Ni rahisi sana na bora kupanga kila aina ya matangazo kwa hadhira kubwa kutokana na ukweli kwamba sehemu zinaweza kupakiwa kwenye CDN mara moja.

Licha ya unyenyekevu wa injini, sio kila kitu ni laini kama inavyoonekana. Tatizo kuu ni kwamba watengenezaji wa mchezaji wa tatu wameondoka kutoka kwa mapendekezo ya Apple, kwa mfano katika suala la muundo wa sauti unaoungwa mkono. Hasa, watengenezaji wengi walianza kuongeza uwezo wa kufanya kazi na mito ya sauti maarufu: video ya mpeg2, sauti ya mpeg2, nk Matokeo yake, walipaswa kuunda muundo tofauti wa orodha ya kucheza kwa wachezaji tofauti.

Lakini mojawapo ya matatizo makubwa ya injini ya HLS ni latency ya juu katika uhamisho wa data.

Asili ya "breki"

Sababu kuu ya latency ya juu ya HLS iko katika ukweli kwamba watengeneza programu waliunda injini ili kupata picha za ubora wa juu. Kwa hivyo, vigezo vya muda wa fremu vinavyotumika na saizi ya bafa ya uchezaji havifai kwa matangazo ya moja kwa moja ya video. Kwa sababu ya hili, kuna ucheleweshaji wa hali ya juu katika uwasilishaji wa picha za video, ambazo zinaweza kuwa sekunde 5-7.

Kwa upande mmoja, hii sio nyingi, kwa mfano, kwa wale wanaotazama sinema kutoka kwa seva ya mwenyeji wa video. Lakini kwa mifumo ya ufuatiliaji wa video, kucheleweshwa kwa kusambaza picha za video kunaweza kuwa muhimu sana.

Ikiwa unatazama ofisi ambapo wafanyakazi hutazama kutoka kwa wachunguzi wao mara moja kwa saa, basi kuchelewa kwa sekunde 5 haijalishi kabisa. Lakini watu walianza kulalamika kwamba, kwa mfano, wakati wa kutangaza mechi ya mpira wa miguu, tayari waliandika GOOOOL kwenye gumzo, lakini hii bado haijaonyeshwa kwenye video :). Tayari tuna idadi ya visa vya watumiaji ambapo Ivideon inapaswa kuchukua nafasi ya Skype.

Je, inawezekana kushinda latency katika HLS? Jibu la swali hili linasikika kama hotuba ya mteketezaji wa panya mwenye uzoefu katika hotuba kwa wataalamu wapya wa kudhibiti wadudu: "Panya hawawezi kuangamizwa, lakini idadi yao inaweza kupunguzwa kwa kiwango cha chini kinachofaa." Sawa na kucheleweshwa kwa HLS, haitawezekana kuipunguza hadi sifuri, lakini kuna suluhisho kwenye soko ambazo zinaweza kupunguza ucheleweshaji kwa kiasi kikubwa.

Vipunguzo vyema

Hasara nyingine ya injini ni matumizi ya faili ndogo kwa uhamisho wa data. Inaweza kuonekana kuwa ni nini kibaya na hii?

Mtu yeyote ambaye amejaribu kunakili idadi kubwa ya faili ndogo kutoka kwa njia moja hadi nyingine labda ameona kwamba kasi ya kuandika ya seti hiyo ni ya chini sana kuliko faili moja kubwa ya ukubwa sawa. Na ukubwa wa upatikanaji wa gari ngumu huongezeka kwa kiasi kikubwa, ambayo kwa ujumla huathiri vibaya utendaji wa kompyuta nzima. Kwa hiyo, kusambaza data ya video katika vipande vidogo vya sekunde 10 pia huchangia kuongezeka kwa latency ya injini.

Hebu tufanye muhtasari wa faida na hasara zote za teknolojia ya HLS.

Faida za HLS:

  1. Uwezo wa kufanya kazi na kifaa chochote. Unaweza kutazama video kwenye kifaa chochote cha kisasa, iwe simu mahiri, kompyuta kibao, kompyuta ya mkononi au Kompyuta ya mezani. Jambo kuu ni kwamba kivinjari cha wavuti ni cha kisasa na kinaendana na HTML5 na Upanuzi wa Chanzo cha Media.
  2. Ubora wa picha bora. Kitendaji cha utumaji data kinachotumika kinakuruhusu kubadilisha kwa nguvu ubora wa video inayosambazwa kulingana na kipimo data cha muunganisho wa Mtandao, huku kanuni ikijitahidi kudumisha ubora wa juu zaidi.
  3. Hakuna haja ya usanidi tata wa vifaa vya mtumiaji.

Hasara:

  1. Usaidizi mdogo wa kufanya kazi na injini kwenye vifaa vingine.
  2. Ucheleweshaji mkubwa katika uwasilishaji wa picha.
  3. Ongezeko kubwa la uendeshaji na utata wa uboreshaji kutokana na matumizi ya faili ndogo. Kwa sababu ya asili ya chombo, hatutaweza kamwe kupata latency chini ya saizi ya sehemu.

Hasara za HLS zilizidi faida zake kwetu na zilitulazimisha kutafuta chaguo mbadala.

WebRTC ni nini

WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera
(c)

Jukwaa la WebRTC liliundwa na Google mwaka wa 2011 ili kusambaza data ya utiririshaji ya video na sauti kati ya vivinjari na programu za rununu kwa muda mdogo. Kwa hili, itifaki ya kawaida ya UDP na algorithms maalum ya udhibiti wa mtiririko hutumiwa. Leo ni mradi wa chanzo wazi, unadumishwa kikamilifu na Google na unatengenezwa.

WebRTC ni seti ya teknolojia za uwasilishaji wa sauti kutoka kwa marafiki na wenzako. Hiyo ni, kwa mfano, vivinjari vya watumiaji vinavyotumia WebRTC vinaweza kuhamisha data kwa kila mmoja moja kwa moja, bila kutumia seva za mbali kwa kuhifadhi na kuchakata data. Taarifa zote pia huchakatwa na vivinjari vya watumiaji wa mwisho na programu za simu.

Urahisi na uwezo mkubwa wa teknolojia hii umethaminiwa na watengenezaji wa vivinjari vyote maarufu. Usaidizi wa WebRTC unapatikana kwa sasa katika Mozilla Firefox, Opera, Google Chrome (na vivinjari vyote vinavyotegemea Chromium), na pia katika programu za simu. Android na iOS.

Kwa faida zake zote zisizo na shaka, WebRTC ina hasara kadhaa muhimu.

Ugumu wa kuchagua

Teknolojia ya WebRTC ni ngumu zaidi katika suala la mwingiliano wa mtandao kutokana na ukweli kwamba ni kuhusu P2P. Ni vigumu kutatua, kujaribu, na inaweza kufanya kazi bila kutabirika. Wakati huo huo, tunahitaji kushinda NAT na firewall, tunahitaji kuhakikisha uendeshaji katika mitandao ambapo UDP imefungwa.

Utekelezaji wa WebRTC wa Google ni mgumu sana kutumia. Kuna hata kampuni nzima ambayo hutoa huduma za mkusanyiko wa SDK. Pia, utekelezaji wa Google ulikuwa mgumu sana kuunganishwa na mfumo wetu bila kusimba tena video nzima.

Hata hivyo, kwa muda mrefu tumetaka kuwapa watumiaji fursa ya kufanya kazi na video kamili ya "moja kwa moja" na kupunguza upungufu kati ya picha kwenye skrini na matukio yenyewe. Zaidi ya hayo, tulikuwa na hamu ya kufanya matumizi ya kamera za PTZ, ambapo ucheleweshaji ni muhimu, vizuri zaidi.

Kwa kuzingatia kwamba utekelezaji mwingine wa kuzuia kuchelewa bado una utendakazi mdogo na hufanya kazi vibaya zaidi, tuliamua kutumia WebRTC.

Tumefanya nini

WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera

Kutekeleza vyema jukwaa la WebRTC si kazi rahisi. Makosa yoyote au usahihi unaweza kusababisha ucheleweshaji wa uwasilishaji wa video sio tu sio kupungua ikilinganishwa na mifumo mingine, lakini hata kuongezeka.

Kwa WebRTC kufanya kazi kwa usahihi, kwanza kabisa, ni muhimu kufanya uboreshaji wa kiteknolojia wa stack kwa kufanya kazi na video ya mtandao. Ndivyo tulivyofanya.

Kwanza, tulitekeleza seva ya itifaki ya kuashiria ya WebRTC juu ya Websocket, na pia tukaweka seva rika ya WebRTC katika wingu kulingana na webrtc.org SDK. Kazi yake ni kusambaza mitiririko ya video kwa washirika wa WebRTC wa mteja katika umbizo la H.264 + Opus/G.711 bila kupitisha msimbo wa video.

Tulichagua Websocket kama itifaki ya kuashiria kwa sababu tayari ina usaidizi wa hali ya juu katika vivinjari vyote maarufu vya wavuti. Kutokana na hili, unaweza kupunguza kwa kiasi kikubwa sio tu maendeleo ya juu, lakini pia kuepuka kupoteza muda na rasilimali kwa TCP mara kwa mara na TLS kupeana mkono ikilinganishwa na AJAX.

Ukweli ni kwamba, kwa chaguo-msingi, WebRTC haitoi itifaki ya kuashiria inayohitajika ili kusanidi, kudumisha, na kusitisha mawasiliano ya video ya wakati halisi kati ya chanzo na programu za mteja.

Na ili kutekeleza teknolojia ya kuashiria kwa kujitegemea, tulihitaji kuunda seva yetu ya kuashiria kwa usaidizi wa itifaki kadhaa za wavuti (Websocet, WebRTC). Na kwa uwezo wa kudhibiti vipindi na arifa kwa usalama katika muda halisi, udhibiti wa video na mengine mengi.

Tulishinda vikwazo vya P2P kwa kupunguza latency si kupitia P2P, lakini kupitia UDP na udhibiti wa mtiririko ili kupunguza latency. Hii pia imejengwa ndani ya WebRTC, kwani kesi kuu ya utumiaji ni mazungumzo ya p2p kupitia kivinjari.

Katika mteja wa simu, tulitekeleza kichezaji kwa kutumia webrtc.org SDK, kwa kuwa inatekeleza udhibiti wa mtiririko kwa usahihi, ina mipango yote inayojulikana ya Marekebisho ya Hitilafu ya Mbele (FEC), na inatekeleza kwa usahihi utaratibu wa kutuma tena pakiti kwa vivinjari vyote. Pia ni muhimu kwamba webrtc.org SDK inaendelezwa kikamilifu na Google.

Ni nini matokeo ya kutekeleza WebRTC?


Ili kutazama video ya moja kwa moja kutoka kwa kamera, tumeongeza kichezaji kipya kilichoboreshwa kulingana na WebRTC kwenye akaunti yako ya kibinafsi. Inatoa kasi ya upakiaji wa video haraka na huondoa kabisa tatizo la latency kusanyiko kadiri muda wa kutazama unavyoongezeka.

Baada ya kutambulisha usaidizi wa WebRTC katika huduma ya wingu ya Ivideon, tunaweza kusema kwa ujasiri kabisa kwamba wateja wetu sasa wanaweza kutazama video kamili ya moja kwa moja. Sasa ucheleweshaji wakati wa kutangaza mifuatano ya video hauzidi sekunde moja! Kwa kulinganisha, injini ya awali ya HLS ilitoa utoaji wa video kwa kuchelewa kwa sekunde 5-7. Tofauti ya kasi ya onyesho la video ni kubwa sana, na mtumiaji ataitambua mara tu baada ya kuanza kufanya kazi na huduma yetu ya video.

Kama tulivyotarajia, utekelezaji wa mchezaji mpya umeboresha usikivu wa PTZ na mawasiliano ya sauti na kamera.

WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera

Kuna jambo moja tu la hila ambalo tunataka kuvutia umakini. Kichezaji kipya cha WebRTC kwa sasa kinafanya kazi katika hali ya majaribio. Na ndiyo sababu hatuwashii wateja wetu wote kwa chaguomsingi. Lakini unaweza kuiwasha mwenyewe kwa kuwezesha kipengee kinacholingana kwenye mipangilio ya kamera (ili kufanya hivyo, nenda kwa binafsi ofisi).

Vipengele vya utekelezaji wa WebRTC katika huduma ya Ivideon

WebRTC na ufuatiliaji wa video: jinsi tulivyoshinda kusubiri kwa video kutoka kwa kamera

WebRTC bado ni teknolojia ya majaribio kwa sasa. Msaada wake bado haujatekelezwa kwa usahihi katika vivinjari vyote na vifaa vya watumiaji, na pia sio kwenye kamera zote.

Hii ndiyo sababu bado hatujafanya kicheza WebRTC kuwa chaguomsingi kwa watumiaji wote.

Kwa sasa, tunapendekeza kutumia WebRTC katika vivinjari vya Google Chrome pekee. Matoleo ya hivi karibuni ya Firefox na Safari pia yanaunga mkono teknolojia hii, lakini, kwa bahati mbaya, bado haijatulia.

Bado hatujatekeleza usaidizi wa WebRTC kwa vivinjari kwenye vifaa vya rununu. Kwa sasa, ukiingia kutoka kwa kifaa cha mkononi na kuamilisha WebRTC, hali hii haitafanya kazi. Hata hivyo, WebRTC inapatikana katika programu zetu za rununu za Android и iOS.

Na kuhitimisha hadithi kuhusu vipengele vya utekelezaji wa WebRTC katika huduma yetu, hebu tuzingatie pointi mbili zaidi za hila.

Kwanza, teknolojia inalenga kutangaza video ya moja kwa moja kwa wakati halisi. Kwa hivyo, ikiwa kituo chako hakina kipimo data cha kutosha cha kusambaza video, utaona kushuka kwa fremu (ukiwa na HLS utaona video inafifia na kasi ya kusubiri, lakini hakutakuwa na matone ya fremu), lakini video bado itatangazwa kwa uhalisia. wakati.

Pili, kwa kuwa teknolojia imeundwa kufanya kazi mahususi na video ya moja kwa moja katika muda halisi, hatuitumii kufanya kazi na data ya video iliyohifadhiwa kwenye kumbukumbu.

Mabadiliko mengine kwenye huduma

Kwa wakati huu, Flash haishiriki tena katika utaratibu wa kuchagua injini otomatiki. Bado unaweza kutumia kichezaji kama hicho, lakini ili kufanya hivyo unahitaji kuichagua mwenyewe katika mipangilio ya akaunti au kamera. Hii sio heshima kwa mtindo, ni kwamba, kulingana na takwimu za huduma yetu, hakuna watumiaji waliobaki kufanya kazi na Flash. Na kujaribu kubaini ikiwa kivinjari cha mtumiaji kinaitumia, tunapoteza takriban sekunde 2 za wakati muhimu.

Huu hapa ni muhtasari mfupi wa mabadiliko yanayokungoja katika mfumo wetu wa ufuatiliaji wa video za wingu na akaunti ya kibinafsi. Endelea kuwa nasi na ufuatilie habari!

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster