{"id":87043,"date":"2020-07-02T19:42:04","date_gmt":"2020-07-02T17:42:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8"},"modified":"2020-07-02T19:42:04","modified_gmt":"2020-07-02T17:42:04","slug":"izuchaem-voip-dvizhok-mediastreamer2-chast-8","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","title":{"rendered":"Zkoum\u00e1me VoIP engine Mediastreamer2. \u010c\u00e1st 8","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Materi\u00e1l \u010dl\u00e1nku je p\u0159evzat z m\u00e9ho <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">zenov\u00e9ho kan\u00e1lu<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me VoIP engine Mediastreamer2. \u010c\u00e1st 8\" src=\"\/wp-content\/uploads\/2020\/07\/ddc5dba3a090dec9927b46a82dda760f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"struktura-rtp-paketa\">Struktura RTP-paketu<\/h2>\n<p><\/p>\n<p>V minulosti <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496490\/\">\u010dl\u00e1nku<\/a><\/noindex> pomoc\u00ed <em>TShark<\/em> jsme provedli zachycen\u00ed RTP-paket\u016f, kter\u00fdmi si vym\u011b\u0148ovaly na\u0161e p\u0159ij\u00edma\u010d a vys\u00edla\u010d. V t\u00e9to \u010d\u00e1sti pak obarv\u00edme prvky paketu na r\u016fzn\u00e9 barvy a probereme jejich funkci. <\/p>\n<p><\/p>\n<p>Pod\u00edvejme se na stejn\u00fd paket, ale ji\u017e s obarven\u00fdmi poli a vysv\u011btlovac\u00edmi popisky:<br \/>\n<img decoding=\"async\" alt=\"Zkoum\u00e1me VoIP engine Mediastreamer2. \u010c\u00e1st 8\" src=\"\/wp-content\/uploads\/2020\/07\/a2ee8fb10bc6daa48dcd0bc9a8596fd7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ve spodn\u00ed \u010d\u00e1sti v\u00fdpisu jsou obarveny bajty, kter\u00e9 tvo\u0159\u00ed RTP-paket, jen\u017e je z\u00e1rove\u0148 u\u017eite\u010dn\u00fdm zat\u00ed\u017een\u00edm UDP-paketu (jeho hlavi\u010dka je obkreslena \u010dernou linkou). Barevn\u00e9 pozad\u00ed vyzna\u010duje bajty RTP-hlavi\u010dky, a zelenou barvou je vyzna\u010den blok dat, kter\u00fd obsahuje u\u017eite\u010dn\u00e9 zat\u00ed\u017een\u00ed RTP-paketu. Data jsou zde p\u0159edstavena v \u0161estn\u00e1ctkov\u00e9 form\u00e1tu. V na\u0161em p\u0159\u00edpad\u011b jde o zvukov\u00fd sign\u00e1l komprimovan\u00fd podle u-z\u00e1kona (m\u00fc-z\u00e1kona), t.j. jeden vzorek m\u00e1 velikost 1 bajt. Proto\u017ee jsme pou\u017eili v\u00fdchoz\u00ed vzorkovac\u00ed frekvenci (8000 Hz), mus\u00ed ka\u017ed\u00fd RTP-paket obsahovat 160 bajt\u016f u\u017eite\u010dn\u00e9ho zat\u00ed\u017een\u00ed p\u0159i frekvenci paket\u016f 50 Hz. To uvid\u00edme tak, \u017ee spo\u010d\u00edt\u00e1me bajty v zelen\u00e9 oblasti, m\u011blo by jich b\u00fdt 10 \u0159\u00e1dk\u016f. <\/p>\n<p><\/p>\n<p>Podle standardu mus\u00ed b\u00fdt mno\u017estv\u00ed dat v u\u017eite\u010dn\u00e9m zat\u00ed\u017een\u00ed n\u00e1sobkem \u010dty\u0159, nebo jin\u00fdmi slovy, mus\u00ed obsahovat cel\u00e9 mno\u017estv\u00ed \u010dty\u0159bajtov\u00fdch slov. Pokud se stane, \u017ee va\u0161e u\u017eite\u010dn\u00e9 zat\u00ed\u017een\u00ed nebude vyhovovat t\u00e9to podm\u00ednce, je t\u0159eba na konec u\u017eite\u010dn\u00e9ho zat\u00ed\u017een\u00ed p\u0159idat bajty s nulov\u00fdmi hodnotami a nastavit bit Padding (Dopl\u0148ov\u00e1n\u00ed). Tento bit se nach\u00e1z\u00ed v prvn\u00edm bajtu RTP-hlavi\u010dky a je zabarven tyrkysovou barvou. V\u0161imn\u011bte si, \u017ee v\u0161echny bajty u\u017eite\u010dn\u00e9ho zat\u00ed\u017een\u00ed maj\u00ed hodnotu 0xFF \u2014 takto vypad\u00e1 ticho ve form\u00e1tu u-law.<\/p>\n<p><\/p>\n<p>Hlavi\u010dka RTP-paketu se skl\u00e1d\u00e1 z 12 povinn\u00fdch bajt\u016f, ale ve dvou p\u0159\u00edpadech m\u016f\u017ee b\u00fdt del\u0161\u00ed:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Kdy\u017e paket nese zvukov\u00fd sign\u00e1l z\u00edskan\u00fd sm\u00edch\u00e1n\u00edm sign\u00e1l\u016f z n\u011bkolika zdroj\u016f (RTP tok\u016f), pak po prvn\u00edch 12 bajtech hlavi\u010dky n\u00e1sleduje tabulka se seznamem identifik\u00e1tor\u016f zdroj\u016f, jejich\u017e u\u017eite\u010dn\u00e9 zat\u00ed\u017een\u00ed bylo pou\u017eito pro vytvo\u0159en\u00ed u\u017eite\u010dn\u00e9ho zat\u00ed\u017een\u00ed tohoto paketu. P\u0159i\u010dem\u017e v ni\u017e\u0161\u00edch \u010dty\u0159ech bitech prvn\u00edho bajtu hlavi\u010dky (pole <em>Po\u010det identifik\u00e1tor\u016f p\u0159isp\u00edvaj\u00edc\u00edch zdroj\u016f<\/em>) uv\u00e1d\u00ed po\u010det zdroj\u016f. Velikost pole je 4 bity, tak\u017ee tabulka m\u016f\u017ee obsahovat a\u017e 15 identifik\u00e1tor\u016f zdroj\u016f. Ka\u017ed\u00fd z nich zab\u00edr\u00e1 4 bajty. Tato tabulka se pou\u017e\u00edv\u00e1 p\u0159i organizaci konferen\u010dn\u00edho spojen\u00ed.<\/p>\n<p>\n<\/li>\n<li>\n<p>Kdy\u017e m\u00e1 hlavi\u010dka roz\u0161\u00ed\u0159en\u00ed. V tomto p\u0159\u00edpad\u011b se v prvn\u00edm bajtu hlavi\u010dky nastav\u00ed bit <strong>X<\/strong>. V roz\u0161\u00ed\u0159en\u00e9 hlavi\u010dce, po tabulce \u00fa\u010dastn\u00edk\u016f (pokud existuj\u00ed), se nach\u00e1z\u00ed hlavi\u010dka roz\u0161\u00ed\u0159en\u00ed o velikosti jednoho slova, a za n\u00ed n\u00e1sleduj\u00ed slova roz\u0161\u00ed\u0159en\u00ed. Roz\u0161\u00ed\u0159en\u00ed je soubor bajt\u016f, kter\u00e9 m\u016f\u017eete pou\u017e\u00edt k p\u0159enosu dodate\u010dn\u00fdch dat. Standard neuv\u00e1d\u00ed form\u00e1t t\u011bchto dat \u2014 m\u016f\u017ee b\u00fdt libovoln\u00fd. Nap\u0159\u00edklad to mohou b\u00fdt n\u011bjak\u00e1 dodate\u010dn\u00e1 nastaven\u00ed pro za\u0159\u00edzen\u00ed, kter\u00e9 p\u0159ij\u00edm\u00e1 RTP-pakety. Pro n\u011bkter\u00e9 aplikace v\u0161ak byly vyvinuty standardy roz\u0161\u00ed\u0159en\u00e9 hlavi\u010dky. Nap\u0159\u00edklad to bylo provedeno pro komunika\u010dn\u00ed prost\u0159edky ve standardu <em>ED-137 ( Interoperability Standards for VoIP ATM Components )<\/em>. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Nyn\u00ed se pod\u00edvejme na pole hlavi\u010dky podrobn\u011bji. N\u00ed\u017ee je zobrazen kanonick\u00fd obr\u00e1zek se strukturou RTP-hlavi\u010dky, kter\u00fd jsem tak\u00e9 nemohl odolat a vybarvil jej ve stejn\u00fdch barv\u00e1ch.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me VoIP engine Mediastreamer2. \u010c\u00e1st 8\" src=\"\/wp-content\/uploads\/2020\/07\/b8839a56fbe4ee484c9d6b19714b541e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>VER<\/strong> \u2014 \u010d\u00edslo verze protokolu (aktu\u00e1ln\u00ed verze 2);<\/p>\n<p><\/p>\n<p><strong>redicted Frame)<\/strong> \u2014 flag, kter\u00fd se nastavuje v p\u0159\u00edpadech, kdy je RTP-paket dopln\u011bn pr\u00e1zdn\u00fdmi bajty na konci;<\/p>\n<p><\/p>\n<p><strong>X<\/strong> \u2014 flag, kter\u00fd indikuje, \u017ee hlavi\u010dka je roz\u0161\u00ed\u0159en\u00e1;<\/p>\n<p><\/p>\n<p><strong>CC<\/strong> \u2014 obsahuje po\u010det CSRC identifik\u00e1tor\u016f, kter\u00e9 n\u00e1sleduj\u00ed za trvalou hlavi\u010dkou (po slovech 1..3), na obr\u00e1zku tabulka nen\u00ed zobrazena;<\/p>\n<p><\/p>\n<p><strong>M<\/strong> \u2014 marker za\u010d\u00e1tku r\u00e1mce nebo p\u0159\u00edtomnosti \u0159e\u010di v kan\u00e1lu (pokud je pou\u017eit detektor pauz v \u0159e\u010di). Pokud p\u0159\u00edjemce neobsahuje detektor pauz v \u0159e\u010di, m\u011bl by b\u00fdt tento bit trvale nastaven;<\/p>\n<p><\/p>\n<p><strong>PTYPE<\/strong> \u2014 ud\u00e1v\u00e1 form\u00e1t payloadu;<\/p>\n<p><\/p>\n<p><strong>\u010c\u00edslo sekvence<\/strong> \u2014 \u010d\u00edslo paketu, pou\u017e\u00edv\u00e1 se k obnov\u011b po\u0159ad\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed paket\u016f, proto\u017ee skute\u010dn\u011b m\u016f\u017ee nastat situace, kdy pakety dosahuj\u00ed p\u0159\u00edjemce ne v tom po\u0159ad\u00ed, v jak\u00e9m byly odesl\u00e1ny. Po\u010d\u00e1te\u010dn\u00ed hodnota by m\u011bla b\u00fdt n\u00e1hodn\u00e1, to se d\u011bl\u00e1, aby se v p\u0159\u00edpad\u011b \u0161ifrov\u00e1n\u00ed RTP-streamu zt\u00ed\u017eilo jeho prolomen\u00ed. Tak\u00e9 toto pole umo\u017e\u0148uje odhalit ztr\u00e1ty paket\u016f;<\/p>\n<p><\/p>\n<p><strong>\u010casov\u00e1 zna\u010dka<\/strong> \u2014 \u010dasov\u00e1 zna\u010dka. \u010cas se m\u011b\u0159\u00ed ve vzorc\u00edch sign\u00e1lu, t.j. pokud paket obsahuje 160 vzork\u016f, \u010dasov\u00e1 zna\u010dka n\u00e1sleduj\u00edc\u00edho paketu bude o 160 vy\u0161\u0161\u00ed. Po\u010d\u00e1te\u010dn\u00ed hodnota \u010dasov\u00e9 zna\u010dky by m\u011bla b\u00fdt n\u00e1hodn\u00e1;<\/p>\n<p><\/p>\n<p><strong>SSRC<\/strong> \u2014 identifik\u00e1tor zdroje paketu, m\u011bl by b\u00fdt unik\u00e1tn\u00ed. Je lep\u0161\u00ed jej generovat n\u00e1hodn\u011b p\u0159ed spu\u0161t\u011bn\u00edm RTP toku.<\/p>\n<p><\/p>\n<p>Pokud budete vyv\u00edjet sv\u016fj vys\u00edla\u010d nebo p\u0159ij\u00edma\u010d RTP paket\u016f, budete muset n\u011bkolikr\u00e1t proch\u00e1zet va\u0161e pakety, abyste zv\u00fd\u0161ili produktivitu. Doporu\u010duji v\u00e1m osvojit si pou\u017eit\u00ed filtrov\u00e1n\u00ed paket\u016f v TShark, kter\u00e9 v\u00e1m umo\u017e\u0148uje zachytit pouze ty pakety, kter\u00e9 jsou pro v\u00e1s zaj\u00edmav\u00e9. Ve sc\u00e9n\u00e1\u0159i, kdy je v s\u00edti zapnuto des\u00edtky RTP za\u0159\u00edzen\u00ed, je to velmi cenn\u00e9. V p\u0159\u00edkazov\u00e9m \u0159\u00e1dku TShark se parametry filtrov\u00e1n\u00ed zad\u00e1vaj\u00ed pomoc\u00ed mo\u017enosti \"-f\". Tuto mo\u017enost jsme pou\u017eili, kdy\u017e jsme cht\u011bli zachytit pakety z portu 8010:<br \/>\n<code>-f \"udp port 8010\"<\/code><br \/>\nParametry filtrov\u00e1n\u00ed jsou vlastn\u011b soubor krit\u00e9ri\u00ed, kter\u00fdm mus\u00ed odpov\u00eddat \"zachycovan\u00fd\" paket. Podm\u00ednka m\u016f\u017ee kontrolovat adresu, port, hodnotu ur\u010dit\u00e9ho bytu v paketu. Podm\u00ednky lze kombinovat logick\u00fdmi operacemi \"A\", \"NEBO\" atd. Velmi siln\u00fd n\u00e1stroj.<\/p>\n<p><\/p>\n<p>Pokud chcete sledovat dynamiku zm\u011bn pol\u00ed v paketech, budete muset duplikovat v\u00fdstup <em>TShark<\/em> do souboru, jak bylo uk\u00e1z\u00e1no v p\u0159edchoz\u00edm \u010dl\u00e1nku, pomoc\u00ed p\u0159esm\u011brov\u00e1n\u00ed v\u00fdstupu <em>TShark<\/em> na vstup <em>tee<\/em>. D\u00e1le otev\u0159ete logovac\u00ed soubor pomoc\u00ed <em>less, vim<\/em> nebo jin\u00e9ho n\u00e1stroje, kter\u00fd dok\u00e1\u017ee rychle pracovat s obrovsk\u00fdmi textov\u00fdmi soubory a prov\u00e1d\u011bt vyhled\u00e1v\u00e1n\u00ed \u0159et\u011bzc\u016f, abyste zjistili v\u0161echny nuance chov\u00e1n\u00ed pol\u00ed paket\u016f v RTP toku.<\/p>\n<p><\/p>\n<p>Pokud pot\u0159ebujete poslouchat sign\u00e1l p\u0159en\u00e1\u0161en\u00fd RTP tokem, je t\u0159eba pou\u017e\u00edt verzi <em>TShark<\/em> s grafick\u00fdm rozhran\u00edm <em>Wireshark<\/em>. P\u0159i jednoduch\u00fdch manipulac\u00edch my\u0161\u00ed zde m\u016f\u017eete poslouchat, vid\u011bt oscilogram sign\u00e1lu. Ale za jedn\u00e9 podm\u00ednky \u2014 pokud bude k\u00f3dov\u00e1n ve form\u00e1tu u-law nebo a-low.<\/p>\n<p><\/p>\n<p>V n\u00e1sleduj\u00edc\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496874\/\">\u010dl\u00e1nku<\/a><\/noindex> vytvo\u0159\u00edme si duplexn\u00ed komunika\u010dn\u00ed za\u0159\u00edzen\u00ed. P\u0159ipravte si p\u00e1r sluch\u00e1tek a jednoho spole\u010dn\u00edka.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496666\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TShark \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0437\u0430\u0445\u0432\u0430\u0442 RTP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a. \u041d\u0443 \u0430 \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u0438\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0443\u0436\u0435 \u0441 \u043f\u043e\u0434\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0441 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u043d\u0430\u0434\u043f\u0438\u0441\u044f\u043c\u0438: \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87044,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87043","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\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\/cs\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 8 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\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=\"2020-07-02T17:42:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-02T17:42:04+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\udd47Studujeme VoIP engine Mediastreamer2. \u010c\u00e1st 8 | ProHoster","description":"Materi\u00e1l \u010dl\u00e1nku poch\u00e1z\u00ed z m\u00e9ho Dzen kan\u00e1lu.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 8 | ProHoster","og:description":"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","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":"2020-07-02T17:42:04+00:00","article:modified_time":"2020-07-02T17:42:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87043","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:59:56","updated":"2022-10-07 20:48:50","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/87043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=87043"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/87043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/87044"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=87043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=87043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=87043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}