{"id":77011,"date":"2020-04-07T01:42:55","date_gmt":"2020-04-06T23:42:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1"},"modified":"2021-02-16T09:44:41","modified_gmt":"2021-02-16T07:44:41","slug":"izuchaem-voip-dvizhok-mediastreamer2-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","title":{"rendered":"Uurime VoIP-mootorit Mediastreamer2. Osa 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Artikli materjal on saadud minu <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">Dzen-kanalist<\/a><\/noindex>.<\/p>\n<h2 id=\"vvedenie\">Sissejuhatus<\/h2>\n<p>See artikkel on algus seeriale artikleid reaalajas meediaandmete t\u00f6\u00f6tlemisest Mediastreamer2 mootori abil. Teksti esitamiseks on vaja minimaalset Linuxi terminali ja C keele programmeerimisoskust.<\/p>\n<p>Mediastreamer2 on VoIP-mootor, mis on populaarse avatud l\u00e4htekoodiga VoIP-telefoni projekti aluseks. <noindex><a rel=\"nofollow\" href=\"http:\/\/linphone.org\/\">Linphone<\/a><\/noindex>. Linphone'i sees rakendab Mediastreamer2 k\u00f5iki heliga ja videoga seotud funktsioone. Mootori funktsioonide \u00fcksikasjalikku loetelu saab vaadata sellel lehel Mediastreamer. Allikakood on siin: <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.linphone.org\/BC\/public\/mediastreamer2\">GitLab<\/a><\/noindex>.<\/p>\n<p>J\u00e4rgnevas tekstis kasutame mugavuse huvides s\u00f5na Mediastreamer2 asemel selle eestikeelset t\u00e4hendust: &#171;meediastreamer&#187;.<\/p>\n<p>Selle loomise ajalugu ei ole p\u00e4ris selge, kuid tema allikakoodi p\u00f5hjal on n\u00e4ha, et ta kasutas varem raamatukogu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GLib\">Glib<\/a><\/noindex>, mis vihjab meile v\u00f5imaliku kaugema sugulusesse <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GStreamer\">GStreamer<\/a><\/noindex>. V\u00f5rreldes sellega n\u00e4eb midiastreamer v\u00e4lja kergem. Esimene Linphone'i versioon ilmus 2001. aastal, seega on midiastreamer praegu eksisteerinud ja arenemas peaaegu 20 aastat.<\/p>\n<p>Meediastreameri aluseks on arhitektuur, mida nimetatakse &#171;Data flow&#187; (andmevoog). Sellise arhitektuuri n\u00e4ide on kujutatud alloleval joonisel.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime VoIP-mootorit Mediastreamer2. Osa 1\" src=\"\/wp-content\/uploads\/2020\/04\/b05c34a9ee8c79fb39b439db32239071.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Selles arhitektuuris m\u00e4\u00e4ratakse andmete t\u00f6\u00f6tlemise algoritm mitte programmi koodi, vaid funktsioonide \u00fchendamise skeemiga (graafikuga), mida saab seada igas j\u00e4rjekorras. Neid funktsioone nimetatakse filtriteks.<\/p>\n<p>Selline arhitektuur v\u00f5imaldab rakendada meedia t\u00f6\u00f6tlemise funktsioone filtrite komplektina, mis on \u00fchendatud VoIP-telefoni RTP-traffiku t\u00f6\u00f6tlemise ja edastamise skeemi.<\/p>\n<p>Filtreid on v\u00f5imalik \u00fchendada meelevaldselt skeemidesse, uute filtrite lihtne arendamine, midiastreameri rakendamine omaette raamatukoguna v\u00f5imaldab seda kasutada ka teistes projektides. Samuti v\u00f5ib projekt olla VoIP-valdkonnas, kuna on v\u00f5imalik lisada ise loodud filtreid.<\/p>\n<p>Vaikeselt tarnitud filtrite raamatukogu on piisavalt rikkalik ja nagu juba \u00f6eldud, saab seda laiendada enda arendatud filtritega. Kuid k\u00f5igepealt kirjeldame valmis filtreid, mis tulevad koos midiastreameriga. Siin on nende nimekiri:<\/p>\n<h3 id=\"zvukovye-filtry\">Helifiltrid<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-zvuka\">Heli salvestamine ja taasesitus<\/h4>\n<ul>\n<li>Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ<\/li>\n<li>Androidi natiivne heli (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ<\/li>\n<li>Audio Queue Service (Mac OS X): MS_AQ_WRITE, MS_AQ_READ<\/li>\n<li>Audio Unit Service (Mac OS X)<\/li>\n<li>Arts (Linux): MS_ARTS_WRITE, MS_ARTS_READ<\/li>\n<li>DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ<\/li>\n<li>Failide taasesitaja (raw\/wav\/pcap failid) (Linux): MS_FILE_PLAYER<\/li>\n<li>Failide taasesitaja (raw\/wav failid) (Windows): MS_WINSND_READ<\/li>\n<li>Faili salvestamine (wav failid) (Linux): MS_FILE_REC<\/li>\n<li>Faili salvestamine (wav failid) (Windows): MS_WINSND_WRITE<\/li>\n<li>Mac Audio Unit (Mac OS X)<\/li>\n<li>MME (Windows)<\/li>\n<li>OSS (Linux): MS_OSS_WRITE, MS_OSS_READ<\/li>\n<li>PortAudio (Mac OS X)<\/li>\n<li>PulseAudio (Linux): MS_PULSE_WRITE, MS_PULSE_READ<\/li>\n<li>Windows Sound (Windows)<\/li>\n<\/ul>\n<h4 id=\"kodirovaniedekodirovanie-zvuka\">Heli kodeerimine\/dekodeerimine<\/h4>\n<ul>\n<li>G.711 a-\u017eanr: MS_ALAW_DEC, MS_ALAW_ENC<\/li>\n<li>G.711 \u00b5-\u017eanr: MS_ULAW_DEC, MS_ULAW_ENC<\/li>\n<li>G.722: MS_G722_DEC, MS_G722_ENC<\/li>\n<li>G.726: MS_G726_32_ENC, MS_G726_24_ENC, MS_G726_16_ENC<\/li>\n<li>GSM: MS_GSM_DEC, MS_GSM_ENC<\/li>\n<li>Lineaarne PCM: MS_L16_ENC, MS_L16_DEC<\/li>\n<li>Speex: MS_SPEEX_ENC, MS_SPEEX_DEC<\/li>\n<\/ul>\n<h4 id=\"obrabotka-zvuka\">Heli t\u00f6\u00f6tlemine<\/h4>\n<ul>\n<li>Kanali konverteerimine (mono-&gt;stereo, stereo-&gt;mono): MS_CHANNEL_ADAPTER<\/li>\n<li>Konverents: MS_CONF<\/li>\n<li>DTMF generaator: MS_DTMF_GEN<\/li>\n<li>Kaja summutamine (speex): MS_SPEEX_EC<\/li>\n<li>Ekvalaiser: MS_EQUALIZER<\/li>\n<li>Mikser: MS_MIXER<\/li>\n<li>Pakettide kaotuse kompensaator (PLC): MS_GENERIC_PLC<\/li>\n<li>Uusamplija: MS_RESAMPLE<\/li>\n<li>Toonide detektor: MS_TONE_DETECTOR<\/li>\n<li>Heli valimise ja signaali taseme m\u00f5\u00f5tmise s\u00fcsteem: MS_VOLUME<\/li>\n<\/ul>\n<h3 id=\"filtry-video\">Video filtrid<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-video\">Video salvestamine ja taasesitamine<\/h4>\n<ul>\n<li>Androidi salvestamine<\/li>\n<li>Androidi taasesitamine<\/li>\n<li>AV Foundation salvestamine (iOS)<\/li>\n<li>AV Foundation taasesitamine (iOS)<\/li>\n<li>DirectShow salvestamine (Windows)<\/li>\n<li>DrawDib taasesitamine (Windows)<\/li>\n<li>V\u00e4lise taasesitamine \u2014 video saatmine \u00fclemisele tasemele<\/li>\n<li>GLX taasesitamine (Linux): MS_GLXVIDEO<\/li>\n<li>Mire \u2014 s\u00fcnteetiline liikuv pilt: MS_MIRE<\/li>\n<li>OpenGL taasesitamine (Mac OS X)<\/li>\n<li>OpenGL ES2 taasesitamine (Android)<\/li>\n<li>Quicktime salvestamine (Mac OS X)<\/li>\n<li>SDL taasesitamine: MS_SDL_OUT<\/li>\n<li>Staaticute piltide v\u00e4ljund: MS_STATIC_IMAGE<\/li>\n<li>Video For Linux (V4L) salvestamine (Linux): MS_V4L<\/li>\n<li>Video For Linux 2 (V4L2) salvestamine (Linux): MS_V4L2_CAPTURE<\/li>\n<li>Video4windows (DirectShow) salvestamine (Windows)<\/li>\n<li>Video4windows (DirectShow) salvestamine (Windows CE)<\/li>\n<li>Video For Windows (vfw) salvestamine (Windows)<\/li>\n<li>XV taasesitamine (Linux)<\/li>\n<\/ul>\n<h4 id=\"kodirovaniedekodirovanie-video\">Video encoding\/decoding<\/h4>\n<ul>\n<li>H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Snow: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC<\/li>\n<li>H.264 (ainult dekooder): MS_H264_DEC<\/li>\n<li>Theora: MS_THEORA_ENC, MS_THEORA_DEC<\/li>\n<li>VP8: MS_VP8_ENC, MS_VP8_DEC<\/li>\n<\/ul>\n<h4 id=\"obrabotka-video\">Video t\u00f6\u00f6tlemine<\/h4>\n<ul>\n<li>JPEG snapshot<\/li>\n<li>Pikseliformaadi konverter: MS_PIX_CONV<\/li>\n<li>M\u00f5\u00f5tmine<\/li>\n<li>Teised filtrid<\/li>\n<li>Andmeplokkide vahetamine niitide vahel: MS_ITC_SOURCE, MS_ITC_SINK<\/li>\n<li>Andmeplokkide kogumine mitmest sisendist \u00fche v\u00e4ljundi jaoks: MS_JOIN<\/li>\n<li>RTP vastuv\u00f5tt\/saatmine: MS_RTP_SEND, MS_RTP_RECV<\/li>\n<li>Sisseseadmise andmete kopeerimine mitmele v\u00e4ljundile: MS_TEE<\/li>\n<li>Konsolideeritud koormus: MS_VOID_SINK<\/li>\n<li>Vaikusallikas: MS_VOID_SOURCE<\/li>\n<\/ul>\n<h3 id=\"plaginy\">Pluginad<\/h3>\n<h4 id=\"zvukovye-filtry-1\">Helifiltrid<\/h4>\n<ul>\n<li>AMR-NB kodeerija\/dekodeerija<\/li>\n<li>G.729 kodeerija\/dekodeerija<\/li>\n<li>iLBC kodeerija\/dekodeerija<\/li>\n<li>SILK kodeerija\/dekodeerija<br \/>\n<h4 id=\"filtry-video\">Video filtrid<\/h4>\n<\/li>\n<li>H.264 tarkvaraline kodeerija<\/li>\n<li>H.264 V4L2 kodeerija\/dekodeerija riistvara kiirusel<\/li>\n<\/ul>\n<p>L\u00fchikese filtri kirjelduse j\u00e4rel on n\u00e4idatud t\u00fc\u00fcp, mida kasutatakse uue filtri eksemplari loomisel. Edasi r\u00e4\u00e4gime sellest nimekirjast.<\/p>\n<h2 id=\"ustanovka-pod-linux-ubuntu\">Linux Ubuntu installimine<\/h2>\n<p>N\u00fc\u00fcd teeme mediastreameri paigaldamise arvutisse ja koostame selle abil meie esimesi rakendusi.<\/p>\n<p>Mediastremer2 installimine arvutisse v\u00f5i virtuaalmasinasse, mis t\u00f6\u00f6tab Ubuntu all, ei n\u00f5ua eriteadmisi. Siin ja edaspidi t\u00e4histame s\u00fcmbolit &#171;$&#187; shelli k\u00e4suviibaga k\u00e4surea sisestamiseks. St, kui n\u00e4ete joonisel seda s\u00fcmbolit rea alguses, t\u00e4hendab see, et seal on k\u00e4sud, mida tuleb terminalis t\u00e4ita.<\/p>\n<p>Eeldatakse, et artiklis kirjeldatud toimingute teostamise ajal on teie arvutil juurdep\u00e4\u00e4s Internetile.<\/p>\n<h4 id=\"ustanovka-paketa-libmediastremer-dev\">Paketi libmediastremer-dev paigaldamine<\/h4>\n<p>K\u00e4ivitame terminali ja sisestame k\u00e4su:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get update<\/code><\/pre>\n<p>K\u00fcsite salas\u00f5na muudatuste tegemiseks, sisestage see ja pakettide haldur v\u00e4rskendab oma andmebaase. P\u00e4rast seda tuleb t\u00e4ita:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install libmediastreamer-dev<\/code><\/pre>\n<p>Vajalikud s\u00f5ltuvuspaketid ja mediastreameri teek installitakse automaatselt.<\/p>\n<p>Allalaaditud deb-pakettide kogusuurus on umbes 35 MB. Installitud paketi kohta teabe saamiseks kasutage k\u00e4sku:<\/p>\n<pre><code class=\"bash\">$ dpkg -s libmediastreamer-dev<\/code><\/pre>\n<p>N\u00e4ide vastusest:<\/p>\n<pre><code class=\"bash\">Pakett: libmediastreamer-dev\nOlek: install ok installed\nPrioriteet: valikuline\nJaotis: libdevel\nInstallitud suurus: 244\nHooldaja: Ubuntu arendajad \nArhitektuur: amd64\nAllikas: linphone\nVersioon: 3.6.1-2.5\nS\u00f5ltub: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev\nKirjeldus: Linphone'i veebi telefoni meediaraamatukogu - arendusfailid\nLinphone on audio- ja videointerneti telefon, mis kasutab SIP protokolli. See\nomab GTK+ ja konsoolli liidest, sisaldab suurt hulka audio ja video\nkoodekeid ning pakub kiirs\u00f5numite funktsioone.\n.\nSee pakett sisaldab arendusteeke meediaoperatsioonide haldamiseks.\nAlgne hooldaja: Debian VoIP meeskond \nAvaleht: http:\/\/www.linphone.org\/\n<\/code><\/pre>\n<h4 id=\"ustanovka-instrumentov-razrabotki\">Arendust\u00f6\u00f6riistade paigaldamine<\/h4>\n<p>Paigaldame C keele kompilaatori ja sellega seotud t\u00f6\u00f6riistad:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gcc<\/code><\/pre>\n<p>Kontrollime tulemust, k\u00fcsides kompilaatori versiooni:<\/p>\n<pre><code class=\"bash\">$ gcc --version<\/code><\/pre>\n<p>Vastus peaks olema umbes j\u00e4rgmine:<\/p>\n<pre><code class=\"bash\">gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609\nKopeerimise \u00f5igused (C) 2015 Free Software Foundation, Inc.\nSee on tasuta tarkvara; vaadake allika kopeerimise tingimusi. Ei ole\ngarantii; isegi mitte KAUBANDUSLIKULT RIKKUMISE v\u00f5i TEATAVAD OTSTARBE AED.<\/code><\/pre>\n<h4 id=\"sborka-i-zapusk-probnogo-prilozheniya\">Proovirakenduse koostamine ja k\u00e4ivitamine<\/h4>\n<p>Loome kausta <em>home<\/em> meie \u00f5ppeprojektide jaoks, nimetame selle <em>mstutorial<\/em>:<\/p>\n<pre><code class=\"bash\">$ mkdir ~\/mstutorial<\/code><\/pre>\n<p>Kasutage oma lemmik tekstiredaktorit ja looge C-programmi fail nimega <em>mstest.c<\/em> j\u00e4rgmise sisuga:<\/p>\n<pre><code class=\"cpp\">#include \"stdio.h\"\n#include &lt;mediastreamer2\/mscommon.h&gt;\nint main()\n{\n  ms_init();\n  printf (\"Mediastreamer is ready.n\");\n}<\/code><\/pre>\n<p>See teostab mediastreameri initsialiseerimise, prindib tervituse ja l\u00f5petab t\u00e4itmise.<\/p>\n<p>Salvestame faili ja kompileerime testrakenduse k\u00e4suga:<\/p>\n<pre><code class=\"bash\">$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>Pange t\u00e4hele, et rida<\/p>\n<pre><code class=\"bash\">`pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>on tsiteeritud jutum\u00e4rkides, mis asuvad klaviatuuril seal, kus ka t\u00e4ht &#171;\u0401&#187;.<\/p>\n<p>Kui fail ei sisalda vigu, siis p\u00e4rast kompileerimist ilmub katalooge fail <em>mstest<\/em>. K\u00e4ivitage programm:<\/p>\n<pre><code class=\"bash\">$ .\/mstest<\/code><\/pre>\n<p>Tulemus n\u00e4eb v\u00e4lja selline:<\/p>\n<pre><code class=\"bash\">ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0\nALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL default:0\nortp-warning-Could not attach mixer to card: Invalid argument\nALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0\nALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0\nortp-warning-Strange, sound card HDA Intel PCH does not seems to be capable of anything, retrying with plughw...\nMediastreamer is ready.<\/code><\/pre>\n<p>K\u00e4esolevas loendis n\u00e4eme vigade teadete, mille annab v\u00e4lja ALSA raamatukogu, mida kasutatakse helikaardi haldamiseks. Mediastreameri arendajad peavad seda normaalseks. Me n\u00f5ustume nendega sel juhul paratamatult.<\/p>\n<p>N\u00fc\u00fcd on meil k\u00f5ik valmis mediastreameriga t\u00f6\u00f6tamiseks. Oleme paigaldanud mediastreameri raamatukogu, kompileerimist\u00f6\u00f6riista ja proovirakenduse abil kontrollinud, et t\u00f6\u00f6riistad on seadistatud ning mediastreamer k\u00e4ivitatakse edukalt.<\/p>\n<p>J\u00e4rgmises <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495728\/\">artiklis<\/a><\/noindex> loome rakenduse, mis kogub ja k\u00e4ivitab helisignaali t\u00f6\u00f6tlemise mitme filtri ahelas.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495702\/\">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. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0432\u0438\u0436\u043a\u0430 Mediastreamer2. \u0412 \u0445\u043e\u0434\u0435 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 Linux \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438. Mediastreamer2 \u044d\u0442\u043e VoIP-\u0434\u0432\u0438\u0436\u043e\u043a, \u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e open-source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e voip-\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 Linphone. \u0412 Linphone Mediastreamer2 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":77012,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-77011","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=\"\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\/et\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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 1 | 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\/et\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1\" \/>\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-04-06T23:42:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-02-16T07:44:41+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\udd47Uurime VoIP-mootorit Mediastreamer2. Osa 1 | ProHoster","description":"Artikli materjal on v\u00f5etud minu zen-kanalist.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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 1 | 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\/et\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","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-04-06T23:42:55+00:00","article:modified_time":"2021-02-16T07:44:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"77011","title":null,"description":"","keywords":"","keyphrases":null,"primary_term":null,"canonical_url":"","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 17:25:30","updated":"2022-09-28 05:33:38","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/77011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=77011"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/77011\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/77012"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=77011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=77011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=77011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}