{"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\/hu\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","title":{"rendered":"A VoIP-motor Mediastreamer2 tanulm\u00e1nyoz\u00e1sa. 1. r\u00e9sz","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A cikk anyaga az \u00e9n <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">Dzen csatorn\u00e1mb\u00f3l sz\u00e1rmazik<\/a><\/noindex>.<\/p>\n<h2 id=\"vvedenie\">Bevezet\u00e9s<\/h2>\n<p>Ez a cikk a Mediastreamer2 motor seg\u00edts\u00e9g\u00e9vel t\u00f6rt\u00e9n\u0151 val\u00f3s idej\u0171 m\u00e9diafeldolgoz\u00e1sr\u00f3l sz\u00f3l\u00f3 cikkek sorozat\u00e1nak kezdete. A k\u00e9s\u0151bbiekben minim\u00e1lis Linux termin\u00e1l haszn\u00e1lati \u00e9s C nyelv programoz\u00e1si ismeretekre lesz sz\u00fcks\u00e9g.<\/p>\n<p>A Mediastreamer2 egy VoIP-motor, amely a n\u00e9pszer\u0171 ny\u00edlt forr\u00e1sk\u00f3d\u00fa voip-telefon projekt alapj\u00e1t k\u00e9pezi. <noindex><a rel=\"nofollow\" href=\"http:\/\/linphone.org\/\">Linphone<\/a><\/noindex>. A Linphone-ban a Mediastreamer2 val\u00f3s\u00edtja meg az \u00f6sszes hanggal \u00e9s vide\u00f3val kapcsolatos funkci\u00f3t. A motor lehet\u0151s\u00e9geinek r\u00e9szletes list\u00e1j\u00e1t ezen az oldalon tal\u00e1lhatja: Mediastreamer. A forr\u00e1sk\u00f3d itt tal\u00e1lhat\u00f3: <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.linphone.org\/BC\/public\/mediastreamer2\">GitLab<\/a><\/noindex>.<\/p>\n<p>A k\u00f6vetkez\u0151 sz\u00f6vegben a Mediastreamer2 sz\u00f3 helyett a magyar megnevez\u00e9st fogjuk haszn\u00e1lni: \u201em\u00e9diafolyam\u201d.<\/p>\n<p>A l\u00e9trehoz\u00e1s\u00e1nak t\u00f6rt\u00e9nete nem teljesen vil\u00e1gos, de a forr\u00e1sk\u00f3dja alapj\u00e1n kor\u00e1bban a <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GLib\">Glib<\/a><\/noindex>k\u00f6nyvt\u00e1rat haszn\u00e1lta, ami arra utal, hogy lehet valamilyen t\u00e1voli rokons\u00e1gban \u00e1ll a <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/GStreamer\">GStreamer<\/a><\/noindex>-rel. A m\u00e9diastr\u00edmel\u0151 a GStreamer-hez k\u00e9pest k\u00f6nnyebbnek t\u0171nik. A Linphone els\u0151 verzi\u00f3ja 2001-ben jelent meg, \u00edgy a m\u00e9diastr\u00edmel\u0151 m\u00e1r k\u00f6zel 20 \u00e9ve l\u00e9tezik \u00e9s fejl\u0151dik.<\/p>\n<p>A m\u00e9diafolyam alapj\u00e1t egy \u00fagynevezett \u201eadathalmaz\u201d (data flow) architekt\u00fara k\u00e9pezi. Az ilyen architekt\u00fara p\u00e9ld\u00e1j\u00e1t az al\u00e1bbi \u00e1bra mutatja be.<\/p>\n<p><img decoding=\"async\" alt=\"A VoIP-motor Mediastreamer2 tanulm\u00e1nyoz\u00e1sa. 1. r\u00e9sz\" 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>Ebben az architekt\u00far\u00e1ban az adatfeldolgoz\u00e1s algoritmus\u00e1t nem programk\u00f3d hat\u00e1rozza meg, hanem a funkci\u00f3k kapcsol\u00f3d\u00e1si s\u00e9m\u00e1ja (gr\u00e1fja), amelyet b\u00e1rmilyen sorrendben fel lehet \u00e9p\u00edteni. Ezeket a funkci\u00f3kat sz\u0171r\u0151knek nevezik.<\/p>\n<p>Ez az architekt\u00fara lehet\u0151v\u00e9 teszi a m\u00e9diafeldolgoz\u00e1s funkci\u00f3j\u00e1nak egy sz\u0171r\u0151k\u00e9szlet form\u00e1j\u00e1ban val\u00f3 megval\u00f3s\u00edt\u00e1s\u00e1t, amelyeket egy RTP-trafik VoIP-telefon feldolgoz\u00e1si \u00e9s tov\u00e1bb\u00edt\u00e1si s\u00e9m\u00e1j\u00e1ban k\u00f6tnek \u00f6ssze.<\/p>\n<p>A sz\u0171r\u0151k tetsz\u0151leges s\u00e9m\u00e1kba val\u00f3 \u00f6sszekapcsol\u00e1s\u00e1nak lehet\u0151s\u00e9ge, az \u00faj sz\u0171r\u0151k egyszer\u0171 fejleszt\u00e9se, \u00e9s a m\u00e9diastr\u00edmel\u0151 \u00f6n\u00e1ll\u00f3 k\u00f6nyvt\u00e1rk\u00e9nt val\u00f3 megval\u00f3s\u00edt\u00e1sa lehet\u0151v\u00e9 teszi, hogy m\u00e1s projektekben is haszn\u00e1lhassuk. A projekt lehet a VoIP ter\u00fclet\u00e9n, mivel lehet\u0151s\u00e9g van saj\u00e1t k\u00e9sz\u00edt\u00e9s\u0171 sz\u0171r\u0151k hozz\u00e1ad\u00e1s\u00e1ra.<\/p>\n<p>Az alap\u00e9rtelmezett k\u00f6nyvt\u00e1r a sz\u0171r\u0151kb\u0151l el\u00e9gg\u00e9 gazdag, \u00e9s ahogy m\u00e1r eml\u00edtett\u00fck, saj\u00e1t fejleszt\u00e9s\u0171 sz\u0171r\u0151kkel is b\u0151v\u00edthet\u0151. De el\u0151sz\u00f6r is ismertetj\u00fck azokat a k\u00e9sz sz\u0171r\u0151ket, amelyeket a m\u00e9diastr\u00edmel\u0151h\u00f6z sz\u00e1ll\u00edtanak. \u00cdme a lista:<\/p>\n<h3 id=\"zvukovye-filtry\">Hangs\u0171r\u00edt\u0151k<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-zvuka\">Hang r\u00f6gz\u00edt\u00e9se \u00e9s lej\u00e1tsz\u00e1sa<\/h4>\n<ul>\n<li>Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ<\/li>\n<li>Android nat\u00edv hang (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>F\u00e1jllej\u00e1tsz\u00f3 (raw\/wav\/pcap f\u00e1jlok) (Linux): MS_FILE_PLAYER<\/li>\n<li>F\u00e1jllej\u00e1tsz\u00f3 (raw\/wav f\u00e1jlok) (Windows): MS_WINSND_READ<\/li>\n<li>F\u00e1jlba t\u00f6rt\u00e9n\u0151 felv\u00e9tel (wav f\u00e1jlok) (Linux): MS_FILE_REC<\/li>\n<li>F\u00e1jlba t\u00f6rt\u00e9n\u0151 felv\u00e9tel (wav f\u00e1jlok) (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\">Hangk\u00f3dol\u00e1s\/dek\u00f3dol\u00e1s<\/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>Line\u00e1ris 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\">Hangel\u0151ad\u00e1s<\/h4>\n<ul>\n<li>Csatorn\u00e1kkonvert\u00e1l\u00e1s (mono-&gt;stereo, stereo-&gt;mono): MS_CHANNEL_ADAPTER<\/li>\n<li>Konferencia: MS_CONF<\/li>\n<li>DTMF gener\u00e1tor: MS_DTMF_GEN<\/li>\n<li>Visszhanggal szembeni elnyom\u00e1s (speex): MS_SPEEX_EC<\/li>\n<li>Equalizer: MS_EQUALIZER<\/li>\n<li>Mikser: MS_MIXER<\/li>\n<li>Csomagveszt\u00e9si kompenz\u00e1tor (PLC): MS_GENERIC_PLC<\/li>\n<li>Resampler: MS_RESAMPLE<\/li>\n<li>Hangfrekvencia-detektor: MS_TONE_DETECTOR<\/li>\n<li>Hanger\u0151- \u00e9s jelszintm\u00e9r\u00e9s: MS_VOLUME<\/li>\n<\/ul>\n<h3 id=\"filtry-video\">Videofilterek<\/h3>\n<h4 id=\"zahvat-i-vosproizvedenie-video\">Vide\u00f3 r\u00f6gz\u00edt\u00e9se \u00e9s lej\u00e1tsz\u00e1sa<\/h4>\n<ul>\n<li>Android r\u00f6gz\u00edt\u00e9s<\/li>\n<li>Android lej\u00e1tsz\u00e1s<\/li>\n<li>AV Foundation r\u00f6gz\u00edt\u00e9s (iOS)<\/li>\n<li>AV Foundation lej\u00e1tsz\u00e1s (iOS)<\/li>\n<li>DirectShow r\u00f6gz\u00edt\u00e9s (Windows)<\/li>\n<li>DrawDib lej\u00e1tsz\u00e1s (Windows)<\/li>\n<li>K\u00fcls\u0151 lej\u00e1tsz\u00e1s \u2013 Vide\u00f3 k\u00fcld\u00e9se a legfels\u0151 szintre<\/li>\n<li>GLX lej\u00e1tsz\u00e1s (Linux): MS_GLXVIDEO<\/li>\n<li>Mire \u2013 Szintetikus mozg\u00f3k\u00e9pek: MS_MIRE<\/li>\n<li>OpenGL lej\u00e1tsz\u00e1s (Mac OS X)<\/li>\n<li>OpenGL ES2 lej\u00e1tsz\u00e1s (Android)<\/li>\n<li>Quicktime r\u00f6gz\u00edt\u00e9s (Mac OS X)<\/li>\n<li>SDL lej\u00e1tsz\u00e1s: MS_SDL_OUT<\/li>\n<li>Statikus k\u00e9pek kiad\u00e1sa: MS_STATIC_IMAGE<\/li>\n<li>Video For Linux (V4L) r\u00f6gz\u00edt\u00e9s (Linux): MS_V4L<\/li>\n<li>Video For Linux 2 (V4L2) r\u00f6gz\u00edt\u00e9s (Linux): MS_V4L2_CAPTURE<\/li>\n<li>Video4windows (DirectShow) r\u00f6gz\u00edt\u00e9s (Windows)<\/li>\n<li>Video4windows (DirectShow) r\u00f6gz\u00edt\u00e9s (Windows CE)<\/li>\n<li>Video For Windows (vfw) r\u00f6gz\u00edt\u00e9s (Windows)<\/li>\n<li>XV lej\u00e1tsz\u00e1s (Linux)<\/li>\n<\/ul>\n<h4 id=\"kodirovaniedekodirovanie-video\">Videok\u00f3dol\u00e1s\/dek\u00f3dol\u00e1s<\/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 (csak dek\u00f3der): 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\">Vide\u00f3feldolgoz\u00e1s<\/h4>\n<ul>\n<li>JPEG pillanatfelv\u00e9tel<\/li>\n<li>Pixelform\u00e1tum konverter: MS_PIX_CONV<\/li>\n<li>\u00c1tm\u00e9retez\u0151<\/li>\n<li>Egy\u00e9b sz\u0171r\u0151k<\/li>\n<li>Adatblokkok cser\u00e9je sz\u00e1lak k\u00f6z\u00f6tt: MS_ITC_SOURCE, MS_ITC_SINK<\/li>\n<li>T\u00f6bb bemenet \u00f6sszegy\u0171jt\u00e9se egy kimenetre: MS_JOIN<\/li>\n<li>RTP v\u00e9tel\/k\u00fcld\u00e9s: MS_RTP_SEND, MS_RTP_RECV<\/li>\n<li>Bemenetek m\u00e1sol\u00e1sa t\u00f6bb kimenetre: MS_TEE<\/li>\n<li>Konzisztens teher: MS_VOID_SINK<\/li>\n<li>Csendforr\u00e1s: MS_VOID_SOURCE<\/li>\n<\/ul>\n<h3 id=\"plaginy\">B\u0151v\u00edtm\u00e9nyek<\/h3>\n<h4 id=\"zvukovye-filtry-1\">Hangs\u0171r\u00edt\u0151k<\/h4>\n<ul>\n<li>AMR-NB k\u00f3dol\u00f3\/dek\u00f3dol\u00f3<\/li>\n<li>G.729 k\u00f3dol\u00f3\/dek\u00f3dol\u00f3<\/li>\n<li>iLBC k\u00f3dol\u00f3\/dek\u00f3dol\u00f3<\/li>\n<li>SILK k\u00f3dol\u00f3\/dek\u00f3dol\u00f3<br \/>\n<h4 id=\"filtry-video\">Videofilterek<\/h4>\n<\/li>\n<li>H.264 programozott k\u00f3dol\u00f3<\/li>\n<li>H.264 V4L2 k\u00f3dol\u00f3\/dek\u00f3dol\u00f3 hardvergyors\u00edt\u00e1ssal<\/li>\n<\/ul>\n<p>A r\u00f6vid sz\u0171r\u00e9si le\u00edr\u00e1s ut\u00e1n l\u00e1that\u00f3 a t\u00edpusa, amelyet az adott sz\u0171r\u0151 \u00faj p\u00e9ld\u00e1ny\u00e1nak l\u00e9trehoz\u00e1sakor haszn\u00e1lnak. A tov\u00e1bbiakban erre a list\u00e1ra fogunk hivatkozni.<\/p>\n<h2 id=\"ustanovka-pod-linux-ubuntu\">Telep\u00edt\u00e9s Linux Ubuntu alatt<\/h2>\n<p>Most telep\u00edtj\u00fck a m\u00e9diastreamert a sz\u00e1m\u00edt\u00f3g\u00e9pre, \u00e9s \u00f6sszegy\u0171jtj\u00fck els\u0151 alkot\u00e1sunkat vele.<\/p>\n<p>A Mediastremer2 telep\u00edt\u00e9se sz\u00e1m\u00edt\u00f3g\u00e9pre vagy virtu\u00e1lis g\u00e9pre Ubuntu oper\u00e1ci\u00f3s rendszer alatt nem ig\u00e9nyel k\u00fcl\u00f6n\u00f6sebb szak\u00e9rtelmet. Itt \u00e9s a tov\u00e1bbiakban a \u201e$\u201d szimb\u00f3lum a parancsok bevitel\u00e9re szolg\u00e1l\u00f3 shell bemeneti promptot jelzi. Teh\u00e1t ha a lista elej\u00e9n ezt a szimb\u00f3lumot l\u00e1tja, az azt jelenti, hogy az a sor a termin\u00e1lban v\u00e9grehajtand\u00f3 parancsokat tartalmaz.<\/p>\n<p>Felt\u00e9telezz\u00fck, hogy a cikk v\u00e9grehajt\u00e1sa sor\u00e1n sz\u00e1m\u00edt\u00f3g\u00e9pe csatlakozik az internethez.<\/p>\n<h4 id=\"ustanovka-paketa-libmediastremer-dev\">A libmediastremer-dev csomag telep\u00edt\u00e9se<\/h4>\n<p>Megnyitjuk a termin\u00e1lt \u00e9s be\u00edrjuk a parancsot:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get update<\/code><\/pre>\n<p>A m\u00f3dos\u00edt\u00e1sokhoz jelsz\u00f3t k\u00e9r, \u00edrja be, \u00e9s a csomagkezel\u0151 friss\u00edti az adatb\u00e1zisait. Ezt k\u00f6vet\u0151en el kell v\u00e9gezn\u00fcnk:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install libmediastreamer-dev<\/code><\/pre>\n<p>A sz\u00fcks\u00e9ges f\u00fcgg\u0151s\u00e9gi csomagok \u00e9s a m\u00e9diastreamer k\u00f6nyvt\u00e1r automatikusan let\u00f6lt\u0151dik \u00e9s telep\u00edt\u00e9sre ker\u00fcl.<\/p>\n<p>A let\u00f6lt\u00f6tt deb-csomagok \u00f6sszm\u00e9rete k\u00f6r\u00fclbel\u00fcl 35 MB lesz. Az telep\u00edtett csomagra vonatkoz\u00f3 r\u00e9szleteket a k\u00f6vetkez\u0151 paranccsal lehet megismerni:<\/p>\n<pre><code class=\"bash\">$ dpkg -s libmediastreamer-dev<\/code><\/pre>\n<p>P\u00e9lda v\u00e1lasz:<\/p>\n<pre><code class=\"bash\">Csomag: libmediastreamer-dev\n\u00c1llapot: megfelel\u0151 telep\u00edtett\nPriorit\u00e1s: opcion\u00e1lis\nSzakasz: libdevel\nTelep\u00edtett m\u00e9ret: 244\nFenntart\u00f3: Ubuntu Fejleszt\u0151k &lt;ubuntu-devel-discuss@lists.ubuntu.com&gt;\nArchitekt\u00fara: amd64\nForr\u00e1s: linphone\nVerzi\u00f3: 3.6.1-2.5\nF\u00fcgg\u0151s\u00e9gek: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev\nLe\u00edr\u00e1s: Linphone web telefon m\u00e9diak\u00f6nyvt\u00e1ra - fejleszt\u00e9si f\u00e1jlok\nA Linphone egy audio- \u00e9s videointernet telefon, amely a SIP protokollt haszn\u00e1lja.\nGTK+ \u00e9s konzol fel\u00fclettel rendelkezik, sz\u00e1mos audio- \u00e9s vide\u00f3 kodek tal\u00e1lhat\u00f3 benne, valamint IM funkci\u00f3kat biztos\u00edt.\n.\nEz a csomag tartalmazza a m\u00e9diam\u0171veletek kezel\u00e9s\u00e9re szolg\u00e1l\u00f3 fejleszt\u00e9si k\u00f6nyvt\u00e1rakat.\nEredeti fenntart\u00f3: Debian VoIP Csapat &lt;pkg-voip-maintainers@lists.alioth.debian.org&gt;\nWeboldal: http:\/\/www.linphone.org\/\n<\/code><\/pre>\n<h4 id=\"ustanovka-instrumentov-razrabotki\">Fejleszt\u0151i eszk\u00f6z\u00f6k telep\u00edt\u00e9se<\/h4>\n<p>Telep\u00edtj\u00fck a C ford\u00edt\u00f3t \u00e9s a hozz\u00e1 kapcsol\u00f3d\u00f3 eszk\u00f6z\u00f6ket:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gcc<\/code><\/pre>\n<p>Ellen\u0151rizz\u00fck az eredm\u00e9nyt a ford\u00edt\u00f3 verzi\u00f3j\u00e1nak lek\u00e9rdez\u00e9s\u00e9vel:<\/p>\n<pre><code class=\"bash\">$ gcc --version<\/code><\/pre>\n<p>A v\u00e1lasz k\u00f6r\u00fclbel\u00fcl a k\u00f6vetkez\u0151k\u00e9ppen kell kin\u00e9zzen:<\/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.\nEz egy szabad szoftver; l\u00e1sd a forr\u00e1st a m\u00e1sol\u00e1si felt\u00e9telek\u00e9rt. Nincs\ngarancia; m\u00e9g a KERESKEDELMI min\u0151s\u00e9gre vagy A HELYES C\u00c9LRA sem.<\/code><\/pre>\n<h4 id=\"sborka-i-zapusk-probnogo-prilozheniya\">K\u00eds\u00e9rleti alkalmaz\u00e1s \u00e9p\u00edt\u00e9se \u00e9s futtat\u00e1sa<\/h4>\n<p>L\u00e9trehozunk egy <em>home<\/em> mapp\u00e1t tanulm\u00e1nyi projektjeink c\u00e9lj\u00e1ra, nevezz\u00fck el <em>mstutorial<\/em>:<\/p>\n<pre><code class=\"bash\">$ mkdir ~\/mstutorial<\/code><\/pre>\n<p>Haszn\u00e1lja kedvenc sz\u00f6vegszerkeszt\u0151j\u00e9t, \u00e9s hozzon l\u00e9tre egy C-programot a k\u00f6vetkez\u0151 n\u00e9ven: <em>mstest.c<\/em> az al\u00e1bbi tartalommal:<\/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>Ez inicializ\u00e1lja a m\u00e9diastreamert, \u00fcdv\u00f6zletet nyomtat, majd befejezi a v\u00e9grehajt\u00e1st.<\/p>\n<p>Mentse el a f\u00e1jlt, \u00e9s ford\u00edtsa le a tesztalkalmaz\u00e1st a k\u00f6vetkez\u0151 paranccsal:<\/p>\n<pre><code class=\"bash\">$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>Vegye \u00e9szre, hogy a sor<\/p>\n<pre><code class=\"bash\">`pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p>id\u0151z\u00f3na z\u00e1r\u00f3jelbe t\u00e9ve, amely a billenty\u0171zeten tal\u00e1lhat\u00f3, ott, ahol a \u201e\u0401\u201d bet\u0171 is.<\/p>\n<p>Ha a f\u00e1jlban nincsenek hib\u00e1k, a ford\u00edt\u00e1s ut\u00e1n megjelenik egy <em>mstest<\/em>f\u00e1jl a k\u00f6nyvt\u00e1rban. Futtassa a programot:<\/p>\n<pre><code class=\"bash\">$ . \/mstest<\/code><\/pre>\n<p>Az eredm\u00e9ny a k\u00f6vetkez\u0151 lesz:<\/p>\n<pre><code class=\"bash\">ALSA lib conf.c:4738:(snd_config_expand) Ismeretlen param\u00e9terek 0\nALSA lib control.c:954:(snd_ctl_open_noupdate) \u00c9rv\u00e9nytelen CTL default:0\nortp-warning-Nem siker\u00fclt csatlakoztatni a kever\u0151t a k\u00e1rty\u00e1hoz: \u00c9rv\u00e9nytelen \u00e9rv\nALSA lib conf.c:4738:(snd_config_expand) Ismeretlen param\u00e9terek 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Ismeretlen PCM default:0\nALSA lib conf.c:4738:(snd_config_expand) Ismeretlen param\u00e9terek 0\nALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Ismeretlen PCM default:0\nortp-warning-Furcsa, a HDA Intel PCH hangk\u00e1rtya nem t\u0171nik k\u00e9pesnek semmire, \u00fajrapr\u00f3b\u00e1lkoz\u00e1s a plughw haszn\u00e1lat\u00e1val...\nMediastreamer k\u00e9szen \u00e1ll.<\/code><\/pre>\n<p>Ebben a list\u00e1ban l\u00e1tjuk az ALSA k\u00f6nyvt\u00e1r \u00e1ltal ki\u00edrt hibajelz\u00e9seket, amely a hangk\u00e1rtya ir\u00e1ny\u00edt\u00e1s\u00e1ra szolg\u00e1l. A m\u00e9diastreamer fejleszt\u0151i ezt norm\u00e1lisnak tartj\u00e1k. Mi ebben az esetben k\u00e9nytelenek vagyunk egyet\u00e9rteni vel\u00fck.<\/p>\n<p>Most minden k\u00e9szen \u00e1ll a m\u00e9diastreamer haszn\u00e1lat\u00e1hoz. Telep\u00edtett\u00fck a m\u00e9diastreamer k\u00f6nyvt\u00e1rat, a ford\u00edt\u00f3eszk\u00f6zt, \u00e9s egy tesztalkalmaz\u00e1ssal ellen\u0151rizt\u00fck, hogy az eszk\u00f6z\u00f6k be vannak \u00e1ll\u00edtva, valamint a m\u00e9diastreamer sikeresen inicializ\u00e1l\u00f3dik.<\/p>\n<p>A k\u00f6vetkez\u0151 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495728\/\">a Spotify d\u00f6nt\u00e9shozatali m\u00f3dszertan\u00e1r\u00f3l. Egyre t\u00f6bb felhaszn\u00e1l\u00f3 prefer\u00e1lja a zenehallgat\u00e1st mobilon a streaming szolg\u00e1ltat\u00e1sban, de a c\u00e9gn\u00e9l t\u00falnyom\u00f3r\u00e9szt webprogramoz\u00f3k dolgoznak. A Spotify elemezte ezt a helyzetet, \u00e9s \u00fagy d\u00f6nt\u00f6tt, hogy t\u00f6bb mobilfejleszt\u0151t vesz fel, valamint \u00e1tnevezi a webes szakembereket \u00faj ir\u00e1nyba:<\/a><\/noindex> cikkben l\u00e9trehozunk egy alkalmaz\u00e1st, amely \u00f6sszegy\u0171jti \u00e9s elind\u00edtja a hangjelet t\u00f6bb sz\u0171r\u0151b\u0151l \u00e1ll\u00f3 l\u00e1ncban.<\/p>\n<p>Forr\u00e1s: <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\/hu\/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=\"hu_HU\" \/>\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\/hu\/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\udd47Fedezz\u00fck fel a Mediastreamer2 VoIP motort. 1. r\u00e9sz | ProHoster","description":"A cikk anyaga a Dzen-csatorn\u00e1mb\u00f3l sz\u00e1rmazik.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/77011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=77011"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/77011\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/77012"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=77011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=77011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=77011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}