{"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\/cs\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","title":{"rendered":"Zkoum\u00e1me VoIP engine Mediastreamer2. \u010c\u00e1st 1","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<h2 id=\"vvedenie\">\u00davod<\/h2>\n<p>Tento \u010dl\u00e1nek je za\u010d\u00e1tkem s\u00e9rie \u010dl\u00e1nk\u016f o re\u00e1ln\u00e9m zpracov\u00e1n\u00ed medi\u00e1ln\u00edch dat pomoc\u00ed engine Mediastreamer2. P\u0159i vypr\u00e1v\u011bn\u00ed budou zapojeny minim\u00e1ln\u00ed dovednosti pr\u00e1ce v termin\u00e1lu Linux a programov\u00e1n\u00ed v jazyce C.<\/p>\n<p>Mediastreamer2 je VoIP engine, kter\u00fd le\u017e\u00ed v z\u00e1kladu popul\u00e1rn\u00edho open-source projektu softwarov\u00e9ho VoIP telefonu <noindex><a rel=\"nofollow\" href=\"http:\/\/linphone.org\/\">Linphone<\/a><\/noindex>. V Linphone Mediastreamer2 realizuje ve\u0161ker\u00e9 funkce spojen\u00e9 se zvukem a videem. Podrobn\u00fd seznam funkc\u00ed engine lze vid\u011bt na t\u00e9to str\u00e1nce Mediastreamer. Zdrojov\u00fd k\u00f3d se nach\u00e1z\u00ed zde: <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.linphone.org\/BC\/public\/mediastreamer2\">GitLab<\/a><\/noindex>.<\/p>\n<p>D\u00e1le v textu, pro snadnost, m\u00edsto slova Mediastreamer2 budeme pou\u017e\u00edvat jeho \u010deskou notaci: &#171;mediastreamer&#187;.<\/p>\n<p>Historie jeho vzniku nen\u00ed \u00fapln\u011b jasn\u00e1, ale soud\u011b podle jeho zdrojov\u00e9ho k\u00f3du, d\u0159\u00edve pou\u017e\u00edval knihovnu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GLib\">Glib<\/a><\/noindex>, co\u017e nazna\u010duje mo\u017en\u00e9 vzd\u00e1len\u00e9 p\u0159\u00edbuzenstv\u00ed s <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GStreamer\">GStreamer<\/a><\/noindex>. V porovn\u00e1n\u00ed s n\u00edm mediastreamer vypad\u00e1 jako leh\u010d\u00ed. Prvn\u00ed verze Linphone se objevila v roce 2001, tak\u017ee v sou\u010dasnosti existuje a vyv\u00edj\u00ed se u\u017e t\u00e9m\u011b\u0159 20 let.<\/p>\n<p>Z\u00e1kladem mediastreameru je architektura naz\u00fdvan\u00e1 &#171;Data flow&#187; (tok dat). P\u0159\u00edklad takov\u00e9 architektury je zn\u00e1zorn\u011bn na obr\u00e1zku n\u00ed\u017ee.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me VoIP engine Mediastreamer2. \u010c\u00e1st 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>V t\u00e9to architektu\u0159e je algoritmus zpracov\u00e1n\u00ed dat zad\u00e1n nikoli programov\u00fdm k\u00f3dem, ale sch\u00e9matem (grafem) propojen\u00ed funkc\u00ed, kter\u00e9 lze uspo\u0159\u00e1dat v libovoln\u00e9m po\u0159ad\u00ed. Tyto funkce se naz\u00fdvaj\u00ed filtry.<\/p>\n<p>Takov\u00e1 architektura umo\u017e\u0148uje realizovat funkcionalitu zpracov\u00e1n\u00ed m\u00e9di\u00ed ve form\u011b souboru filtr\u016f spojen\u00fdch do sch\u00e9matu zpracov\u00e1n\u00ed a p\u0159enosu RTP provozu VoIP telefonu.<\/p>\n<p>Mo\u017enost spojovat filtry do libovoln\u00fdch sch\u00e9mat, jednoduch\u00fd v\u00fdvoj nov\u00fdch filtr\u016f, realizace mediastreameru jako samostatn\u00e9 knihovny, umo\u017e\u0148uj\u00ed ho pou\u017e\u00edt i v jin\u00fdch projektech. P\u0159i\u010dem\u017e projekt m\u016f\u017ee b\u00fdt v oblasti VoIP, nebo\u0165 je zde mo\u017enost p\u0159id\u00e1vat filtry vytvo\u0159en\u00e9 vlastn\u00edm zp\u016fsobem.<\/p>\n<p>Dod\u00e1van\u00e1 knihovna filtr\u016f je dostate\u010dn\u011b bohat\u00e1 a jak ji\u017e bylo \u0159e\u010deno, m\u016f\u017ee b\u00fdt roz\u0161\u00ed\u0159ena o filtry vlastn\u00ed v\u00fdroby. Ale nejprve pop\u00ed\u0161eme hotov\u00e9 filtry, kter\u00e9 jsou dod\u00e1v\u00e1ny spolu s mediastreamerem. Zde je jejich seznam:<\/p>\n<h3 id=\"zvukovye-filtry\">Zvukov\u00e9 filtry<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-zvuka\">Zachycen\u00ed a p\u0159ehr\u00e1v\u00e1n\u00ed zvuku<\/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>P\u0159ehr\u00e1va\u010d soubor\u016f (raw\/wav\/pcap soubory) (Linux): MS_FILE_PLAYER<\/li>\n<li>P\u0159ehr\u00e1va\u010d soubor\u016f (raw\/wav soubory) (Windows): MS_WINSND_READ<\/li>\n<li>Z\u00e1znam do souboru (wav soubory) (Linux): MS_FILE_REC<\/li>\n<li>Z\u00e1znam do souboru (wav soubory) (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\">K\u00f3dov\u00e1n\u00ed\/dek\u00f3dov\u00e1n\u00ed zvuku<\/h4>\n<ul>\n<li>G.711 a-z\u00e1kon: MS_ALAW_DEC, MS_ALAW_ENC<\/li>\n<li>G.711 \u00b5-z\u00e1kon: 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>Line\u00e1rn\u00ed 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\">Zpracov\u00e1n\u00ed zvuku<\/h4>\n<ul>\n<li>P\u0159evod kan\u00e1lu (mono-&gt;stereo, stereo-&gt;mono): MS_CHANNEL_ADAPTER<\/li>\n<li>Konference: MS_CONF<\/li>\n<li>Gener\u00e1tor DTMF: MS_DTMF_GEN<\/li>\n<li>Potla\u010den\u00ed ozv\u011bny (speex): MS_SPEEX_EC<\/li>\n<li>Ekvaliz\u00e9r: MS_EQUALIZER<\/li>\n<li>Mix\u00e9r: MS_MIXER<\/li>\n<li>Kompenz\u00e1tor ztr\u00e1ty paket\u016f (PLC): MS_GENERIC_PLC<\/li>\n<li>Resampler: MS_RESAMPLE<\/li>\n<li>Detektor t\u00f3n\u016f: MS_TONE_DETECTOR<\/li>\n<li>Ovl\u00e1d\u00e1n\u00ed hlasitosti a m\u011b\u0159en\u00ed \u00farovn\u011b sign\u00e1lu: MS_VOLUME<\/li>\n<\/ul>\n<h3 id=\"filtry-video\">Filtry videa<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-video\">Zachyt\u00e1v\u00e1n\u00ed a p\u0159ehr\u00e1v\u00e1n\u00ed videa<\/h4>\n<ul>\n<li>Android zachyt\u00e1v\u00e1n\u00ed<\/li>\n<li>Android p\u0159ehr\u00e1v\u00e1n\u00ed<\/li>\n<li>AV Foundation zachyt\u00e1v\u00e1n\u00ed (iOS)<\/li>\n<li>AV Foundation p\u0159ehr\u00e1v\u00e1n\u00ed (iOS)<\/li>\n<li>DirectShow zachyt\u00e1v\u00e1n\u00ed (Windows)<\/li>\n<li>DrawDib p\u0159ehr\u00e1v\u00e1n\u00ed (Windows)<\/li>\n<li>Extern\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed \u2014 Odesl\u00e1n\u00ed videa na vy\u0161\u0161\u00ed \u00farove\u0148<\/li>\n<li>GLX p\u0159ehr\u00e1v\u00e1n\u00ed (Linux): MS_GLXVIDEO<\/li>\n<li>Mire \u2014 Um\u011bl\u00fd pohybliv\u00fd obraz: MS_MIRE<\/li>\n<li>OpenGL p\u0159ehr\u00e1v\u00e1n\u00ed (Mac OS X)<\/li>\n<li>OpenGL ES2 p\u0159ehr\u00e1v\u00e1n\u00ed (Android)<\/li>\n<li>Quicktime zachyt\u00e1v\u00e1n\u00ed (Mac OS X)<\/li>\n<li>SDL p\u0159ehr\u00e1v\u00e1n\u00ed: MS_SDL_OUT<\/li>\n<li>V\u00fdstup statick\u00fdch obr\u00e1zk\u016f: MS_STATIC_IMAGE<\/li>\n<li>Video For Linux (V4L) zachyt\u00e1v\u00e1n\u00ed (Linux): MS_V4L<\/li>\n<li>Video For Linux 2 (V4L2) zachyt\u00e1v\u00e1n\u00ed (Linux): MS_V4L2_CAPTURE<\/li>\n<li>Video4windows (DirectShow) zachyt\u00e1v\u00e1n\u00ed (Windows)<\/li>\n<li>Video4windows (DirectShow) zachyt\u00e1v\u00e1n\u00ed (Windows CE)<\/li>\n<li>Video For Windows (vfw) zachyt\u00e1v\u00e1n\u00ed (Windows)<\/li>\n<li>XV p\u0159ehr\u00e1v\u00e1n\u00ed (Linux)<\/li>\n<\/ul>\n<h4 id=\"kodirovaniedekodirovanie-video\">K\u00f3dov\u00e1n\u00ed\/dek\u00f3dov\u00e1n\u00ed videa<\/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 (pouze dekod\u00e9r): 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\">Zpracov\u00e1n\u00ed videa<\/h4>\n<ul>\n<li>JPEG snapshot<\/li>\n<li>Konvertor pixelov\u00e9ho form\u00e1tu: MS_PIX_CONV<\/li>\n<li>Resizer<\/li>\n<li>Ostatn\u00ed filtry<\/li>\n<li>V\u00fdm\u011bna blok\u016f dat mezi vl\u00e1kny: MS_ITC_SOURCE, MS_ITC_SINK<\/li>\n<li>Shroma\u017e\u010fov\u00e1n\u00ed blok\u016f dat z v\u00edce vstup\u016f na jeden v\u00fdstup: MS_JOIN<\/li>\n<li>RTP p\u0159\u00edjem\/p\u0159enos: MS_RTP_SEND, MS_RTP_RECV<\/li>\n<li>Kop\u00edrov\u00e1n\u00ed vstupn\u00edch dat na n\u011bkolik v\u00fdstup\u016f: MS_TEE<\/li>\n<li>Souvisl\u00e1 z\u00e1t\u011b\u017e: MS_VOID_SINK<\/li>\n<li>Zdroj ticha: MS_VOID_SOURCE<\/li>\n<\/ul>\n<h3 id=\"plaginy\">Pluginy<\/h3>\n<h4 id=\"zvukovye-filtry-1\">Zvukov\u00e9 filtry<\/h4>\n<ul>\n<li>AMR-NB kod\u00e9r\/dekod\u00e9r<\/li>\n<li>G.729 kod\u00e9r\/dekod\u00e9r<\/li>\n<li>iLBC kod\u00e9r\/dekod\u00e9r<\/li>\n<li>SILK kod\u00e9r\/dekod\u00e9r<br \/>\n<h4 id=\"filtry-video\">Filtry videa<\/h4>\n<\/li>\n<li>H.264 softwarov\u00fd kod\u00e9r<\/li>\n<li>H.264 V4L2 kod\u00e9r\/dekod\u00e9r s hardwarov\u00fdm zrychlen\u00edm<\/li>\n<\/ul>\n<p>Po kr\u00e1tk\u00e9m popisu filtru je zobrazen n\u00e1zev typu, kter\u00fd se pou\u017e\u00edv\u00e1 p\u0159i vytv\u00e1\u0159en\u00ed nov\u00e9ho p\u0159\u00edpadu tohoto filtru. V dal\u0161\u00edm textu se na tento seznam budeme odvol\u00e1vat.<\/p>\n<h2 id=\"ustanovka-pod-linux-ubuntu\">Instalace na Linux Ubuntu<\/h2>\n<p>Nyn\u00ed provedeme instalaci mediastreamera na po\u010d\u00edta\u010d a sestav\u00edme na\u0161i prvn\u00ed aplikaci s n\u00edm.<\/p>\n<p>Instalace Mediastreamer2 na po\u010d\u00edta\u010d nebo virtu\u00e1ln\u00ed stroj b\u011b\u017e\u00edc\u00ed na Ubuntu nevy\u017eaduje zvl\u00e1\u0161tn\u00ed dovednosti. Zde a d\u00e1le symbolem &#171;$&#187; budeme ozna\u010dovat v\u00fdzvu shellu pro zad\u00e1v\u00e1n\u00ed p\u0159\u00edkaz\u016f. Tedy, pokud v seznamu vid\u00edte tento symbol na za\u010d\u00e1tku \u0159\u00e1dku, znamen\u00e1 to, \u017ee se jedn\u00e1 o \u0159\u00e1dek, ve kter\u00e9m jsou zobrazeny p\u0159\u00edkazy k proveden\u00ed v termin\u00e1lu.<\/p>\n<p>P\u0159edpokl\u00e1d\u00e1 se, \u017ee b\u011bhem prov\u00e1d\u011bn\u00ed krok\u016f popsan\u00fdch v tomto \u010dl\u00e1nku m\u00e1 v\u00e1\u0161 po\u010d\u00edta\u010d p\u0159\u00edstup k internetu.<\/p>\n<h4 id=\"ustanovka-paketa-libmediastremer-dev\">Instalace bal\u00ed\u010dku libmediastremer-dev<\/h4>\n<p>Spou\u0161t\u00edme termin\u00e1l a zad\u00e1v\u00e1me p\u0159\u00edkaz:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get update<\/code><\/pre>\n<p>Bude vy\u017eadov\u00e1no heslo pro proveden\u00ed zm\u011bn, zadejte je a spr\u00e1vce bal\u00ed\u010dk\u016f aktualizuje sv\u00e9 datab\u00e1ze. Pot\u00e9 je t\u0159eba prov\u00e9st:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install libmediastreamer-dev<\/code><\/pre>\n<p>Nebudou automaticky sta\u017eeny a nainstalov\u00e1ny pot\u0159ebn\u00e9 z\u00e1visl\u00e9 bal\u00ed\u010dky a sama knihovna mediastreamera.<\/p>\n<p>Celkov\u00e1 velikost sta\u017een\u00fdch deb-bal\u00ed\u010dk\u016f z\u00e1vislost\u00ed bude p\u0159ibli\u017en\u011b 35 MB. Podrobnosti o nainstalovan\u00e9m bal\u00ed\u010dku lze zjistit p\u0159\u00edkazem:<\/p>\n<pre><code class=\"bash\">$ dpkg -s libmediastreamer-dev<\/code><\/pre>\n<p>P\u0159\u00edklad odpov\u011bdi:<\/p>\n<pre><code class=\"bash\">Bal\u00ed\u010dek: libmediastreamer-dev\nStav: nainstalov\u00e1no ok\nPriorita: voliteln\u00e1\nOdd\u00edl: libdevel\nNainstalov\u00e1no-velikost: 244\nUdr\u017eovatel: Ubuntu Developers \nArchitektura: amd64\nZdroje: linphone\nVerze: 3.6.1-2.5\nZ\u00e1vislosti: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev\nPopis: Medi\u00e1ln\u00ed knihovna webov\u00e9ho telefonu Linphone - v\u00fdvojov\u00e9 soubory\nLinphone je audio a video internetov\u00fd telefon pou\u017e\u00edvaj\u00edc\u00ed protokol SIP. M\u00e1 GTK+ a konzolov\u00e9 rozhran\u00ed, zahrnuje \u0161irokou \u0161k\u00e1lu audio a video kodek\u016f a poskytuje funkce IM.\n.\nTento bal\u00ed\u010dek obsahuje v\u00fdvojov\u00e9 knihovny pro zpracov\u00e1n\u00ed medi\u00e1ln\u00edch operac\u00ed.\nP\u016fvodn\u00ed udr\u017eovatel: Debian VoIP Team \nDomovsk\u00e1 str\u00e1nka: http:\/\/www.linphone.org\/\n<\/code><\/pre>\n<h4 id=\"ustanovka-instrumentov-razrabotki\">Instalace v\u00fdvojov\u00fdch n\u00e1stroj\u016f<\/h4>\n<p>Nainstalujeme kompil\u00e1tor C a s n\u00edm souvisej\u00edc\u00ed n\u00e1stroje:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gcc<\/code><\/pre>\n<p>Zkontrolujeme v\u00fdsledek dotazem na verzi kompil\u00e1toru:<\/p>\n<pre><code class=\"bash\">$ gcc --version<\/code><\/pre>\n<p>Odpov\u011b\u010f by m\u011bla vypadat p\u0159ibli\u017en\u011b takto:<\/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.\nToto je svobodn\u00fd software; viz zdroj pro podm\u00ednky kop\u00edrov\u00e1n\u00ed. Neexistuje \u017e\u00e1dn\u00e1\nz\u00e1ruka; ani za OBCHODOVATELNOST nebo VHODNOST PRO UR\u010cIT\u00dd \u00da\u010cEL.<\/code><\/pre>\n<h4 id=\"sborka-i-zapusk-probnogo-prilozheniya\">Sestaven\u00ed a spu\u0161t\u011bn\u00ed zku\u0161ebn\u00ed aplikace<\/h4>\n<p>Vytvo\u0159\u00edme v <em>home<\/em> adres\u00e1\u0159 pro na\u0161e v\u00fdukov\u00e9 projekty, pojmenujeme ho <em>mstutorial<\/em>:<\/p>\n<pre><code class=\"bash\">$ mkdir ~\/mstutorial<\/code><\/pre>\n<p>Pou\u017eijte sv\u016fj obl\u00edben\u00fd textov\u00fd editor a vytvo\u0159te soubor C programu s n\u00e1zvem <em>mstest.c<\/em> s n\u00e1sleduj\u00edc\u00edm obsahem:<\/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>Inicializuje mediastreamer, vytiskne pozdrav a ukon\u010d\u00ed prov\u00e1d\u011bn\u00ed.<\/p>\n<p>Soubor ulo\u017e\u00edme a zkompilujeme testovac\u00ed aplikaci p\u0159\u00edkazem:<\/p>\n<pre><code class=\"bash\">$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>V\u0161imn\u011bte si, \u017ee \u0159et\u011bzec<\/p>\n<pre><code class=\"bash\">`pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>uzav\u0159ena v uvozovk\u00e1ch, kter\u00e9 se nach\u00e1zej\u00ed na kl\u00e1vesnici tam, kde je tak\u00e9 p\u00edsmeno &#171;\u0401&#187;.<\/p>\n<p>Pokud soubor neobsahuje chyby, po kompilaci se v adres\u00e1\u0159i objev\u00ed soubor <em>mstest<\/em>. Spust\u00edme program:<\/p>\n<pre><code class=\"bash\">$ .\\\/mstest<\/code><\/pre>\n<p>V\u00fdsledek bude vypadat takto:<\/p>\n<pre><code class=\"bash\">ALSA lib conf.c:4738:(snd_config_expand) Nezn\u00e1m\u00e9 parametry 0\nALSA lib control.c:954:(snd_ctl_open_noupdate) Neplatn\u00e9 CTL default:0\nortp-warning-Nepoda\u0159ilo se p\u0159ipojit mixer k kart\u011b: Neplatn\u00fd argument\nALSA lib conf.c:4738:(snd_config_expand) Nezn\u00e1m\u00e9 parametry 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Nezn\u00e1m\u00e9 PCM default:0\nALSA lib conf.c:4738:(snd_config_expand) Nezn\u00e1m\u00e9 parametry 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Nezn\u00e1m\u00e9 PCM default:0\nortp-warning-Zvl\u00e1\u0161tn\u00ed, zvukov\u00e1 karta HDA Intel PCH se zd\u00e1 b\u00fdt neschopn\u00e1 \u010dehokoliv, opakujeme s plughw...\nMediastreamer je p\u0159ipraven.<\/code><\/pre>\n<p>V tomto v\u00fdpisu vid\u00edme chybov\u00e9 zpr\u00e1vy, kter\u00e9 generuje knihovna ALSA, ta se pou\u017e\u00edv\u00e1 k \u0159\u00edzen\u00ed zvukov\u00e9 karty. Sami v\u00fdvoj\u00e1\u0159i mediastreameru pova\u017euj\u00ed za norm\u00e1ln\u00ed, \u017ee se tyto zpr\u00e1vy objevuj\u00ed. My s nimi v tomto p\u0159\u00edpad\u011b sv\u00fdm zp\u016fsobem souhlas\u00edme.<\/p>\n<p>Te\u010f m\u00e1me v\u0161echno p\u0159ipraveno pro pr\u00e1ci s mediastreamerem. Nainstalovali jsme knihovnu mediastreameru, kompil\u00e1tor a s pomoc\u00ed testovac\u00ed aplikace jsme ov\u011b\u0159ili, \u017ee n\u00e1stroje jsou nastaveny a mediastreamer se \u00fasp\u011b\u0161n\u011b inicializuje.<\/p>\n<p>V n\u00e1sleduj\u00edc\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495728\/\">\u010dl\u00e1nku<\/a><\/noindex> vytvo\u0159\u00edme aplikaci, kter\u00e1 shrom\u00e1\u017ed\u00ed a spust\u00ed zpracov\u00e1n\u00ed zvukov\u00e9ho sign\u00e1lu v \u0159et\u011bzci n\u011bkolika filtr\u016f.<\/p>\n<p>Zdroj: <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.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-1\" \/>\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 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\/cs\/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\udd47Studujeme VoIP engine Mediastreamer2. \u010c\u00e1st 1 | 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-1","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 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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/77011","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=77011"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/77011\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/77012"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=77011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=77011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=77011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}