{"id":32314,"date":"2019-10-31T21:46:17","date_gmt":"2019-10-31T18:46:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer\/"},"modified":"2019-10-31T21:46:17","modified_gmt":"2019-10-31T18:46:17","slug":"webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","title":{"rendered":"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer\" src=\"\/wp-content\/uploads\/2019\/04\/d185b546f5fc4c15021481c0cc2fedbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOd pierwszych dni pracy nad systemem chmurowego monitoringu wideo napotkali\u015bmy problem, bez rozwi\u0105zania kt\u00f3rego na Ivideon mo\u017cna by\u0142oby postawi\u0107 krzy\u017cyk \u2013 to by\u0142a nasza G\u00f3ra Lodowa, wspinaczka na kt\u00f3r\u0105 zabra\u0142a mn\u00f3stwo si\u0142, ale teraz w ko\u0144cu wbili\u015bmy czekan w szczyt mi\u0119dzyplatformowego zagadnienia.<\/p>\n<p>System przesy\u0142ania d\u017awi\u0119ku i wideo przez Internet nie powinien zale\u017ce\u0107 od sprz\u0119tu, klient\u00f3w internetowych i ich standard\u00f3w oraz powinien poprawnie dzia\u0142a\u0107 w obecno\u015bci translator\u00f3w adres\u00f3w sieciowych i zap\u00f3r ogniowych. U\u017cytkownik chmurowego monitoringu wideo chce mie\u0107 dost\u0119p do us\u0142ugi, nawet je\u015bli korzysta z analogowych kamer, a transmisj\u0119 na \u017cywo woli ogl\u0105da\u0107 na najnowocze\u015bniejszym urz\u0105dzeniu. <\/p>\n<p>To bardzo istotne, \u017ce u\u017cytkownik chce ogl\u0105da\u0107 wideo z minimalnym op\u00f3\u017anieniem. Praktycznie jedyn\u0105 mo\u017cliwo\u015bci\u0105 pokazania wideo z niskim op\u00f3\u017anieniem w przegl\u0105darce jest u\u017cycie WebRTC (web real-time communications). WebRTC to zbi\u00f3r technologii do peer-to-peer przesy\u0142ania wideo i d\u017awi\u0119ku w przegl\u0105darkach, pierwotnie zaprojektowany do przesy\u0142ania i odtwarzania strumienia wideo z niskim op\u00f3\u017anieniem. W tym celu, mi\u0119dzy innymi, stosowany jest protok\u00f3\u0142 UDP.<\/p>\n<p>Zanim opowiemy, co nowy silnik daje u\u017cytkownikowi, przypomnimy, dlaczego wspieramy technologie HLS oraz po co zdecydowali\u015bmy si\u0119 na dalszy rozw\u00f3j.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Silnik HLS: zalety i wady<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer\" src=\"\/wp-content\/uploads\/2019\/04\/f025d08eb22f7785090b8bc60194643c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(<noindex><a rel=\"nofollow\" href=\"https:\/\/www.encoding.com\/http-live-streaming-hls\/\">c<\/a><\/noindex>)<\/p>\n<p>Technologia HLS (HTTP Live Streaming) zosta\u0142a opracowana przez Apple, dlatego nie jest zaskoczeniem, \u017ce po raz pierwszy jej wsparcie pojawi\u0142o si\u0119 na urz\u0105dzeniach tej marki. Obecnie strumienie wideo w formacie HLS potrafi\u0105 odtwarza\u0107 praktycznie wszystkie dekodery telewizyjne oraz wiele urz\u0105dze\u0144 dzia\u0142aj\u0105cych na systemie Android.<\/p>\n<p>Silnik HLS wykorzystuje do przesy\u0142ania strumieni wideo dobrze znany kodek wideo H264 w po\u0142\u0105czeniu z strumieniami audio AAC lub MP3. Ca\u0142y strumie\u0144 danych audio-wideo jest pakowany w kontener transportowy MPEG-TS. Aby przes\u0142a\u0107 dane przez protok\u00f3\u0142 HTTP, informacje zawarte w strumieniu s\u0105 dzielone na fragmenty, opisane w playlistach m3u8. Dopiero potem te fragmenty wraz z playlistami s\u0105 przesy\u0142ane przez HTTP. Podzia\u0142 na fragmenty automatycznie oznacza op\u00f3\u017anienie w sekundach. Ta cecha kontenera MPEG-TS. <\/p>\n<p>Silnik HLS obs\u0142uguje r\u00f3wnie\u017c strumienie wielobitowe, Live\/VOD. <\/p>\n<p><b>G\u0142\u00f3wne zalety HLS:<\/b><\/p>\n<ul>\n<li>wbudowane wsparcie we wszystkich popularnych przegl\u0105darkach;<\/li>\n<li>\u0142atwo\u015b\u0107 implementacji (w por\u00f3wnaniu do WebRTC);<\/li>\n<li>bardzo wygodne i efektywne organizowanie transmisji dla du\u017cych odbiorc\u00f3w, dzi\u0119ki mo\u017cliwo\u015bci jednorazowego za\u0142adowania segment\u00f3w na CDN.<\/li>\n<\/ul>\n<p>\nPomimo ca\u0142ej prostoty silnika, nie wszystko w nim jest tak p\u0142ynne, jak si\u0119 wydaje. G\u0142\u00f3wnym problemem jest to, \u017ce deweloperzy zewn\u0119trznych odtwarzaczy odeszli od zalece\u0144 Apple, na przyk\u0142ad w zakresie obs\u0142ugiwanych format\u00f3w audio. W szczeg\u00f3lno\u015bci wielu deweloper\u00f3w zacz\u0119\u0142o dodawa\u0107 mo\u017cliwo\u015b\u0107 pracy z popularnymi strumieniami audio: mpeg2 video, mpeg2 audio itd. W rezultacie trzeba by\u0142o stworzy\u0107 r\u00f3\u017cne formaty list odtwarzania dla r\u00f3\u017cnych odtwarzaczy.<\/p>\n<p>Jednak jednym z najwi\u0119kszych problem\u00f3w silnika HLS jest du\u017ca op\u00f3\u017anienie w przesy\u0142aniu danych.<\/p>\n<h2>Przyczyny \"zaci\u0119\u0107\"<\/h2>\n<p>\nG\u0142\u00f3wn\u0105 przyczyn\u0105 wysokiego op\u00f3\u017anienia w HLS jest to, \u017ce programi\u015bci stworzyli silnik z my\u015bl\u0105 o uzyskaniu jak najwy\u017cszej jako\u015bci obrazu. Dlatego parametry u\u017cywanego interwa\u0142u klatek i obj\u0119to\u015b\u0107 bufora odtwarzania po prostu nie pasuj\u0105 do prowadzenia transmisji wideo na \u017cywo. W wyniku tego wyst\u0119puje stosunkowo wysokie op\u00f3\u017anienie w przesy\u0142aniu wideo, kt\u00f3re mo\u017ce wynosi\u0107 5-7 sekund.<\/p>\n<p>Z jednej strony to niespecjalnie du\u017co, na przyk\u0142ad dla tych, kt\u00f3rzy ogl\u0105daj\u0105 film z serwera wideo. Ale dla system\u00f3w monitoringu op\u00f3\u017anienie w przesy\u0142aniu wideo mo\u017ce mie\u0107 ogromne znaczenie.<\/p>\n<p>Je\u015bli obserwujesz biuro, w kt\u00f3rym pracownicy co godzin\u0119 odrywaj\u0105 si\u0119 od monitor\u00f3w, to 5 sekund op\u00f3\u017anienia nie ma wi\u0119kszego znaczenia. Jednak ludzie zacz\u0119li narzeka\u0107, \u017ce na przyk\u0142ad podczas transmisji meczu pi\u0142karskiego w czacie ju\u017c napisano GOOOOL, a na wideo tego jeszcze nie ma :). Ju\u017c mamy kilka przypadk\u00f3w u\u017cytkownik\u00f3w, gdzie Ivideon musi prawie zast\u0105pi\u0107 skype.<\/p>\n<p>Czy mo\u017cna pokona\u0107 op\u00f3\u017anienie w HLS? Odpowied\u017a na to pytanie brzmi jak wyst\u0105pienie do\u015bwiadczonego zwalczyciela szczur\u00f3w na wyk\u0142adzie przed pocz\u0105tkuj\u0105cymi deratyzatorami: \"Szczur\u00f3w nie da si\u0119 wyeliminowa\u0107, ale ich populacj\u0119 mo\u017cna zredukowa\u0107 do rozs\u0105dnego minimum\". Tak i z op\u00f3\u017anieniem w HLS, nie da si\u0119 go zredukowa\u0107 do zera, ale na rynku s\u0105 rozwi\u0105zania, kt\u00f3re pozwalaj\u0105 znacznie zmniejszy\u0107 op\u00f3\u017anienie.<\/p>\n<h2>Ma\u0142e segmenty<\/h2>\n<p>\nKolejnym minusem silnika jest u\u017cycie ma\u0142ych plik\u00f3w do przesy\u0142ania danych. Wydawa\u0142oby si\u0119, \u017ce co w tym z\u0142ego?<\/p>\n<p>Ka\u017cdy, kto pr\u00f3bowa\u0142 skopiowa\u0107 du\u017c\u0105 liczb\u0119 ma\u0142ych plik\u00f3w z jednego no\u015bnika na inny, na pewno zauwa\u017cy\u0142, \u017ce pr\u0119dko\u015b\u0107 zapisu takiego zestawu jest znacznie ni\u017csza ni\u017c w przypadku jednego du\u017cego pliku o tej samej obj\u0119to\u015bci. Intensywno\u015b\u0107 odwo\u0142a\u0144 do dysku twardego r\u00f3wnie\u017c znacznie wzrasta, co og\u00f3lnie negatywnie wp\u0142ywa na wydajno\u015b\u0107 ca\u0142ego komputera. Dlatego przesy\u0142anie danych wideo w postaci ma\u0142ych 10-sekundowych fragment\u00f3w tak\u017ce przyczynia si\u0119 do zwi\u0119kszonego op\u00f3\u017anienia silnika.<\/p>\n<p>Podsumujmy wszystkie zalety i wady technologii HLS.<\/p>\n<p><b>Zalety HLS:<\/b><\/p>\n<ol>\n<li>Mo\u017cliwo\u015b\u0107 pracy z dowolnymi urz\u0105dzeniami. Mo\u017cesz ogl\u0105da\u0107 wideo na ka\u017cdym nowoczesnym urz\u0105dzeniu, czy to smartfonie, tablecie, laptopie czy komputerze stacjonarnym. Wa\u017cne, aby przegl\u0105darka internetowa by\u0142a nowoczesnej wersji i by\u0142a zgodna z HTML5 oraz Media Source Extensions.<\/li>\n<li>Doskona\u0142a jako\u015b\u0107 obrazu. U\u017cywana funkcja adaptacyjnego przesy\u0142ania danych pozwala dynamicznie zmienia\u0107 jako\u015b\u0107 przesy\u0142anego obrazu w zale\u017cno\u015bci od pasma przepustowo\u015bci po\u0142\u0105czenia internetowego, przy czym algorytm stara si\u0119 zachowa\u0107 maksymaln\u0105 jako\u015b\u0107.<\/li>\n<li>Brak potrzeby skomplikowanej konfiguracji sprz\u0119tu u\u017cytkownika.<\/li>\n<\/ol>\n<p>\n<b>Wady:<\/b><\/p>\n<ol>\n<li>Ograniczone wsparcie dla dzia\u0142ania silnika na niekt\u00f3rych urz\u0105dzeniach.<\/li>\n<li>Wysokie op\u00f3\u017anienia w przesy\u0142aniu obrazu.<\/li>\n<li>Znaczny wzrost koszt\u00f3w operacyjnych i trudno\u015bci w optymalizacji z powodu u\u017cycia ma\u0142ych plik\u00f3w. Z powodu specyfiki pojemnika nigdy nie b\u0119dziemy mogli uzyska\u0107 op\u00f3\u017anienia mniejszego ni\u017c rozmiar segmentu.<\/li>\n<\/ol>\n<p>\nWady HLS przewy\u017cszy\u0142y dla nas jego zalety i zmusi\u0142y nas do poszukiwania alternatywnych rozwi\u0105za\u0144.<\/p>\n<h2>Czym jest WebRTC<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer\" src=\"\/wp-content\/uploads\/2019\/04\/0cf3c13dba71f6b268113af77841e521.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(<noindex>c<\/noindex>)<\/p>\n<p>Platforma WebRTC zosta\u0142a opracowana przez Google w 2011 roku, aby przesy\u0142a\u0107 strumieniowe dane wideo i audio mi\u0119dzy przegl\u0105darkami a aplikacjami mobilnymi z minimalnym op\u00f3\u017anieniem. W tym celu u\u017cywany jest standardowy protok\u00f3\u0142 UDP oraz specjalne algorytmy zarz\u0105dzania strumieniem. Dzi\u015b jest to projekt o otwartym kodzie \u017ar\u00f3d\u0142owym, kt\u00f3ry jest aktywnie wspierany i rozwijany przez Google.<\/p>\n<p>WebRTC to zestaw technologii do transmisji wideo i d\u017awi\u0119ku peer-to-peer. Oznacza to, \u017ce na przyk\u0142ad przegl\u0105darki u\u017cytkownik\u00f3w mog\u0105 przesy\u0142a\u0107 dane bezpo\u015brednio do siebie za po\u015brednictwem WebRTC, bez u\u017cycia zdalnych serwer\u00f3w do przechowywania i przetwarzania danych. Wszystkie informacje s\u0105 tak\u017ce przetwarzane przez przegl\u0105darki i aplikacje mobilne ko\u0144cowych u\u017cytkownik\u00f3w.<\/p>\n<p>Wygod\u0119 i du\u017c\u0105 funkcjonalno\u015b\u0107 tej technologii docenili programi\u015bci wszystkich popularnych przegl\u0105darek. Dzi\u015b wsparcie dla WebRTC jest realizowane w Mozilla Firefox, Operze, Google Chrome (i wszystkich przegl\u0105darkach opartych na Chromium), a tak\u017ce w aplikacjach mobilnych na Androida i iOS.<\/p>\n<p>Pomimo wszystkich swoich niew\u0105tpliwych zalet, WebRTC ma kilka istotnych wad. <\/p>\n<h2>Trudno\u015bci w wyborze<\/h2>\n<p>\nTechnologia WebRTC jest znacznie bardziej skomplikowana pod wzgl\u0119dem interakcji sieciowych, poniewa\u017c jest oparta na P2P. Trudno j\u0105 debugowa\u0107 i testowa\u0107, mo\u017ce dzia\u0142a\u0107 w spos\u00f3b nieprzewidywalny. Musimy te\u017c pokonywa\u0107 NAT i zapory sieciowe, zapewniaj\u0105c funkcjonowanie w sieciach, w kt\u00f3rych UDP jest zablokowane.<\/p>\n<p>Realizacja WebRTC od Google jest bardzo trudna w u\u017cyciu. Istnieje nawet ca\u0142a firma, kt\u00f3ra \u015bwiadczy us\u0142ugi w zakresie budowy SDK. Dodatkowo implementacja od Google by\u0142a bardzo trudna do zintegrowania z naszym systemem w taki spos\u00f3b, aby nie trzeba by\u0142o przetwarza\u0107 ca\u0142ego wideo.<\/p>\n<p>Jednak od dawna chcieli\u015bmy da\u0107 u\u017cytkownikom mo\u017cliwo\u015b\u0107 pracy z pe\u0142noprawnym, 'na \u017cywo' wideo i zminimalizowa\u0107 op\u00f3\u017anienia obrazu na ekranie w por\u00f3wnaniu z rzeczywistymi wydarzeniami. Co wi\u0119cej, chcieli\u015bmy u\u0142atwi\u0107 korzystanie z kamer PTZ, w kt\u00f3rych op\u00f3\u017anienia maj\u0105 kluczowe znaczenie.<\/p>\n<p>Bior\u0105c pod uwag\u0119, \u017ce inne implementacje walki z lagami maj\u0105 ograniczon\u0105 funkcjonalno\u015b\u0107 i dzia\u0142aj\u0105 zauwa\u017calnie gorzej, postanowili\u015bmy skorzysta\u0107 z WebRTC. <\/p>\n<h2>Co zrobili\u015bmy<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer\" src=\"\/wp-content\/uploads\/2019\/04\/714f94de43114e552e4d818e9ec927ae.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRozs\u0105dne wdro\u017cenie platformy WebRTC to nie\u0142atwe zadanie. Ka\u017cde niedopatrzenie lub nie\u015bcis\u0142o\u015b\u0107 mog\u0105 spowodowa\u0107, \u017ce op\u00f3\u017anienia w transmisji wideo nie tylko nie zmniejsz\u0105 si\u0119 w por\u00f3wnaniu do innych platform, ale wr\u0119cz wzrosn\u0105.<\/p>\n<p>Aby WebRTC dzia\u0142a\u0142o poprawnie, nale\u017cy najpierw przeprowadzi\u0107 modernizacj\u0119 technologii stosu do pracy z wideo w Internecie. I to zrobili\u015bmy.<\/p>\n<p>Najpierw zrealizowali\u015bmy serwer sygnalizacyjny protoko\u0142u WebRTC oparty na Websocket oraz wdro\u017cyli\u015bmy serwer peer WebRTC w chmurze na podstawie SDK webrtc.org. Jego zadaniem jest dostarczanie strumieni wideo do klienckich peer\u00f3w WebRTC w formacie H.264 + Opus\/G.711 bez transkodowania wideo.<\/p>\n<p>Wyb\u00f3r Websocket jako protoko\u0142u sygnalizacyjnego wynika z jego solidnego wsparcia w popularnych przegl\u0105darkach internetowych. Dzi\u0119ki temu mo\u017cna znacz\u0105co zmniejszy\u0107 zar\u00f3wno koszty rozwoju, jak i czas oraz zasoby potrzebne na powtarzaj\u0105ce si\u0119 zestawienia TCP i TLS w por\u00f3wnaniu do AJAX.<\/p>\n<p>Faktem jest, \u017ce domy\u015blnie WebRTC nie dostarcza protoko\u0142u sygnalizacyjnego, kt\u00f3ry jest niezb\u0119dny do prawid\u0142owego ustawienia, wsparcia i zako\u0144czenia wideo rozmowy w czasie rzeczywistym mi\u0119dzy aplikacjami \u017ar\u00f3d\u0142owymi a klienckimi.<\/p>\n<p>Aby samodzielnie zaimplementowa\u0107 technologi\u0119 sygnalizacji, musieli\u015bmy opracowa\u0107 w\u0142asny serwer sygnalizacyjny obs\u0142uguj\u0105cy r\u00f3\u017cne protoko\u0142y internetowe (Websockt, WebRTC). A tak\u017ce z mo\u017cliwo\u015bci\u0105 bezpiecznego zarz\u0105dzania sesjami i powiadomieniami w czasie rzeczywistym, zarz\u0105dzania wideo i wieloma innymi parametrami.<\/p>\n<p>Ograniczenia P2P pokonali\u015bmy, zmniejszaj\u0105c op\u00f3\u017anienia nie poprzez P2P, ale poprzez UDP i zarz\u0105dzanie strumieniem, kt\u00f3re koncentruje si\u0119 na redukcji op\u00f3\u017anie\u0144. To r\u00f3wnie\u017c jest zawarte w WebRTC, poniewa\u017c g\u0142\u00f3wnym zastosowaniem s\u0105 rozmowy p2p przez przegl\u0105dark\u0119.<\/p>\n<p>W mobilnym kliencie zaimplementowali\u015bmy odtwarzacz z u\u017cyciem SDK webrtc.org, poniewa\u017c tylko w nim prawid\u0142owo zaimplementowano zarz\u0105dzanie strumieniem, s\u0105 wszystkie znane schematy Forward Error Correction (FEC), a mechanizm ponownej wysy\u0142ki pakiet\u00f3w dzia\u0142a poprawnie we wszystkich przegl\u0105darkach. Nie bez znaczenia jest r\u00f3wnie\u017c fakt, \u017ce SDK webrtc.org jest aktywnie rozwijane przez Google.<\/p>\n<h2>Jaki jest wynik wdro\u017cenia WebRTC?<\/h2>\n<p>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/vk.com\/video_ext.php\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><br \/>\nAby ogl\u0105da\u0107 na \u017cywo wideo z kamer, dodali\u015bmy do panelu u\u017cytkownika nowy zoptymalizowany odtwarzacz oparty na WebRTC. Oferuje on wysok\u0105 pr\u0119dko\u015b\u0107 \u0142adowania obrazu wideo i ca\u0142kowicie eliminuje problem gromadzenia op\u00f3\u017anie\u0144 w miar\u0119 wyd\u0142u\u017cania si\u0119 czasu ogl\u0105dania.<\/p>\n<p>Po wprowadzeniu wsparcia dla WebRTC w chmurze Ivideon mo\u017cemy z pe\u0142nym przekonaniem stwierdzi\u0107, \u017ce teraz nasi klienci maj\u0105 dost\u0119p do pe\u0142nowymiarowego transmisji na \u017cywo. Obecnie op\u00f3\u017anienie przy przesy\u0142aniu wideo nie przekracza jednej sekundy! Dla por\u00f3wnania, poprzedni silnik HLS zapewnia\u0142 dostaw\u0119 z op\u00f3\u017anieniem 5-7 sekund. R\u00f3\u017cnica w szybko\u015bci pokazu wideo jest znaczna, a u\u017cytkownik od razu to zauwa\u017cy po rozpocz\u0119ciu korzystania z naszego serwisu wideo.<\/p>\n<p>Jak przewidywali\u015bmy, wdro\u017cenie nowego odtwarzacza umo\u017cliwi\u0142o zwi\u0119kszenie reaktywno\u015bci PTZ i g\u0142osowej komunikacji z kamer\u0105.<\/p>\n<p><img decoding=\"async\" alt=\"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer\" src=\"\/wp-content\/uploads\/2019\/04\/b6775b11fbc6d97a7cede32cccc471ab.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJest tylko jeden drobny element, na kt\u00f3ry chcemy zwr\u00f3ci\u0107 uwag\u0119. Nowy odtwarzacz WebRTC obecnie dzia\u0142a w trybie testowym. Dlatego nie w\u0142\u0105czamy go domy\u015blnie dla wszystkich naszych klient\u00f3w. Mo\u017cesz go jednak aktywowa\u0107 samodzielnie, w\u0142\u0105czaj\u0105c odpowiedni punkt w ustawieniach kamery (musisz wej\u015b\u0107 w <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.ivideon.com\/my\/\">panel u\u017cytkownika<\/a><\/noindex>).<\/p>\n<h2>Cechy implementacji WebRTC w us\u0142udze Ivideon<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer\" src=\"\/wp-content\/uploads\/2019\/04\/247e640fa9334a0c144cc6b4296dc23b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWebRTC w tej chwili wci\u0105\u017c jest technologi\u0105 eksperymentaln\u0105. Jej wsparcie nie zosta\u0142o jeszcze prawid\u0142owo wdro\u017cone we wszystkich przegl\u0105darkach i urz\u0105dzeniach u\u017cytkownik\u00f3w, ani we wszystkich kamerach.<\/p>\n<p>W\u0142a\u015bnie to wyja\u015bnia, dlaczego nie uczynili\u015bmy odtwarzacza WebRTC domy\u015blnym dla wszystkich u\u017cytkownik\u00f3w.<\/p>\n<p>Na razie zalecamy korzysta\u0107 z WebRTC tylko w przegl\u0105darkach Google Chrome. Najnowsze wersje Firefox i Safari r\u00f3wnie\u017c wspieraj\u0105 t\u0119 technologi\u0119, ale niestety jeszcze nie s\u0105 stabilne. <\/p>\n<p>Nie wprowadzi\u015bmy jeszcze wsparcia dla WebRTC w przegl\u0105darkach na urz\u0105dzeniach mobilnych. Je\u015bli teraz zalogujesz si\u0119 z urz\u0105dzenia mobilnego i aktywujesz WebRTC, tryb ten nie b\u0119dzie dzia\u0142a\u0142. Niemniej jednak, WebRTC jest dost\u0119pne w naszych aplikacjach mobilnych dla <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.ivideon.client&amp;hl=ru\">Android<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/itunes.apple.com\/ru\/app\/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-ivideon\/id464234175?mt=8\">iOS<\/a><\/noindex>.<\/p>\n<p>Ko\u0144cz\u0105c nasz\u0105 opowie\u015b\u0107 o cechach implementacji WebRTC w naszej us\u0142udze, zwr\u00f3\u0107my uwag\u0119 na jeszcze dwa drobne szczeg\u00f3\u0142y.<\/p>\n<p>Po pierwsze, technologia ta jest ukierunkowana na transmisj\u0119 w\u0142a\u015bnie na \u017cywo w czasie rzeczywistym. Z tego powodu, je\u015bli wydajno\u015b\u0107 Twojego \u0142\u0105cza b\u0119dzie niewystarczaj\u0105ca do przesy\u0142ania wideo, zauwa\u017cysz utrat\u0119 klatek (z HLS zauwa\u017cysz zamarzanie wideo i zwi\u0119kszenie op\u00f3\u017anienia, przy tym klatki nie b\u0119d\u0105 si\u0119 gubi\u0107), ale wideo nadal b\u0119dzie przesy\u0142ane w czasie rzeczywistym.<\/p>\n<p>Po drugie, poniewa\u017c technologia zosta\u0142a stworzona specjalnie do pracy z \u017cywym wideo w czasie rzeczywistym, nie u\u017cywamy jej do pracy z archiwalnymi danymi wideo.<\/p>\n<h2>Inne zmiany w us\u0142udze<\/h2>\n<p>\nObecnie Flash nie bierze ju\u017c udzia\u0142u w mechanizmie automatycznego wyboru silnika. Nadal mo\u017cna skorzysta\u0107 z tego odtwarzacza, jednak nale\u017cy go wybra\u0107 r\u0119cznie w ustawieniach konta lub kamery. To nie moda, lecz wed\u0142ug statystyk naszego serwisu niemal nie ma u\u017cytkownik\u00f3w korzystaj\u0105cych z Flasha. Przy pr\u00f3bie okre\u015blenia, czy jego przegl\u0105darka obs\u0142uguje Flasha, tracimy oko\u0142o 2 sekundy cennego czasu. <\/p>\n<p>Oto kr\u00f3tko o zmianach, kt\u00f3re czekaj\u0105 na Ciebie w naszym chmurowym systemie monitoringu wideo i panelu u\u017cytkownika. Pozosta\u0144 z nami i \u015bled\u017a nowo\u015bci!<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ivideon\/blog\/449326\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0431\u0435\u0437 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430 Ivideon \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0440\u0435\u0441\u0442 \u2013 \u044d\u0442\u043e \u0431\u044b\u043b \u043d\u0430\u0448 \u042d\u0432\u0435\u0440\u0435\u0441\u0442, \u0432\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043d\u044f\u043b\u043e \u0443\u0439\u043c\u0443 \u0441\u0438\u043b, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, \u0432\u043e\u0442\u043a\u043d\u0443\u043b\u0438 \u043b\u0435\u0434\u043e\u0440\u0443\u0431 \u0432 \u043c\u0430\u043a\u0443\u0448\u043a\u0443 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0431\u0443\u0441\u0430. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u0432\u0443\u043a\u0430 \u0438 \u0432\u0438\u0434\u0435\u043e \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, Web-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47WebRTC \u0438 \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0438\u0434\u0435\u043e \u0441 \u043a\u0430\u043c\u0435\u0440 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:46:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47WebRTC i monitoring wideo: jak pokonali\u015bmy op\u00f3\u017anienie wideo z kamer | ProHoster","description":"Od pierwszych dni pracy nad.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47WebRTC \u0438 \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0438\u0434\u0435\u043e \u0441 \u043a\u0430\u043c\u0435\u0440 | ProHoster","og:description":"\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:46:17+00:00","article:modified_time":"2019-10-31T18:46:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32314","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 10:17:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:17:44","updated":"2026-01-21 10:17:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/32314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=32314"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/32314\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/24131"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=32314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=32314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=32314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}