{"id":87067,"date":"2020-07-03T07:42:03","date_gmt":"2020-07-03T05:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2"},"modified":"2020-07-03T07:42:03","modified_gmt":"2020-07-03T05:42:03","slug":"izuchaem-voip-dvizhok-mediastreamer2-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2","title":{"rendered":"Po studiojm\u00eb motorin VoIP Mediastreamer2. Pjesa 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Materiali i artikujt \u00ebsht\u00eb marr\u00eb nga kanali im <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">Dzen<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Po studiojm\u00eb motorin VoIP Mediastreamer2. Pjesa 2\" src=\"\/wp-content\/uploads\/2020\/07\/1afc1603a438f865c56bba72012d591e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"sozdaem-tonalnyy-generator\">Krijojm\u00eb nj\u00eb gjenerues tonal<\/h2>\n<p><\/p>\n<p>N\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495702\/\">artikulli yn\u00eb<\/a><\/noindex> Ne kemi p\u00ebrfunduar instalimin e bibliotek\u00ebs s\u00eb media streaming, veglave t\u00eb zhvillimit dhe kemi verifikuar funksionimin e tyre duke mbledhur nj\u00eb aplikacion prov\u00eb.<\/p>\n<p><\/p>\n<p>Sot do t\u00eb krijojm\u00eb nj\u00eb aplikacion q\u00eb do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb gjeneroj\u00eb nj\u00eb sinjal tonal n\u00eb hart\u00ebn tonale. P\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb detyr\u00eb, na nevojitet t\u00eb lidhim filtrat n\u00eb diagramin e treguar m\u00eb posht\u00eb t\u00eb gjeneruesit tonale:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Po studiojm\u00eb motorin VoIP Mediastreamer2. Pjesa 2\" src=\"\/wp-content\/uploads\/2020\/07\/249759aec6235d3285e6ba6c28524710.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Lexojm\u00eb diagramin nga e majta n\u00eb t\u00eb djatht\u00eb, pik\u00ebrisht n\u00eb k\u00ebt\u00eb drejtim l\u00ebviz fluksi i t\u00eb dh\u00ebnave. T\u00eb gishtat gjithashtu sugjerojn\u00eb k\u00ebt\u00eb. Drejt\u00ebk\u00ebnd\u00ebshat tregojn\u00eb filtrat q\u00eb p\u00ebrpunojn\u00eb blloqet e t\u00eb dh\u00ebnave dhe japin rezultatin n\u00eb dalje. Brenda \u00e7do drejt\u00ebk\u00ebnd\u00ebshi tregohet roli i tij dhe pak m\u00eb posht\u00eb me shkronja t\u00eb m\u00ebdha tregohet tipi i filtrit. T\u00eb gishtat q\u00eb lidhin drejt\u00ebk\u00ebnd\u00ebshat, jan\u00eb radh\u00eb t\u00eb t\u00eb dh\u00ebnave me t\u00eb cilat blloqet e t\u00eb dh\u00ebnave d\u00ebrgohen nga filtri n\u00eb filtru. N\u00eb p\u00ebrgjith\u00ebsi, \u00e7do filtr mund t\u00eb ket\u00eb shum\u00eb hyrje dhe dalje.<\/p>\n<p><\/p>\n<p>\u00c7do gj\u00eb fillon me burimin e taktim, i cili p\u00ebrcakton tempin n\u00eb t\u00eb cilin ndodh p\u00ebrpunimi i t\u00eb dh\u00ebnave n\u00eb filtrat. N\u00eb taktin e tij, \u00e7do filtr p\u00ebrpunon t\u00eb gjitha blloqet e t\u00eb dh\u00ebnave q\u00eb ka n\u00eb hyrje. Ai d\u00ebrgon blloqet me rezultatin n\u00eb dalje \u2014 n\u00eb radh\u00eb. Fillimisht, p\u00ebrpunimi kryhet nga filtrat m\u00eb t\u00eb af\u00ebrt me burimin e taktim, pastaj filtrat e lidhur me daljet e tij (mund t\u00eb ket\u00eb shum\u00eb dalje) dhe k\u00ebshtu me radh\u00eb. Pasi filtrat e fundit n\u00eb zinxhir t\u00eb p\u00ebrfundojn\u00eb p\u00ebrpunimi, ekzekutimi ndalon derisa t\u00eb vij\u00eb nj\u00eb taktim i ri. Takti, p\u00ebr default, ndjek me nj\u00eb interval prej 10 milisekondash. <\/p>\n<p><\/p>\n<p>Kthemi n\u00eb skem\u00ebn ton\u00eb. Takti hyn n\u00eb burimin e heshtjes, q\u00eb \u00ebsht\u00eb nj\u00eb filtr q\u00eb \u00e7do takt gjeneron n\u00eb daljen e tij nj\u00eb grup t\u00eb dh\u00ebnash q\u00eb p\u00ebrmban zero. N\u00ebse e shikojm\u00eb k\u00ebt\u00eb grup si nj\u00eb grup t\u00eb dh\u00ebnash audio, nuk \u00ebsht\u00eb tjet\u00ebr ve\u00e7se heshtje. N\u00eb shikim t\u00eb par\u00eb, duket e \u00e7uditshme t\u00eb gjenerosh grupe t\u00eb dh\u00ebnash me heshtje \u2014 pasi q\u00eb nuk mund ta d\u00ebgjosh, por k\u00ebto grupe jan\u00eb t\u00eb nevojshme p\u00ebr funksionimin e gjeneratorit t\u00eb sinjalit audio. Gjeneratori e p\u00ebrdor k\u00ebt\u00eb grup si nj\u00eb flet\u00eb t\u00eb bardh\u00eb, duke e regjistruar n\u00eb t\u00eb p\u00ebrgjigjet audio. N\u00eb gjendjen e tij normale, gjeneratori \u00ebsht\u00eb i fikur dhe thjesht kalaon grupet e hyrjes n\u00eb dalje. K\u00ebshtu, grupet e heshtjes kalojn\u00eb pa ndryshim n\u00ebp\u00ebr t\u00eb gjith\u00eb skem\u00ebn nga e majta n\u00eb t\u00eb djatht\u00eb, duke shkuar n\u00eb kart\u00ebn audio. E cila merr grupet nga radh\u00ebt e lidhura me hyrjen e saj, pa z\u00eb.<\/p>\n<p><\/p>\n<p>Por gjith\u00e7ka ndodh ndryshon n\u00ebse i jepet gjeneratorit nj\u00eb urdh\u00ebr p\u00ebr t\u00eb luajtur z\u00ebrin, ai fillon t\u00eb gjeneroj\u00eb p\u00ebrgjigje audio dhe i z\u00ebvend\u00ebson ato n\u00eb grupet e hyrjes dhe i vendos grupet e ndryshuara n\u00eb dalje. Karta audio fillon t\u00eb luaj\u00eb z\u00ebrin. M\u00eb posht\u00eb jepet nj\u00eb program q\u00eb realizon skem\u00ebn e pun\u00ebs t\u00eb p\u00ebrshkruar m\u00eb sip\u00ebr:<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">\/* \u0424\u0430\u0439\u043b mstest2.c *\/\n#include &lt;mediastreamer2\/msfilter.h&gt;\n#include &lt;mediastreamer2\/msticker.h&gt;\n#include &lt;mediastreamer2\/dtmfgen.h&gt;\n#include &lt;mediastreamer2\/mssndcard.h&gt;\nint main()\n{\n    ms_init();\n\n    \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432. *\/\n    MSFilter  *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);\n    MSFilter  *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);\n    MSSndCard *card_playback = ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());\n    MSFilter  *snd_card_write = ms_snd_card_create_writer(card_playback);\n\n    \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0438\u043a\u0435\u0440. *\/\n    MSTicker *ticker = ms_ticker_new();\n\n    \/* \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443. *\/\n    ms_filter_link(voidsource, 0, dtmfgen, 0);\n    ms_filter_link(dtmfgen, 0, snd_card_write, 0);\n\n   \/* \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0430\u043a\u0442\u043e\u0432. *\/\n   ms_ticker_attach(ticker, voidsource);\n\n   \/* \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. *\/\n   char key='1';\n   ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY, (void*)&amp;key);\n\n   \/* \u0414\u0430\u0435\u043c, \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439.*\/\n   ms_sleep(2);   \n}<\/code><\/pre>\n<p><\/p>\n<p>Pas inicializimit t\u00eb mediastreamerit, krijohen tre filtra: <em>voidsource, dtmfgen, snd_card_write<\/em>. Krijohet nj\u00eb burim takti.<\/p>\n<p><\/p>\n<p>Pastaj duhet t\u00eb realizoni lidhjen e filtrave sipas skem\u00ebs son\u00eb, duke e lidhur burimin e taktimeve t\u00eb fundit, pasi pas k\u00ebsaj do t\u00eb filloj\u00eb menj\u00ebher\u00eb puna e skem\u00ebs. N\u00ebse e lidhni burimin e taktimeve me nj\u00eb skem\u00eb t\u00eb pap\u00ebrfunduar, mund t\u00eb ndodhi q\u00eb media-streamer t\u00eb p\u00ebrfundoj\u00eb n\u00eb m\u00ebnyr\u00eb emergjente, n\u00ebse zbulon n\u00eb zinxhir t\u00eb pakt\u00ebn nj\u00eb filtr q\u00eb t\u00eb gjith\u00eb hyrjet ose t\u00eb gjitha daljet \"vin\u00eb n\u00eb aj\u00ebr\" (nuk jan\u00eb t\u00eb lidhura). <\/p>\n<p><\/p>\n<p>Lidhja e filtrave kryhet me an\u00eb t\u00eb funksionit <\/p>\n<p><\/p>\n<pre><code class=\"cpp\">ms_filter_link(src, src_out, dst, dst_in)<\/code><\/pre>\n<p><\/p>\n<p>ku argumenti i par\u00eb \u00ebsht\u00eb nj\u00eb tregues p\u00ebr filtrin burim, argumenti i dyt\u00eb \u2014 numri i daljes s\u00eb burimit (vini re se hyrjet dhe daljet num\u00ebrohen duke filluar nga zero). Argumenti i tret\u00eb \u00ebsht\u00eb nj\u00eb tregues p\u00ebr filtrin pranues, i kat\u00ebrti \u2014 numri i hyrjes s\u00eb pranuesit.<\/p>\n<p><\/p>\n<p>T\u00eb gjitha filtrat jan\u00eb t\u00eb lidhur dhe burimi i taktimeve (m\u00eb posht\u00eb do ta quajm\u00eb thjesht si ticker) p\u00ebrfshihet si i fundit. Pas k\u00ebsaj, skema jon\u00eb audio fillon t\u00eb punoj\u00eb, por n\u00eb dinamik\u00ebn e kompjuterit nuk d\u00ebgjohet asgj\u00eb \u2014 gjeneratori i z\u00ebrit \u00ebsht\u00eb i ndezur dhe thjesht kalon p\u00ebrmes tij blloqet hyr\u00ebse t\u00eb t\u00eb dh\u00ebnave me heshtje. P\u00ebr t\u00eb nisur gjenerimin e sinjalit tonalisht, \u00ebsht\u00eb e nevojshme t\u00eb zbatohet metoda e filtrit t\u00eb gjeneratorit.<\/p>\n<p><\/p>\n<p>Do t\u00eb krijojm\u00eb nj\u00eb sinjal dytonal (DTMF) q\u00eb i p\u00ebrgjigjet shtypjes s\u00eb butonit \"1\" n\u00eb telefon. P\u00ebr k\u00ebt\u00eb, ne do t\u00eb p\u00ebrdorim funksionin <em>ms_filter_call_method()<\/em> p\u00ebr t\u00eb thirrur metod\u00ebn MS_DTMF_GEN_PLAY, duke i kaluar si argument nj\u00eb tregues n\u00eb kodin q\u00eb duhet t\u00eb p\u00ebrputhet me sinjalin q\u00eb po luhet.<\/p>\n<p><\/p>\n<p>Tani mbetet t\u00eb kompilohet programi:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ gcc mstest2.c -o mstest2 `pkg-config mediastreamer --libs --cflags`<\/code><\/pre>\n<p><\/p>\n<p>Dhe ta fillojm\u00eb:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ .\/mstest2<\/code><\/pre>\n<p><\/p>\n<p>Pas nisjes s\u00eb programit, do t\u00eb d\u00ebgjoni nj\u00eb sinjal t\u00eb shkurt\u00ebr z\u00ebri n\u00eb dinamik\u00ebn e komputerit q\u00eb p\u00ebrb\u00ebhet nga dy nota.<\/p>\n<p><\/p>\n<p>Ne kemi nd\u00ebrtuar dhe aktivizuar skem\u00ebn ton\u00eb t\u00eb par\u00eb audio. Pam\u00eb si t\u00eb krijojm\u00eb instancat e filtrave, si t'i lidhim dhe si t\u00eb th\u00ebrrasim metodat e tyre. Duke u g\u00ebzuar p\u00ebr suksesin e par\u00eb, megjithat\u00eb, na duhet t\u00eb v\u00ebm\u00eb re se programi yn\u00eb nuk \u00e7liron memorjen e alokuar para p\u00ebrfundimit. N\u00eb t\u00eb ardhmen <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495780\/\">artikulli yn\u00eb<\/a><\/noindex> ne do t\u00eb m\u00ebsojm\u00eb t\u00eb pastrojm\u00eb pas vetes.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495728\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u0435\u0434\u0438\u0430\u0441\u0442\u0440\u0438\u043c\u0435\u0440\u0430, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0441\u043e\u0431\u0440\u0430\u0432 \u043f\u0440\u043e\u0431\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u043b\u0438\u043a\u0430\u0442\u044c \u043d\u0430 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043d\u0438\u0436\u0435 \u0441\u0445\u0435\u043c\u0443 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430: \u0427\u0438\u0442\u0430\u0435\u043c \u0441\u0445\u0435\u043c\u0443 \u0441\u043b\u0435\u0432\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87068,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87067","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.2 - 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\/sq\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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 2 | 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\/sq\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-03T05:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-03T05:42:03+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\udd47Studimi i motorit VoIP Mediastreamer2. Pjesa 2 | ProHoster","description":"Materiali i artikullit \u00ebsht\u00eb marr\u00eb nga kanali im n\u00eb Dzen.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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 2 | 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\/sq\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-03T05:42:03+00:00","article:modified_time":"2020-07-03T05:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87067","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:59:55","updated":"2022-10-04 22:45:55","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/87067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=87067"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/87067\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/87068"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=87067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=87067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=87067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}