WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera

WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera

Mula sa mga unang araw ng pagtatrabaho sa isang cloud video surveillance system, nahaharap kami sa isang problema, nang walang solusyon na maaari naming isuko sa Ivideon - ito ang aming Everest, ang pag-akyat na nangangailangan ng maraming enerhiya, ngunit ngayon ay mayroon na kaming nagsabit ng ice axe sa tuktok ng cross-platform puzzle.

Ang sistema para sa pagpapadala ng audio at video sa Internet ay hindi dapat nakadepende sa kagamitan, mga kliyente sa Web at sa mga pamantayang sinusuportahan nila, at gumagana rin nang tama sa pagkakaroon ng Network Address Translators at mga firewall. Gustong ma-access ng user ng cloud video surveillance ang serbisyo, kahit na gumamit siya ng mga analog camera, at mas gustong manood ng live na video broadcast sa pinakamodernong device.

Napakahalaga na nais ng user na manood ng mga video na may kaunting pagkaantala. Halos ang tanging paraan upang magpakita ng video na may mababang latency sa isang browser ay ang paggamit ng WebRTC (mga web real-time na komunikasyon). Ang WebRTC ay isang hanay ng mga teknolohiya para sa peer-to-peer na pagpapadala ng video at audio sa mga browser, na unang idinisenyo para sa paghahatid at pag-playback ng mga video stream na may mababang latency. Para sa layuning ito, bukod sa iba pang mga bagay, ginagamit ang UDP protocol.

Bago namin sabihin sa iyo kung ano ang ibinibigay ng bagong engine sa user, ipapaalala namin sa iyo kung bakit at bakit namin sinusuportahan ang mga teknolohiya ng HLS, at kung bakit kami nagpasya na magpatuloy.

HLS engine: mga kalamangan at kahinaan

WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera
(c)

Ang teknolohiyang HLS (HTTP Live Streaming) ay binuo ng Apple, kaya hindi nakakagulat na una itong sinuportahan sa mga aparatong Apple. Sa kasalukuyan, ang HLS video ay sinusuportahan din ng halos lahat ng set-top box at maraming device na nagpapatakbo ng OS. Android.

Ginagamit ng HLS engine ang kilalang H264 video codec kasama ng AAC o MP3 audio stream para mag-stream ng data ng video. Ang buong audio at video data stream ay naka-package sa isang MPEG-TS transport container. Para sa paghahatid sa pamamagitan ng HTTP protocol, ang impormasyong nakapaloob sa stream ay nahahati sa mga fragment na inilalarawan sa m3u8 na mga playlist. At pagkatapos lamang ang mga fragment na ito, kasama ang mga playlist, ay ipinadala sa pamamagitan ng HTTP. Awtomatikong nangangahulugan ang pag-chunking ng pagkaantala sa ilang segundo. Ito ay isang tampok ng lalagyan ng MPEG-TS.

Sinusuportahan din ng HLS engine ang mga multibitrate stream, Live/VOD.

Mga pangunahing bentahe ng HLS:

  • built-in na suporta sa lahat ng mga pangunahing browser;
  • kadalian ng pagpapatupad (kumpara sa WebRTC);
  • Ito ay napaka-maginhawa at mahusay na ayusin ang lahat ng uri ng mga broadcast sa isang malaking madla dahil sa katotohanan na ang mga segment ay maaaring i-upload sa isang CDN nang isang beses.

Sa kabila ng pagiging simple ng makina, hindi lahat ay kasingkinis ng tila. Ang pangunahing problema ay ang mga developer ng third-party na player ay lumayo sa mga rekomendasyon ng Apple, halimbawa sa mga tuntunin ng mga sinusuportahang format ng audio. Sa partikular, maraming mga developer ang nagsimulang magdagdag ng kakayahang magtrabaho sa mga sikat na audio stream: mpeg2 video, mpeg2 audio, atbp. Bilang resulta, kailangan nilang lumikha ng iba't ibang mga format ng playlist para sa iba't ibang mga manlalaro.

Ngunit ang isa sa pinakamalaking problema sa HLS engine ay ang mataas na latency sa paglilipat ng data.

Ang pinagmulan ng "preno"

Ang pangunahing dahilan para sa mataas na latency ng HLS ay nakasalalay sa katotohanan na nilikha ng mga programmer ang makina upang makuha ang pinakamataas na kalidad ng mga imahe. Samakatuwid, ang mga parameter ng frame interval na ginamit at ang laki ng playback buffer ay sadyang hindi angkop para sa mga live na video broadcast. Dahil dito, may medyo mataas na pagkaantala sa pagpapadala ng video footage, na maaaring 5-7 segundo.

Sa isang banda, ito ay hindi gaanong, halimbawa, para sa mga nanonood ng isang pelikula mula sa isang video hosting server. Ngunit para sa mga video surveillance system, ang pagkaantala sa pagpapadala ng video footage ay maaaring maging napakahalaga.

Kung nanonood ka ng isang opisina kung saan tumitingin ang mga empleyado mula sa kanilang mga monitor isang beses sa isang oras, kung gayon ang pagkaantala ng 5 segundo ay hindi mahalaga. Ngunit nagsimulang magreklamo ang mga tao na, halimbawa, kapag nagbo-broadcast ng isang tugma ng football, nagsulat na sila ng GOOOOL sa chat, ngunit wala pa ito sa video :). Mayroon na kaming ilang mga kaso ng gumagamit kung saan dapat na halos palitan ng Ivideon ang Skype.

Posible bang talunin ang latency sa HLS? Ang sagot sa tanong na ito ay parang pananalita ng isang bihasang tagapagpatay ng daga sa isang panayam sa mga baguhang espesyalista sa pagkontrol ng peste: "Hindi maaaring puksain ang mga daga, ngunit ang kanilang bilang ay maaaring bawasan sa isang makatwirang minimum." Pareho sa pagkaantala sa HLS, hindi ito posibleng bawasan sa zero, ngunit may mga solusyon sa merkado na maaaring makabuluhang bawasan ang pagkaantala.

Fine cuts

Ang isa pang kawalan ng makina ay ang paggamit ng maliliit na file para sa paglilipat ng data. Mukhang ano ang mali dito?

Ang sinumang sumubok na kumopya ng malaking bilang ng maliliit na file mula sa isang medium patungo sa isa pa ay malamang na napansin na ang bilis ng pagsulat ng naturang set ay mas mababa kaysa sa isang malaking file na may parehong laki. At ang intensity ng pag-access sa hard drive ay tumataas nang malaki, na sa pangkalahatan ay negatibong nakakaapekto sa pagganap ng buong computer. Samakatuwid, ang pagpapadala ng data ng video sa maliliit na 10 segundong chunks ay nakakatulong din sa pagtaas ng latency ng engine.

Isa-isahin natin ang lahat ng mga kalamangan at kahinaan ng teknolohiya ng HLS.

Mga Bentahe ng HLS:

  1. Kakayahang magtrabaho sa anumang mga aparato. Maaari kang manood ng mga video sa anumang modernong device, ito man ay isang smartphone, tablet, laptop o desktop PC. Ang pangunahing bagay ay ang web browser ay napapanahon at tugma sa HTML5 at Media Source Extension.
  2. Napakahusay na kalidad ng imahe. Ang adaptive data transmission function na ginamit ay nagbibigay-daan sa iyo na dynamic na baguhin ang kalidad ng ipinadalang video depende sa bandwidth ng koneksyon sa Internet, habang ang algorithm ay nagsusumikap na mapanatili ang pinakamataas na kalidad.
  3. Hindi na kailangan ang kumplikadong pagsasaayos ng kagamitan ng gumagamit.

Disadvantages:

  1. Limitadong suporta para sa pagtatrabaho sa engine sa ilang device.
  2. Mataas na pagkaantala sa paghahatid ng imahe.
  3. Malaking pagtaas sa overhead at pagiging kumplikado ng pag-optimize dahil sa paggamit ng maliliit na file. Dahil sa likas na katangian ng container, hindi kami kailanman makakakuha ng latency na mas mababa kaysa sa laki ng segment.

Ang mga disadvantages ng HLS ay higit sa mga pakinabang nito para sa amin at pinilit kaming maghanap ng mga alternatibong opsyon.

Ano ang WebRTC

WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera
(c)

Ang WebRTC platform ay binuo ng Google noong 2011 upang magpadala ng streaming na video at audio data sa pagitan ng mga browser at mobile application na may kaunting latency. Para dito, ginagamit ang karaniwang UDP protocol at mga espesyal na flow control algorithm. Ngayon ito ay isang open source na proyekto, ito ay aktibong pinananatili ng Google at binuo.

Ang WebRTC ay isang hanay ng mga teknolohiya para sa peer-to-peer na video at audio transmission. Iyon ay, halimbawa, ang mga browser ng gumagamit na gumagamit ng WebRTC ay maaaring direktang maglipat ng data sa isa't isa, nang hindi gumagamit ng mga malalayong server para sa pag-iimbak at pagproseso ng data. Ang lahat ng impormasyon ay pinoproseso din ng mga browser at mobile application ng mga end user.

Ang kaginhawahan at malawak na kakayahan ng teknolohiyang ito ay pinahahalagahan ng mga developer ng lahat ng sikat na browser. Ang suporta sa WebRTC ay kasalukuyang magagamit sa Mozilla Firefox, Opera, Google Chrome (at lahat ng browser na nakabase sa Chromium), pati na rin sa mga mobile app na tumatakbo. Android at iOS.

Para sa lahat ng hindi mapag-aalinlanganang mga pakinabang nito, ang WebRTC ay may ilang makabuluhang disadvantages.

Mga kahirapan sa pagpili

Ang teknolohiya ng WebRTC ay mas kumplikado sa mga tuntunin ng mga pakikipag-ugnayan sa network dahil sa katotohanan na ito ay tungkol sa P2P. Mahirap i-debug, subukan, at maaaring kumilos nang hindi mahuhulaan. Kasabay nito, kailangan nating malampasan ang NAT at firewall, kailangan nating tiyakin ang operasyon sa mga network kung saan naka-block ang UDP.

Ang pagpapatupad ng WebRTC ng Google ay napakahirap gamitin. Mayroong kahit isang buong kumpanya na nagbibigay ng mga serbisyo sa pagpupulong ng SDK. Dagdag pa, ang pagpapatupad ng Google ay napakahirap na isama sa aming system nang hindi muling na-encode ang buong video.

Gayunpaman, matagal na naming gustong bigyan ang mga user ng pagkakataong magtrabaho kasama ang ganap na "live" na video at mabawasan ang lag sa pagitan ng larawan sa screen at ng mga mismong kaganapan. Dagdag pa, nagkaroon kami ng pagnanais na gamitin ang mga PTZ camera, kung saan ang mga pagkaantala ay kritikal, mas komportable.

Isinasaalang-alang na ang iba pang mga anti-lag na pagpapatupad ay mayroon pa ring limitadong pagpapagana at kapansin-pansing mas masahol pa, nagpasya kaming gumamit ng WebRTC.

Ano'ng nagawa natin

WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera

Ang wastong pagpapatupad ng WebRTC platform ay hindi isang madaling gawain. Anumang maling kalkulasyon o kamalian ay maaaring humantong sa mga pagkaantala sa paghahatid ng video hindi lamang hindi bumababa kumpara sa iba pang mga platform, ngunit kahit na tumataas.

Para gumana nang tama ang WebRTC, una sa lahat, kinakailangan na magsagawa ng teknolohikal na pag-upgrade ng stack para sa pagtatrabaho sa web video. Iyon ang ginawa namin.

Una, nagpatupad kami ng WebRTC signaling protocol server sa Websocket, at nag-deploy din ng WebRTC peer server sa cloud batay sa webrtc.org SDK. Ang gawain nito ay ipamahagi ang mga video stream sa mga client na WebRTC na mga kapantay sa H.264 + Opus/G.711 na format nang walang video transcoding.

Pinili namin ang Websocket bilang signaling protocol dahil mayroon na itong mataas na kalidad na suporta sa lahat ng sikat na web browser. Dahil dito, maaari mong makabuluhang bawasan hindi lamang ang development overhead, ngunit maiwasan din ang pag-aaksaya ng oras at mga mapagkukunan sa paulit-ulit na TCP at TLS handshake kumpara sa AJAX.

Ang katotohanan ay, bilang default, ang WebRTC ay hindi nagbibigay ng signaling protocol na kinakailangan upang maayos na i-configure, mapanatili, at wakasan ang real-time na komunikasyong video sa pagitan ng source at client application.

At upang independiyenteng ipatupad ang teknolohiya sa pagbibigay ng senyas, kailangan naming bumuo ng sarili naming server ng senyas na may suporta para sa ilang mga web protocol (Websocet, WebRTC). At may kakayahang secure na pamahalaan ang mga session at notification sa real time, pamamahala ng video at marami pang iba.

Nalampasan namin ang mga limitasyon ng P2P sa pamamagitan ng pagbabawas ng latency hindi sa pamamagitan ng P2P, ngunit sa pamamagitan ng UDP at kontrol ng daloy upang mabawasan ang latency. Naka-built din ito sa WebRTC, dahil ang pangunahing use-case ay mga p2p na pag-uusap sa pamamagitan ng browser.

Sa mobile client, ipinatupad namin ang player gamit ang webrtc.org SDK, dahil ito lang ang wastong nagpapatupad ng kontrol sa daloy, mayroon lahat ng kilalang Forward Error Correction (FEC) na mga scheme, at wastong ipinapatupad ang mekanismo para sa muling pagpapadala ng mga packet para sa lahat ng browser. Mahalaga rin na ang webrtc.org SDK ay aktibong binuo ng Google.

Ano ang resulta ng pagpapatupad ng WebRTC?


Upang manood ng live na video mula sa mga camera, nagdagdag kami ng bagong na-optimize na player batay sa WebRTC sa iyong personal na account. Nagbibigay ito ng mabilis na bilis ng paglo-load ng video at ganap na inaalis ang problema sa pag-iipon ng latency habang tumataas ang oras ng panonood.

Pagkatapos ipakilala ang suporta sa WebRTC sa serbisyo ng cloud ng Ivideon, masasabi namin nang buong kumpiyansa na maaari na ngayong manood ng ganap na live na video ang aming mga kliyente. Ngayon ang pagkaantala kapag nagbo-broadcast ng mga sequence ng video ay hindi lalampas sa isang segundo! Para sa paghahambing, ang nakaraang HLS engine ay nagbigay ng paghahatid ng video na may pagkaantala ng 5-7 segundo. Napakahalaga ng pagkakaiba sa bilis ng pagpapakita ng video, at mapapansin ito kaagad ng user pagkatapos magsimulang magtrabaho sa aming serbisyo ng video.

Tulad ng aming inaasahan, ang pagpapatupad ng bagong manlalaro ay nagpabuti ng kakayahang tumugon ng PTZ at komunikasyon ng boses sa camera.

WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera

Mayroon lamang isang banayad na punto na nais nating bigyang pansin. Ang bagong WebRTC player ay kasalukuyang gumagana sa test mode. At iyon ang dahilan kung bakit hindi namin ito pinagana para sa lahat ng aming mga kliyente bilang default. Ngunit maaari mo itong i-activate sa iyong sarili sa pamamagitan ng pagpapagana ng kaukulang item sa mga setting ng camera (upang gawin ito kailangan mong pumunta sa pribadong opisina).

Mga tampok ng pagpapatupad ng WebRTC sa serbisyo ng Ivideon

WebRTC at video surveillance: kung paano namin natalo ang latency ng video mula sa mga camera

Ang WebRTC ay isang pang-eksperimentong teknolohiya pa rin sa ngayon. Ang suporta nito ay hindi pa naipapatupad nang tama sa lahat ng browser at device ng user, at hindi rin sa lahat ng camera.

Ito ang eksaktong dahilan kung bakit hindi pa namin ginagawang default ang WebRTC player para sa lahat ng user.

Sa ngayon, inirerekomenda namin ang paggamit ng WebRTC lamang sa mga browser ng Google Chrome. Sinusuportahan din ng pinakabagong bersyon ng Firefox at Safari ang teknolohiyang ito, ngunit, sa kasamaang-palad, hindi pa rin ito matatag.

Hindi pa namin ipinatupad ang suporta sa WebRTC para sa mga browser sa mga mobile device. Sa kasalukuyan, kung mag-log in ka mula sa isang mobile device at i-activate ang WebRTC, hindi gagana ang mode na ito. Gayunpaman, available ang WebRTC sa aming mga mobile application para sa Android и iOS.

At sa pagtatapos ng kuwento tungkol sa mga tampok ng pagpapatupad ng WebRTC sa aming serbisyo, tandaan natin ang dalawa pang banayad na punto.

Una, ang teknolohiya ay nakatuon sa pagsasahimpapawid ng live na video sa real time. Samakatuwid, kung walang sapat na bandwidth ang iyong channel para i-transmit ang video, mapapansin mo ang pagbaba ng frame (kasama ang HLS, mapapansin mong kumukupas at tumaas ang latency ng video, ngunit walang mga pagbagsak ng frame), ngunit mai-broadcast pa rin ang video sa totoong buhay. oras.

Pangalawa, dahil ang teknolohiya ay idinisenyo upang gumana nang partikular sa live na video sa real time, hindi namin ito ginagamit upang gumana sa naka-archive na data ng video.

Iba pang mga pagbabago sa serbisyo

Sa ngayon, hindi na kasali ang Flash sa awtomatikong mekanismo sa pagpili ng engine. Maaari mo pa ring gamitin ang ganoong player, ngunit para magawa ito kailangan mong piliin ito nang manu-mano sa mga setting ng account o camera. Hindi ito isang pagpupugay sa fashion, kaya lang ayon sa mga istatistika ng aming serbisyo, halos wala nang user na natitira pang nagtatrabaho sa Flash. At sinusubukang matukoy kung sinusuportahan ito ng browser ng user, nawawalan kami ng halos 2 segundo ng mahalagang oras.

Narito ang isang maikling pangkalahatang-ideya ng mga pagbabagong naghihintay sa iyo sa aming cloud video surveillance system at personal na account. Manatili sa amin at subaybayan ang balita!

Pinagmulan: www.habr.com

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster