WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra

WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra

Ti dinten mimiti damel dina sistem panjagaan pidéo awan, kami disanghareupan ku masalah, tanpa solusi anu urang tiasa nyerah dina Ivideon - ieu mangrupikeun Everest kami, pendakian anu nyandak seueur tanaga, tapi ayeuna urang parantos tungtungna. nyangkut hiji kampak és kana luhureun teka cross-platform.

Sistem pikeun ngirimkeun audio sareng pidéo dina Internét henteu kedah gumantung kana alat, klien wéb sareng standar anu dirojong ku aranjeunna, sareng ogé tiasa dianggo leres ku ayana Penerjemah Alamat Jaringan sareng firewall. Pamaké panjagaan pidéo awan hoyong ngaksés jasa éta, sanaos anjeunna nganggo kaméra analog, sareng langkung resep nonton siaran pidéo langsung dina alat anu paling modéren.

Hal ieu kacida penting yén pamaké hayang lalajo video kalawan reureuh minimal. Ampir hiji-hijina cara pikeun mintonkeun video kalayan latency low dina browser nyaéta ngagunakeun WebRTC (web real-time komunikasi). WebRTC mangrupikeun sakumpulan téknologi pikeun pangiriman pidéo sareng audio peer-to-peer dina panyungsi, mimitina dirancang pikeun pangiriman sareng playback aliran pidéo kalayan latency rendah. Pikeun tujuan ieu, antara séjén protokol UDP dipaké.

Sateuacan urang nyarioskeun naon anu dipasihkeun ku mesin énggal ka pangguna, kami bakal ngingetkeun anjeun naha sareng kunaon urang ngadukung téknologi HLS, sareng kunaon urang mutuskeun pikeun ngaléngkah.

mesin HLS: pro jeung kontra

WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra
(c)

Téhnologi HLS (HTTP Live Streaming) dikembangkeun ku Apple, janten teu anéh upami éta mimitina dirojong dina alat Apple. Ayeuna, pidéo HLS ogé dirojong ku ampir sadaya set-top box sareng seueur alat anu ngajalankeun OS éta. Android.

Mesin HLS nganggo codec vidéo H264 anu terkenal dina kombinasi sareng aliran audio AAC atanapi MP3 pikeun ngalirkeun data pidéo. Sakabéh aliran data audio jeung vidéo geus rangkep kana wadah angkutan MPEG-TS. Pikeun pangiriman via protokol HTTP, inpormasi anu aya dina aliran dibagi kana fragmen anu dijelaskeun dina daptar puter m3u8. Sareng teras fragmen ieu, sareng daptar puter, dikirimkeun via HTTP. Chunking otomatis hartina reureuh dina detik. Ieu mangrupikeun fitur tina wadahna MPEG-TS.

Mesin HLS ogé ngadukung aliran multibitrate, Live / VOD.

Keunggulan utama HLS:

  • diwangun-di rojongan dina sakabéh panyungsi utama;
  • betah palaksanaan (dibandingkeun WebRTC);
  • Hal ieu kacida merenah tur efisien pikeun ngatur sagala rupa siaran ka panongton badag alatan kanyataan yén bagéan bisa diunggah ka CDN sakali.

Sanajan kesederhanaan mesin, teu sagalana mulus sakumaha sigana. Masalah utama nyaéta pamekar pamuter pihak katilu parantos ngajauhan saran Apple, contona dina hal format audio anu dirojong. Khususna, seueur pamekar mimiti nambihan kamampuan pikeun damel sareng aliran audio populér: video mpeg2, audio mpeg2, jsb. Hasilna, aranjeunna kedah nyiptakeun format daptar puter anu béda pikeun pamaén anu béda.

Tapi salah sahiji masalah pangbadagna dina mesin HLS nyaéta latency tinggi dina mindahkeun data.

Asal muasal "rem"

Alesan utama pikeun latency luhur HLS perenahna di kanyataan yén programer dijieun mesin pikeun ménta gambar kualitas pangluhurna. Ku alatan éta, parameter tina interval pigura dipaké sarta ukuran panyangga playback ngan saukur teu cocog pikeun siaran video langsung. Kusabab ieu, aya reureuh anu cukup luhur dina pangiriman footage video, nu bisa jadi 5-7 detik.

Di hiji sisi, ieu teu pira, contona, pikeun maranéhanana anu lalajo pilem ti server video hosting. Tapi pikeun sistem panjagaan pidéo, reureuh dina ngirimkeun gambar pidéo tiasa penting pisan.

Upami anjeun ningali kantor dimana karyawan ningali tina monitorna sakali sajam, maka reureuh 5 detik henteu janten masalah. Tapi jalma mimiti ngawadul yén, contona, nalika nyiarkeun pertandingan maén bal, aranjeunna parantos nyerat GOOOOL dina obrolan, tapi ieu henteu acan aya dina pidéo :). Kami parantos ngagaduhan sababaraha kasus pangguna dimana Ivideon kedah praktis ngagentos Skype.

Naha mungkin pikeun ngéléhkeun latency dina HLS? Jawaban kana patarosan ieu disada sapertos pidato pembasmi beurit anu berpengalaman dina ceramah ka spesialis kontrol hama pemula: "Beurit teu tiasa dibasmi, tapi jumlahna tiasa dikirangan ka minimum anu lumrah." Sarua jeung reureuh di HLS, moal mungkin pikeun ngurangan kana enol, tapi aya solusi dina pasaran nu nyata bisa ngurangan reureuh.

motong rupa

disadvantage sejen tina mesin nyaeta pamakéan file leutik pikeun mindahkeun data. Éta sigana naon anu salah sareng ieu?

Saha waé anu nyobian nyalin sajumlah ageung file leutik tina hiji médium ka anu sanés sigana terang yén laju nyerat set sapertos kitu langkung handap tina hiji file ageung anu ukuranana sami. Jeung inténsitas aksés ka hard drive naek sacara signifikan, nu umumna négatip mangaruhan kinerja sakabéh komputer. Ku alatan éta, ngirimkeun data video dina sakumpulan leutik 10 detik ogé nyumbang kana ngaronjat latency mesin.

Hayu urang sakeudeung nyimpulkeun sagala pro jeung kontra ngeunaan téhnologi HLS.

Keunggulan HLS :

  1. Kamampuhan pikeun dianggo sareng alat naon waé. Anjeun tiasa nonton pidéo dina alat modern naon waé, boh smartphone, tablet, laptop atanapi PC desktop. Hal utama nyaéta browser wéb anu up-to-date sareng cocog sareng HTML5 sareng Ekstensi Sumber Media.
  2. kualitas gambar alus teuing. Fungsi pangiriman data adaptif dipaké ngidinan Anjeun pikeun dinamis ngarobah kualitas video dikirimkeun gumantung kana rubakpita sambungan Internet, bari algoritma narékahan pikeun ngajaga kualitas maksimum.
  3. Teu perlu pikeun konfigurasi kompléks pakakas pamaké.

kalemahan:

  1. Pangrojong kawates pikeun gawé bareng mesin dina sababaraha alat.
  2. Nepi tinggi dina pangiriman gambar.
  3. Kanaékan signifikan dina overhead jeung pajeulitna optimasi alatan pamakéan file leutik. Kusabab sifat wadahna, urang moal pernah tiasa nampi latency langkung handap tina ukuran ruas.

Kalemahan HLS ngaleuwihan kaunggulan pikeun urang sareng maksa urang milarian pilihan alternatif.

Naon WebRTC

WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra
(c)

Platform WebRTC dikembangkeun ku Google dina 2011 pikeun ngirimkeun streaming video sareng data audio antara browser sareng aplikasi sélulér kalayan latency minimal. Pikeun ieu, protokol UDP standar sareng algoritma kontrol aliran khusus dianggo. Kiwari éta mangrupikeun proyék open source, aktip diurus ku Google sareng dikembangkeun.

WebRTC mangrupikeun sakumpulan téknologi pikeun pidéo sareng transmisi audio peer-to-peer. Hartina, contona, panyungsi pamaké maké WebRTC bisa mindahkeun data ka silih langsung, tanpa ngagunakeun server jauh pikeun nyimpen jeung ngolah data. Sadaya inpormasi ogé diolah ku panyungsi sareng aplikasi sélulér pangguna ahir.

Kanyamanan sareng kamampuan anu lega tina téknologi ieu parantos dihargaan ku para pamekar sadaya panyungsi anu populer. Dukungan WebRTC ayeuna sayogi dina Mozilla Firefox, Opera, Google Chrome (sareng sadaya panyungsi berbasis Chromium), ogé dina aplikasi sélulér. Android sareng iOS.

Pikeun sakabéh kaunggulan undoubted na, WebRTC boga sababaraha kalemahan signifikan.

pilihan kasusah

Téknologi WebRTC langkung rumit dina hal interaksi jaringan kusabab kanyataan yén éta ngeunaan P2P. Hese debug, nguji, sarta bisa kalakuanana unpredictably. Dina waktos anu sami, urang kedah ngatasi NAT sareng firewall, urang kedah mastikeun operasi dina jaringan dimana UDP diblokir.

Palaksanaan WebRTC Google hese pisan dianggo. Malah aya hiji sakabéh parusahaan nu nyadiakeun layanan assembly SDK. Tambih Deui, palaksanaan Google éta hésé pisan ngahijikeun kalawan sistem kami tanpa ulang encoding sakabéh video.

Najan kitu, urang geus lila hayang masihan pamaké kasempetan pikeun digawekeun ku full-fledged "live" video tur ngaleutikan lag antara gambar dina layar jeung acara sorangan. Tambih Deui, urang kungsi kahayang pikeun ngagunakeun kaméra PTZ, dimana reureuh kritis, leuwih nyaman.

Tempo yén palaksanaan anti lag séjén masih mibanda pungsi kawates sarta gawéna noticeably parah, urang mutuskeun pikeun ngagunakeun WebRTC.

Naon anu urang lakukeun

WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra

Leres ngalaksanakeun platform WebRTC sanés tugas anu gampang. Sakur salah ngitung atanapi henteu akurat tiasa nyababkeun telat dina pangiriman pidéo sanés ngan ukur turun dibandingkeun sareng platform sanés, tapi malah ningkat.

Pikeun WebRTC tiasa dianggo leres, mimitina, perlu pikeun ngalaksanakeun pamutahiran téknologi tumpukan pikeun damel sareng video wéb. Éta naon anu urang lakukeun.

Mimiti, urang ngalaksanakeun server protokol sinyal WebRTC dina Websocket, sareng ogé nyebarkeun server peer WebRTC dina awan dumasar kana webrtc.org SDK. Tugasna nyaéta ngadistribusikaeun aliran video ka klien WebRTC peers dina format H.264 + Opus/G.711 tanpa transcoding video.

Kami milih Websocket salaku protokol sinyal sabab parantos ngagaduhan dukungan kualitas luhur dina sadaya panyungsi wéb anu populer. Kusabab ieu, anjeun tiasa sacara signifikan ngirangan henteu ngan ukur ngembangkeun overhead, tapi ogé ngahindarkeun waktos sareng sumber daya dina sasalaman TCP sareng TLS diulang dibandingkeun AJAX.

Nyatana, sacara standar, WebRTC henteu nyayogikeun protokol sinyal anu dipikabutuh pikeun leres ngonpigurasi, ngajaga, sareng ngeureunkeun komunikasi pidéo sacara real-time antara aplikasi sumber sareng klien.

Sareng pikeun ngalaksanakeun téknologi sinyal sacara mandiri, urang kedah ngembangkeun server sinyal sorangan kalayan dukungan pikeun sababaraha protokol wéb (Websocet, WebRTC). Sareng kamampuan pikeun ngatur sesi sareng bewara sacara aman sacara real waktos, manajemén pidéo sareng seueur deui.

Urang overcame watesan P2P ku cara ngurangan latency teu ngaliwatan P2P, tapi ngaliwatan UDP jeung kontrol aliran pikeun ngurangan latency. Ieu ogé diwangun kana WebRTC, saprak kasus pamakéan utama nyaéta p2p paguneman via browser a.

Dina klien mobile, urang dilaksanakeun pamuter nu ngagunakeun webrtc.org SDK, saprak ngan éta leres implements kontrol aliran, boga sagala skéma Koreksi Kasalahan Maju (FEC) dipikawanoh, tur leres ngalaksanakeun mékanisme pikeun ngirimkeun deui pakét pikeun sakabéh panyungsi. Éta ogé penting yén webrtc.org SDK keur aktip dikembangkeun ku Google.

Naon hasil tina ngalaksanakeun WebRTC?


Pikeun ningali video langsung tina kaméra, kami parantos nambihan pamuter anu dioptimalkeun dumasar kana WebRTC kana akun pribadi anjeun. Eta nyadiakeun speeds loading video gancang tur lengkep ngaleungitkeun masalah latency accumulating sakumaha waktu nempoan naek.

Saatos ngenalkeun dukungan WebRTC dina jasa awan Ivideon, urang tiasa nyarios kalayan kayakinan lengkep yén klien kami ayeuna tiasa ningali pidéo langsung pinuh. Ayeuna reureuh nalika nyiarkeun sekuen pidéo henteu langkung ti sadetik! Pikeun babandingan, mesin HLS saméméhna nyadiakeun pangiriman video kalayan reureuh 5-7 detik. Beda dina laju demonstrasi pidéo penting pisan, sareng pangguna bakal perhatikeun langsung saatos ngamimitian damel sareng jasa pidéo kami.

Sakumaha anu dipiharep, palaksanaan pamuter anyar parantos ningkatkeun responsif PTZ sareng komunikasi sora sareng kaméra.

WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra

Aya ngan hiji titik halus nu urang hayang narik perhatian. Pamuter WebRTC anyar ayeuna damel dina modeu uji. Sareng éta sababna kami henteu ngaktifkeun éta pikeun sadaya klien kami sacara standar. Tapi anjeun tiasa ngaktipkeunana nyalira ku ngaktifkeun item anu saluyu dina setélan kaméra (pikeun ngalakukeun ieu anjeun kedah angkat ka kantor swasta).

Fitur palaksanaan WebRTC dina jasa Ivideon

WebRTC sareng panjagaan pidéo: kumaha urang ngéléhkeun latén pidéo tina kaméra

WebRTC masih mangrupa téhnologi ékspérimén di momen. Pangrojongna henteu acan dilaksanakeun leres dina sadaya panyungsi sareng alat pangguna, sareng ogé henteu dina sadaya kaméra.

Éta pisan sababna naha urang henteu acan ngadamel pamuter WebRTC standar pikeun sadaya pangguna.

Pikeun ayeuna, kami nyarankeun ngagunakeun WebRTC ngan dina panyungsi Google Chrome. Versi panganyarna tina Firefox sareng Safari ogé ngadukung téknologi ieu, tapi, hanjakalna, éta masih teu stabil.

Kami henteu acan ngalaksanakeun dukungan WebRTC pikeun panyungsi dina alat sélulér. Ayeuna, upami anjeun log in tina alat sélulér sareng ngaktipkeun WebRTC, mode ieu moal jalan. Nanging, WebRTC sayogi dina aplikasi sélulér kami pikeun Android и ios.

Sareng nyimpulkeun carita ngeunaan fitur palaksanaan WebRTC dina jasa kami, hayu urang perhatikeun dua titik anu langkung halus.

Anu mimiti, téknologi fokus kana nyiarkeun pidéo langsung sacara real waktos. Ku alatan éta, lamun saluran Anjeun teu boga cukup rubakpita pikeun ngirimkeun video, Anjeun bakal perhatikeun pigura tetes (kalayan HLS anjeun bakal perhatikeun video fading jeung ngaronjat latency, tapi moal aya pigura tetes), tapi video bakal tetep disiarkeun sacara real. waktos.

Bréh, saprak téhnologi nu dirancang pikeun digawé husus kalawan video hirup sacara real waktu, urang teu make eta pikeun digawe sareng data video diarsipkeun.

Parobahan séjén pikeun jasa

Dina waktos ayeuna, Flash henteu aub dina mékanisme pamilihan mesin otomatis. Anjeun masih tiasa nganggo pamuter sapertos kitu, tapi pikeun ngalakukeun ieu anjeun kedah milih sacara manual dina setélan akun atanapi kaméra. Ieu sanes upeti ka fashion, éta ngan nu nurutkeun kana statistik jasa kami, praktis euweuh pamaké ditinggalkeun gawé bareng Flash. Sareng nyobian pikeun nangtoskeun naha browser pangguna ngadukung éta, urang kaleungitan sakitar 2 detik waktos anu berharga.

Ieu mangrupikeun tinjauan ringkes ngeunaan parobihan anu ngantosan anjeun dina sistem panjagaan video awan sareng akun pribadi. Tetep sareng kami sareng tuturkeun warta!

sumber: www.habr.com

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster