WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera

WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera

Wiwit dina pisanan nggarap sistem pengawasan video maya, kita ngadhepi masalah, tanpa solusi sing bisa ditinggalake ing Ivideon - iki Everest kita, pendakian sing njupuk akeh energi, nanging saiki wis pungkasane. macet kapak es menyang ndhuwur teka-teki cross-platform.

Sistem kanggo ngirim audio lan video liwat Internet ngirim ora gumantung ing peralatan, klien Web lan standar padha ndhukung, lan uga bisa bener ing ngarsane Network Address Translators lan firewalls. Pangguna ndjogo video awan pengin ngakses layanan kasebut, sanajan dheweke nggunakake kamera analog, lan luwih seneng nonton siaran video langsung ing piranti sing paling modern.

Penting banget yen pangguna pengin nonton video kanthi wektu tundha minimal. Meh siji-sijine cara kanggo nuduhake video kanthi latensi sithik ing browser yaiku nggunakake WebRTC (komunikasi wektu nyata web). WebRTC minangka sakumpulan teknologi kanggo transmisi video lan audio peer-to-peer ing browser, sing wiwitane dirancang kanggo transmisi lan muter maneh stream video kanthi latensi sing sithik. Kanggo tujuan iki, antara liya, protokol UDP digunakake.

Sadurunge kita pitutur marang kowe apa engine anyar menehi pangguna, kita bakal ngelingake sampeyan apa lan apa kita ndhukung teknologi HLS, lan apa kita mutusaké kanggo nerusake.

mesin HLS: Pros lan cons

WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera
(c)

Teknologi HLS (HTTP Live Streaming) dikembangake dening Apple, mula ora nggumunake yen teknologi iki pisanan didhukung ing piranti Apple. Saiki, video HLS uga didhukung dening meh kabeh set-top box lan akeh piranti sing nganggo OS kasebut. Android.

Mesin HLS nggunakake codec video H264 sing kondhang ing kombinasi karo stream audio AAC utawa MP3 kanggo stream data video. Kabeh stream data audio lan video wis rangkep menyang wadhah transportasi MPEG-TS. Kanggo transmisi liwat protokol HTTP, informasi sing ana ing stream dipérang dadi pecahan sing diterangake ing dhaptar lagu m3u8. Lan mung banjur pecahan kasebut, bebarengan karo dhaptar lagu, ditularake liwat HTTP. Chunking kanthi otomatis tegese wektu tundha sawetara detik. Iki minangka fitur saka wadhah MPEG-TS.

Mesin HLS uga ndhukung stream multibitrate, Live / VOD.

Keuntungan utama HLS:

  • dhukungan sing dibangun ing kabeh browser utama;
  • ease saka implementasine (dibandhingake karo WebRTC);
  • Gampang banget lan efisien kanggo ngatur kabeh jinis siaran menyang pamirsa sing akeh amarga kasunyatan manawa segmen bisa diunggah menyang CDN sapisan.

Senadyan gamblang saka engine, ora kabeh Gamelan minangka misale jek. Masalah utama yaiku pangembang pemain pihak katelu wis pindhah saka rekomendasi Apple, contone babagan format audio sing didhukung. Utamane, akeh pangembang wiwit nambah kemampuan kanggo nggarap stream audio populer: video mpeg2, audio mpeg2, lan liya-liyane. Akibate, dheweke kudu nggawe format dhaptar lagu sing beda kanggo pemain sing beda.

Nanging salah sawijining masalah paling gedhe ing mesin HLS yaiku latensi dhuwur ing transfer data.

Asal saka "rem"

Alesan utama kanggo latensi dhuwur saka HLS dumunung ing kasunyatan sing programer digawe mesin kanggo njupuk gambar kualitas paling dhuwur. Mulane, paramèter interval pigura sing digunakake lan ukuran buffer puter maneh mung ora cocok kanggo siaran video langsung. Amarga iki, ana wektu tundha sing cukup dhuwur ing transmisi rekaman video, sing bisa 5-7 detik.

Ing tangan siji, iki ora akeh, contone, kanggo wong-wong sing nonton film saka server hosting video. Nanging kanggo sistem pengawasan video, wektu tundha ngirim rekaman video bisa dadi penting banget.

Yen sampeyan ndeleng kantor ing ngendi karyawan katon saka monitor saben jam, banjur tundha 5 detik ora masalah. Nanging wong-wong wiwit sambat yen, contone, nalika nyiarake pertandingan bal-balan, dheweke wis nulis GOOOOL ing obrolan, nanging iki durung ana ing video :). Kita wis duwe sawetara kasus pangguna ing ngendi Ivideon kudu ngganti Skype.

Apa bisa ngalahake latensi ing HLS? Jawaban kanggo pitakonan iki kaya wicara saka pembasmi tikus sing berpengalaman ing kuliah kanggo spesialis kontrol hama pemula: "Tikus ora bisa dibasmi, nanging jumlahe bisa dikurangi dadi minimal." Padha karo wektu tundha ing HLS, iku ora bakal bisa kanggo ngurangi menyang nul, nanging ana solusi ing pasar sing Ngartekno bisa nyuda wektu tundha.

Potongan apik

Kerugian liyane saka mesin yaiku nggunakake file cilik kanggo transfer data. Iku bakal katon sing apa salah karo iki?

Sapa wae sing wis nyoba nyalin file cilik saka siji medium menyang medium liyane, mesthine bisa ngerteni manawa kecepatan nulis set kasebut luwih murah tinimbang siji file gedhe kanthi ukuran sing padha. Lan kakiyatan saka akses menyang hard drive mundhak Ngartekno, kang umume ngaruh mengaruhi kinerja kabeh komputer. Mula, ngirim data video kanthi potongan cilik 10 detik uga nambah latensi mesin.

Ayo ringkesake kabeh pro lan kontra teknologi HLS.

Keuntungan saka HLS:

  1. Kemampuan kanggo nggarap piranti apa wae. Sampeyan bisa nonton video ing piranti modern apa wae, dadi smartphone, tablet, laptop utawa PC desktop. Sing utama yaiku browser web sing paling anyar lan kompatibel karo HTML5 lan Ekstensi Sumber Media.
  2. Kualitas gambar sing apik banget. Fungsi transmisi data adaptif sing digunakake ngidini sampeyan ngganti kualitas video sing dikirim kanthi dinamis gumantung saka bandwidth sambungan Internet, nalika algoritma ngupayakake kualitas maksimal.
  3. Ora perlu konfigurasi rumit saka peralatan pangguna.

Kekurangan:

  1. Dhukungan winates kanggo nggarap mesin ing sawetara piranti.
  2. Telat dhuwur ing transmisi gambar.
  3. Tambah gedhe ing overhead lan kerumitan optimasi amarga nggunakake file cilik. Amarga sifat wadhah kasebut, kita ora bakal bisa entuk latensi sing luwih murah tinimbang ukuran segmen.

Kerugian HLS ngluwihi kaluwihan kanggo kita lan meksa kita golek pilihan alternatif.

Apa iku WebRTC

WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera
(c)

Platform WebRTC dikembangake dening Google ing taun 2011 kanggo ngirim streaming video lan data audio antarane browser lan aplikasi seluler kanthi latensi minimal. Kanggo iki, protokol UDP standar lan algoritma kontrol aliran khusus digunakake. Dina iki minangka proyek sumber terbuka, dikelola kanthi aktif dening Google lan dikembangake.

WebRTC minangka sakumpulan teknologi kanggo transmisi video lan audio peer-to-peer. Yaiku, contone, browser pangguna sing nggunakake WebRTC bisa nransfer data menyang siji liyane kanthi langsung, tanpa nggunakake server remot kanggo nyimpen lan ngolah data. Kabeh informasi uga diproses dening browser pangguna pungkasan lan aplikasi seluler.

Kepraktisan lan kemampuan ekstensif teknologi iki wis diapresiasi dening para pangembang kabeh browser populer. Dhukungan WebRTC saiki kasedhiya ing Mozilla Firefox, Opera, Google Chrome (lan kabeh browser berbasis Chromium), uga ing aplikasi seluler. Android lan iOS.

Kanggo kabeh kaluwihan sing ora diragukan, WebRTC duwe sawetara kekurangan sing signifikan.

Kasangsaran pilihan

Teknologi WebRTC luwih rumit babagan interaksi jaringan amarga kasunyatane babagan P2P. Iku angel kanggo debug, nyoba, lan bisa tumindak ora bisa ditebak. Ing wektu sing padha, kita kudu ngatasi NAT lan firewall, kita kudu njamin operasi ing jaringan ing ngendi UDP diblokir.

Implementasi WebRTC Google angel banget digunakake. Malah ana kabeh perusahaan sing nyedhiyakake layanan perakitan SDK. Kajaba iku, implementasine Google angel banget kanggo nggabungake karo sistem kita tanpa ngodhe maneh kabeh video.

Nanging, kita wis suwe pengin menehi pangguna kesempatan kanggo nggarap video "urip" lengkap lan nyilikake lag antarane gambar ing layar lan acara kasebut dhewe. Kajaba iku, kita duwe kepinginan kanggo nggunakake kamera PTZ, ing ngendi wektu tundha kritis, luwih nyaman.

Ngelingi yen implementasi anti-lag liyane isih nduweni fungsi sing winates lan kerjane luwih elek, kita mutusake nggunakake WebRTC.

Apa sing wis kita lakoni

WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera

Nerapake platform WebRTC kanthi bener dudu tugas sing gampang. Sembarang salah pitungan utawa ora akurat bisa nyebabake telat transmisi video ora mung ora suda dibandhingake karo platform liyane, nanging malah nambah.

Kanggo WebRTC bisa digunakake kanthi bener, pisanane, perlu kanggo nindakake upgrade teknologi tumpukan kanggo nggarap video web. Sing apa kita nindakake.

Kaping pisanan, kita ngetrapake server protokol sinyal WebRTC liwat Websocket, lan uga masang server peer WebRTC ing awan adhedhasar webrtc.org SDK. Tugase yaiku nyebarake stream video menyang klien WebRTC ing format H.264 + Opus/G.711 tanpa transcoding video.

Kita milih Websocket minangka protokol sinyal amarga wis duwe dhukungan kualitas dhuwur ing kabeh browser web populer. Amarga iki, sampeyan bisa nyuda ora mung nduwur sirah pangembangan, nanging uga supaya ora mbuwang wektu lan sumber daya ing salaman TCP lan TLS sing bola-bali dibandhingake karo AJAX.

Kasunyatane, kanthi standar, WebRTC ora nyedhiyakake protokol sinyal sing dibutuhake kanggo ngatur, njaga, lan mungkasi komunikasi video wektu nyata ing antarane aplikasi sumber lan klien.

Lan supaya bisa ngetrapake teknologi sinyal kanthi mandiri, kita kudu ngembangake server sinyal dhewe kanthi dhukungan kanggo sawetara protokol web (Websocet, WebRTC). Lan kanthi kemampuan kanggo ngatur sesi lan kabar kanthi aman ing wektu nyata, manajemen video lan liya-liyane.

Kita ngatasi watesan P2P kanthi nyuda latensi ora liwat P2P, nanging liwat UDP lan kontrol aliran kanggo nyuda latensi. Iki uga dibangun ing WebRTC, amarga kasus panggunaan utama yaiku obrolan p2p liwat browser.

Ing klien seluler, kita dipun ginakaken pamuter nggunakake webrtc.org SDK, wiwit mung bener ngleksanakake kontrol aliran, wis kabeh dikenal Forward Error Correction (FEC) rencana, lan bener ngleksanakake mekanisme kanggo ngirim maneh paket kanggo kabeh browser. Penting uga yen webrtc.org SDK lagi aktif dikembangake dening Google.

Apa asil saka implementasine WebRTC?


Kanggo ndeleng video langsung saka kamera, kita wis nambah pamuter optimized anyar adhedhasar WebRTC kanggo akun pribadhi. Nyedhiyakake kecepatan loading video kanthi cepet lan ngilangi masalah akumulasi latensi nalika wektu ndeleng mundhak.

Sawise ngenalake dhukungan WebRTC ing layanan maya Ivideon, kita bisa ujar kanthi yakin manawa klien saiki bisa nonton video langsung lengkap. Saiki wektu tundha nalika nyebarake urutan video ora ngluwihi sedetik! Kanggo mbandhingake, mesin HLS sadurunge nyedhiyakake pangiriman video kanthi wektu tundha 5-7 detik. Bentenipun ing kacepetan demonstrasi video penting banget, lan pangguna bakal sok dong mirsani sawise miwiti nggarap layanan video kita.

Kaya sing dikarepake, implementasine pemain anyar wis nambah responsif PTZ lan komunikasi swara karo kamera.

WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera

Mung ana siji titik subtle sing arep kita tarik manungsa waé. Pamuter WebRTC anyar lagi digunakake ing mode test. Lan mulane kita ora ngaktifake kabeh klien kanthi standar. Nanging sampeyan bisa ngaktifake dhewe kanthi ngaktifake item sing cocog ing setelan kamera (kanggo nindakake iki, sampeyan kudu pindhah menyang akun pribadi).

Fitur implementasi WebRTC ing layanan Ivideon

WebRTC lan pengawasan video: kepiye carane ngalahake latensi video saka kamera

WebRTC isih dadi teknologi eksperimen saiki. Dhukungan kasebut durung ditindakake kanthi bener ing kabeh browser lan piranti pangguna, lan uga ora ing kabeh kamera.

Iki sebabe kita durung nggawe pamuter WebRTC minangka standar kanggo kabeh pangguna.

Saiki, disaranake nggunakake WebRTC mung ing browser Google Chrome. Versi paling anyar saka Firefox lan Safari uga ndhukung teknologi iki, nanging, sayangé, isih ora stabil.

Kita durung ngetrapake dhukungan WebRTC kanggo browser ing piranti seluler. Saiki, yen sampeyan mlebu saka piranti seluler lan ngaktifake WebRTC, mode iki ora bakal bisa digunakake. Nanging, WebRTC kasedhiya ing aplikasi seluler kita kanggo Android и iOS.

Lan nyimpulake crita babagan fitur implementasi WebRTC ing layanan kita, ayo dicathet loro poin sing luwih subtle.

Kaping pisanan, teknologi kasebut fokus kanggo nyebarake video langsung ing wektu nyata. Mulane, yen saluran sampeyan ora duwe bandwidth cukup kanggo ngirim video, sampeyan bakal weruh frame drops (karo HLS sampeyan bakal weruh video fading lan tambah latensi, nanging ora bakal ana pigura irungnya), nanging video isih bakal disiarake ing nyata. wektu.

Kapindho, amarga teknologi kasebut dirancang khusus kanggo nggarap video langsung ing wektu nyata, kita ora nggunakake aplikasi kasebut kanggo nggarap data video sing diarsipake.

Owah-owahan liyane ing layanan

Ing wektu iki, Flash ora melu ing mekanisme pilihan mesin otomatis. Sampeyan isih bisa nggunakake pamuter kasebut, nanging kanggo nindakake iki, sampeyan kudu milih kanthi manual ing setelan akun utawa kamera. Iki dudu penghargaan kanggo fashion, mung miturut statistik layanan kita, meh ora ana pangguna sing isih bisa nggarap Flash. Lan nyoba kanggo nemtokake manawa browser pangguna ndhukung, kita kelangan 2 detik wektu larang regane.

Mangkene ringkesan ringkes babagan owah-owahan sing nunggu sampeyan ing sistem pengawasan video awan lan akun pribadi. Tetep karo kita lan tindakake kabar!

Source: www.habr.com

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster