{"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\/sv\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","title":{"rendered":"Vi utforskar VoIP-motorn Mediastreamer2. Del 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Artikelmaterialet \u00e4r h\u00e4mtat fr\u00e5n min <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">Zen-kanal<\/a><\/noindex>.<\/p>\n<h2 id=\"vvedenie\">Introduktion<\/h2>\n<p>Den h\u00e4r artikeln \u00e4r b\u00f6rjan p\u00e5 en serie artiklar om realtidsbehandling av mediadata med hj\u00e4lp av motoren Mediastreamer2. Under framst\u00e4llningen kommer minimala f\u00e4rdigheter i Linux-terminal och programmering i C att anv\u00e4ndas.<\/p>\n<p>Mediastreamer2 \u00e4r en VoIP-motor som ligger till grund f\u00f6r det popul\u00e4ra \u00f6ppen k\u00e4llkodsprojektet f\u00f6r programvaruvoip-telefonen. <noindex><a rel=\"nofollow\" href=\"http:\/\/linphone.org\/\">Linphone<\/a><\/noindex>. I Linphone implementerar Mediastreamer2 alla funktioner relaterade till ljud och video. En detaljerad lista \u00f6ver motorens m\u00f6jligheter kan ses p\u00e5 den h\u00e4r sidan Mediastreamer. K\u00e4llkoden finns h\u00e4r: <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.linphone.org\/BC\/public\/mediastreamer2\">GitLab<\/a><\/noindex>.<\/p>\n<p>I textet kommer vi f\u00f6r bekv\u00e4mlighet att anv\u00e4nda den ryska beteckningen f\u00f6r Mediastreamer2: \u00ab\u043c\u0435\u0434\u0438\u0430\u0441\u0442\u0440\u0438\u043c\u0435\u0440\u00bb.<\/p>\n<p>Historien om dess skapande \u00e4r inte helt tydlig, men enligt dess k\u00e4llkod anv\u00e4nde den tidigare biblioteket <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GLib\">Glib<\/a><\/noindex>, vilket antyder en potentiell avl\u00e4gsen sl\u00e4ktskap med <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GStreamer\">GStreamer<\/a><\/noindex>. J\u00e4mf\u00f6rt med det ser mediastreamern mer l\u00e4ttviktig ut. Den f\u00f6rsta versionen av Linphone sl\u00e4pptes 2001, s\u00e5 just nu har mediastreamern funnits och utvecklats i n\u00e4stan 20 \u00e5r.<\/p>\n<p>I grunden f\u00f6r mediastreamern ligger en arkitektur som kallas \u00abData flow\u00bb (datafl\u00f6de). Ett exempel p\u00e5 en s\u00e5dan arkitektur visas i bilden nedan.<\/p>\n<p><img decoding=\"async\" alt=\"Vi utforskar VoIP-motorn Mediastreamer2. Del 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>I denna arkitektur definieras algoritmen f\u00f6r databehandling inte av programkod, utan av en schema (graf) som kopplar samman funktioner, som kan ordnas i valfri ordning. Dessa funktioner kallas filter.<\/p>\n<p>Denna arkitektur g\u00f6r det m\u00f6jligt att implementera funktionaliteten f\u00f6r mediahantering som en upps\u00e4ttning filter som kopplas ihop i ett schema f\u00f6r bearbetning och \u00f6verf\u00f6ring av RTP-trafik till VoIP-telefonen.<\/p>\n<p>M\u00f6jligheten att koppla filter i godtyckliga scheman, enkel utveckling av nya filter och implementeringen av mediastreamern som ett frist\u00e5ende, separat bibliotek m\u00f6jligg\u00f6r dess anv\u00e4ndning i andra projekt. Dessutom kan projektet vara inom VoIP, eftersom det finns m\u00f6jligheter att l\u00e4gga till filter som du sj\u00e4lv har skapat.<\/p>\n<p>Det f\u00f6rinstallerade filterbiblioteket \u00e4r ganska omfattande och som redan n\u00e4mnts kan det utvidgas med filter av egen utveckling. Men f\u00f6rst ska vi beskriva de f\u00e4rdiga filter som levereras tillsammans med mediastreamern. H\u00e4r \u00e4r deras lista:<\/p>\n<h3 id=\"zvukovye-filtry\">Ljudfilter<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-zvuka\">Inspelning och uppspelning av ljud<\/h4>\n<ul>\n<li>Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ<\/li>\n<li>Android native sound (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>Filspelare f\u00f6r filer (raw\/wav\/pcap-filer) (Linux): MS_FILE_PLAYER<\/li>\n<li>Filspelare f\u00f6r filer (raw\/wav-filer) (Windows): MS_WINSND_READ<\/li>\n<li>Skriv till fil (wav-filer) (Linux): MS_FILE_REC<\/li>\n<li>Skriv till fil (wav-filer) (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-ljud (Windows)<\/li>\n<\/ul>\n<h4 id=\"kodirovaniedekodirovanie-zvuka\">Kodning\/decodning av ljud<\/h4>\n<ul>\n<li>G.711 a-law: MS_ALAW_DEC, MS_ALAW_ENC<\/li>\n<li>G.711 \u00b5-law: 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>Linj\u00e4ra 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\">Ljudbehandling<\/h4>\n<ul>\n<li>Kanalkonvertering (mono-&gt;stereo, stereo-&gt;mono): MS_CHANNEL_ADAPTER<\/li>\n<li>Konferens: MS_CONF<\/li>\n<li>DTMF-generator: MS_DTMF_GEN<\/li>\n<li>Ekkod\u00e4mpning (speex): MS_SPEEX_EC<\/li>\n<li>Equalizer: MS_EQUALIZER<\/li>\n<li>Mixer: MS_MIXER<\/li>\n<li>Pakettapp kompensator (PLC): MS_GENERIC_PLC<\/li>\n<li>Resampler: MS_RESAMPLE<\/li>\n<li>Ton-detektor: MS_TONE_DETECTOR<\/li>\n<li>Volymkontroll och signalniv\u00e5m\u00e4tning: MS_VOLUME<\/li>\n<\/ul>\n<h3 id=\"filtry-video\">Videofilter<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-video\">Videof\u00e5ngst och -uppspelning<\/h4>\n<ul>\n<li>Android-f\u00e5ngst<\/li>\n<li>Android-uppspelning<\/li>\n<li>AV Foundation-f\u00e5ngst (iOS)<\/li>\n<li>AV Foundation-uppspelning (iOS)<\/li>\n<li>DirectShow-f\u00e5ngst (Windows)<\/li>\n<li>DrawDib-uppspelning (Windows)<\/li>\n<li>Extern uppspelning \u2013 Skicka video till h\u00f6g niv\u00e5<\/li>\n<li>GLX-uppspelning (Linux): MS_GLXVIDEO<\/li>\n<li>Mire \u2013 Syntetisk r\u00f6rlig bild: MS_MIRE<\/li>\n<li>OpenGL-uppspelning (Mac OS X)<\/li>\n<li>OpenGL ES2-uppspelning (Android)<\/li>\n<li>Quicktime-f\u00e5ngst (Mac OS X)<\/li>\n<li>SDL-uppspelning: MS_SDL_OUT<\/li>\n<li>Utdata av statiska bilder: MS_STATIC_IMAGE<\/li>\n<li>Video For Linux (V4L) f\u00e5ngst (Linux): MS_V4L<\/li>\n<li>Video For Linux 2 (V4L2) f\u00e5ngst (Linux): MS_V4L2_CAPTURE<\/li>\n<li>Video4windows (DirectShow) f\u00e5ngst (Windows)<\/li>\n<li>Video4windows (DirectShow) f\u00e5ngst (Windows CE)<\/li>\n<li>Video For Windows (vfw) f\u00e5ngst (Windows)<\/li>\n<li>XV-uppspelning (Linux)<\/li>\n<\/ul>\n<h4 id=\"kodirovaniedekodirovanie-video\">Kodning\/decodning av video<\/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 (endast decoder): 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\">Videobehandling<\/h4>\n<ul>\n<li>JPEG snapshot<\/li>\n<li>Pixelformatkonverterare: MS_PIX_CONV<\/li>\n<li>Resizer<\/li>\n<li>Andra filter<\/li>\n<li>Byte av datablok mellan tr\u00e5dar: MS_ITC_SOURCE, MS_ITC_SINK<\/li>\n<li>Samla datablok fr\u00e5n flera ing\u00e5ngar till en utg\u00e5ng: MS_JOIN<\/li>\n<li>RTP mottagning\/\u00f6verf\u00f6ring: MS_RTP_SEND, MS_RTP_RECV<\/li>\n<li>Kopiera ing\u00e5ngsdata till flera utg\u00e5ngar: MS_TEE<\/li>\n<li>Konsistent belastning: MS_VOID_SINK<\/li>\n<li>Tysthetsk\u00e4lla: MS_VOID_SOURCE<\/li>\n<\/ul>\n<h3 id=\"plaginy\">Plugins<\/h3>\n<h4 id=\"zvukovye-filtry-1\">Ljudfilter<\/h4>\n<ul>\n<li>AMR-NB kodare\/decoder<\/li>\n<li>G.729 kodare\/decoder<\/li>\n<li>iLBC kodare\/decoder<\/li>\n<li>SILK kodare\/decoder<br \/>\n<h4 id=\"filtry-video\">Videofilter<\/h4>\n<\/li>\n<li>H.264 programkodare<\/li>\n<li>H.264 V4L2 kodare\/decoder med h\u00e5rdvaruacceleration<\/li>\n<\/ul>\n<p>Efter en kort beskrivning av filtret visas typnamnet som anv\u00e4nds f\u00f6r att skapa en ny instans av detta filter. I forts\u00e4ttningen kommer vi att h\u00e4nvisa till den h\u00e4r listan.<\/p>\n<h2 id=\"ustanovka-pod-linux-ubuntu\">Installation p\u00e5 Linux Ubuntu<\/h2>\n<p>Nu kommer vi att installera mediastreamern p\u00e5 datorn och bygga v\u00e5r f\u00f6rsta applikation med den.<\/p>\n<p>Installation av Mediastremer2 p\u00e5 en dator eller virtuell maskin som k\u00f6r Ubuntu kr\u00e4ver inga s\u00e4rskilda f\u00e4rdigheter. H\u00e4r och fram\u00f6ver kommer symbolen \u00ab$\u00bb att beteckna kommandotolken f\u00f6r att ange kommandon. Det vill s\u00e4ga, om du ser den h\u00e4r symbolen i b\u00f6rjan av en rad i listan, betyder det att det \u00e4r raden d\u00e4r kommandon f\u00f6r att k\u00f6ra i terminalen visas.<\/p>\n<p>Det antas att din dator har tillg\u00e5ng till Internet under genomf\u00f6randet av \u00e5tg\u00e4rderna som beskrivs i denna artikel.<\/p>\n<h4 id=\"ustanovka-paketa-libmediastremer-dev\">Installation av paketet libmediastremer-dev<\/h4>\n<p>\u00d6ppna terminalen och skriv in kommandot:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get update<\/code><\/pre>\n<p>Du kommer att bli ombedd att ange ett l\u00f6senord f\u00f6r att g\u00f6ra \u00e4ndringar, ange det och pakethanteraren kommer att uppdatera sina databaser. Efter detta m\u00e5ste du k\u00f6ra:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install libmediastreamer-dev<\/code><\/pre>\n<p>N\u00f6dv\u00e4ndiga beroendepaket och sj\u00e4lva mediastreamerbiblioteket kommer automatiskt att laddas ner och installeras.<\/p>\n<p>Den totala storleken p\u00e5 de nedladdade deb-baserade beroendepaketen kommer att vara ungef\u00e4r 35 MB. Detaljer om den installerade paketet kan f\u00e5s med kommandot:<\/p>\n<pre><code class=\"bash\">$ dpkg -s libmediastreamer-dev<\/code><\/pre>\n<p>Exempel p\u00e5 svar:<\/p>\n<pre><code class=\"bash\">Paket: libmediastreamer-dev\nStatus: installerat ok installerat\nPrioritet: valfri\nAvsnitt: libdevel\nInstallerad storlek: 244\nUnderh\u00e5llare: Ubuntu Developers \nArkitektur: amd64\nK\u00e4lla: linphone\nVersion: 3.6.1-2.5\nBeroenden: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev\nBeskrivning: Linphone webbtelefonens mediebibliotek - utvecklingsfiler\nLinphone \u00e4r en ljud- och video-internettelefon som anv\u00e4nder SIP-protokollet.\nDen har ett GTK+ och konsolgr\u00e4nssnitt, inkluderar en stor variation av ljud- och videokodekar, och erbjuder IM-funktioner.\n.\nDetta paket inneh\u00e5ller utvecklingsbiblioteken f\u00f6r hantering av mediaoperationer.\nUrsprunglig underh\u00e5llare: Debian VoIP Team \nStartsida: http:\/\/www.linphone.org\/\n<\/code><\/pre>\n<h4 id=\"ustanovka-instrumentov-razrabotki\">Installation av utvecklingsverktyg<\/h4>\n<p>Vi installerar C-kompilatorn och tillh\u00f6rande verktyg:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gcc<\/code><\/pre>\n<p>Kontrollera resultatet genom att beg\u00e4ra kompilatorns version:<\/p>\n<pre><code class=\"bash\">$ gcc --version<\/code><\/pre>\n<p>Svaret ska vara ungef\u00e4r s\u00e5 h\u00e4r:<\/p>\n<pre><code class=\"bash\">gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609\nCopyright (C) 2015 Free Software Foundation, Inc.\nDetta \u00e4r fri programvara; se k\u00e4llan f\u00f6r kopieringsvillkor. Det finns INGEN\ngaranti; inte ens f\u00f6r SALGBARHET eller L\u00c4MPLIGHET F\u00d6R ETT VISST SYFTE.<\/code><\/pre>\n<h4 id=\"sborka-i-zapusk-probnogo-prilozheniya\">Bygg och k\u00f6r en provapplikation<\/h4>\n<p>Skapa en <em>home<\/em> mapp f\u00f6r v\u00e5ra utbildningsprojekt, kalla den <em>mstutorial<\/em>:<\/p>\n<pre><code class=\"bash\">$ mkdir ~\/mstutorial<\/code><\/pre>\n<p>Anv\u00e4nd din favorittextredigerare och skapa en C-programfil som heter <em>mstest.c<\/em> med f\u00f6ljande inneh\u00e5ll:<\/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>Det initierar mediastreamern, skriver ut ett v\u00e4lkomnande och avslutar k\u00f6rningen.<\/p>\n<p>Spara filen och kompilera testapplikationen med f\u00f6ljande kommando:<\/p>\n<pre><code class=\"bash\">$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>Observera att raden<\/p>\n<pre><code class=\"bash\">`pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>inl\u00e5st inom citat, som finns p\u00e5 tangentbordet d\u00e4r ocks\u00e5 bokstaven \u00ab\u0401\u00bb finns.<\/p>\n<p>Om filen inte inneh\u00e5ller n\u00e5gra fel, kommer en fil att skapas i katalogen efter kompileringen. <em>mstest<\/em>. Vi k\u00f6r programmet:<\/p>\n<pre><code class=\"bash\">$ .\\\/mstest<\/code><\/pre>\n<p>Resultatet kommer att se ut s\u00e5 h\u00e4r:<\/p>\n<pre><code class=\"bash\">ALSA lib conf.c:4738:(snd_config_expand) Ok\u00e4nda parametrar 0\nALSA lib control.c:954:(snd_ctl_open_noupdate) Ogiltig CTL default:0\nortp-warning-Kunde inte f\u00e4sta mixer till kort: Ogiltigt argument\nALSA lib conf.c:4738:(snd_config_expand) Ok\u00e4nda parametrar 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Ok\u00e4nd PCM default:0\nALSA lib conf.c:4738:(snd_config_expand) Ok\u00e4nda parametrar 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Ok\u00e4nd PCM default:0\nortp-warning-Konstig, ljudkort HDA Intel PCH verkar inte vara kapabel till n\u00e5gonting, f\u00f6rs\u00f6ker igen med plughw...\nMediastreamer \u00e4r redo.<\/code><\/pre>\n<p>I detta utdrag ser vi felmeddelanden som ALSA-biblioteket ger, som anv\u00e4nds f\u00f6r att styra ljudkortet. Sj\u00e4lva utvecklarna av mediastreamern anser att detta \u00e4r normalt. I detta fall h\u00e5ller vi oss motvilligt med dem.<\/p>\n<p>Nu har vi allt klart f\u00f6r att arbeta med mediastreamern. Vi har installerat mediastreamer-biblioteket, kompilering verktyget och genom ett testprogram kontrollerat att verktygen \u00e4r inst\u00e4llda och att mediastreamern initieras framg\u00e5ngsrikt.<\/p>\n<p>I n\u00e4sta <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495728\/\">artikeln<\/a><\/noindex> vi kommer att skapa en applikation som samlar in och k\u00f6r ljudsignalbehandling i en kedja av flera filter.<\/p>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47L\u00e4r dig VoIP-motorn Mediastreamer2. Del 1 | ProHoster","description":"Materialet i artikeln \u00e4r h\u00e4mtat fr\u00e5n min Zen-kanal.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/77011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=77011"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/77011\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/77012"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=77011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=77011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=77011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}