{"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 artikullit \u00ebsht\u00eb marr\u00eb nga kanali im <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">zen<\/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 gjenerator tonal<\/h2>\n<p><\/p>\n<p>N\u00eb t\u00eb kaluar\u00ebn <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495702\/\">artikullin<\/a><\/noindex> Ne realizuam instalimin e bibliotek\u00ebs s\u00eb mediastreamer, mjeteve t\u00eb zhvillimit dhe i kontrolluam funksionet e tyre duke nd\u00ebrtuar nj\u00eb aplikacion provues.<\/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 kart\u00ebn audio. P\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb detyr\u00eb, na nevojitet t\u00eb lidhim filtrat n\u00eb skem\u00ebn e m\u00ebposhtme t\u00eb gjeneratorit t\u00eb z\u00ebrit:<\/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 skem\u00ebn nga majta n\u00eb t\u00eb djatht\u00eb, ky \u00ebsht\u00eb drejtimi n\u00eb t\u00eb cilin l\u00ebviz fluksi i t\u00eb dh\u00ebnave. Shigjetat gjithashtu e sugjerojn\u00eb k\u00ebt\u00eb. Drejt\u00ebk\u00ebnd\u00ebshat paraqesin filtrat q\u00eb p\u00ebrpunojn\u00eb blloqet e t\u00eb dh\u00ebnave dhe paraqesin rezultatin n\u00eb dalje. Brenda drejt\u00ebk\u00ebnd\u00ebshit \u00ebsht\u00eb e sh\u00ebnuar roli i tij dhe pak m\u00eb posht\u00eb n\u00eb shkronja kapitale tipi i filtrit. Shigjetat q\u00eb lidhin drejt\u00ebk\u00ebnd\u00ebshat jan\u00eb radh\u00ebt e t\u00eb dh\u00ebnave, sipas t\u00eb cilave blloqet e t\u00eb dh\u00ebnave d\u00ebrgohen nga filtri te filtri. N\u00eb p\u00ebrgjith\u00ebsi, nj\u00eb filt\u00ebr mund t\u00eb ket\u00eb shum\u00eb hyrje dhe dalje.<\/p>\n<p><\/p>\n<p>T\u00eb gjitha fillon nga burimi i takteve, i cili p\u00ebrcakton ritmin n\u00eb t\u00eb cilin ndodh p\u00ebrllogaritja e t\u00eb dh\u00ebnave n\u00eb filtra. N\u00eb \u00e7do takt, secili filt\u00ebr p\u00ebrpunon t\u00eb gjith\u00eb blloqet e t\u00eb dh\u00ebnave q\u00eb ndodhen n\u00eb hyrjen e tij. Dhe e d\u00ebrgon bllokun me rezultatin n\u00eb dalje \u2014 n\u00eb radh\u00eb. Fillimisht, p\u00ebrllogaritja kryhet nga filtri m\u00eb i af\u00ebrt me burimin e takteve, pastaj filtrat e lidhura me daljet e tij (mund t\u00eb ket\u00eb shum\u00eb dalje) dhe k\u00ebshtu me radh\u00eb. Pas p\u00ebrfundimit t\u00eb p\u00ebrllogaritjes nga filtri i fundit n\u00eb zinxhir, ekzekutimi ndalet deri sa t\u00eb vij\u00eb nj\u00eb takt i ri. Taktet, sipas parazgjedhjes, pasojn\u00eb me nj\u00eb interval prej 10 milliseconds. <\/p>\n<p><\/p>\n<p>T\u00eb kthehemi te skema jon\u00eb. Takti hyn n\u00eb burimin e heshtjes, ky \u00ebsht\u00eb nj\u00eb filtrues, i cili n\u00eb \u00e7do takth gjeneron n\u00eb daljen e tij nj\u00eb bllok t\u00eb dh\u00ebnash q\u00eb p\u00ebrmban zero. N\u00ebse e shohim k\u00ebt\u00eb bllok si nj\u00eb bllok e ndjesive akustike, at\u00ebher\u00eb ai nuk \u00ebsht\u00eb gj\u00eb tjet\u00ebr ve\u00e7se heshtje. N\u00eb shikim t\u00eb par\u00eb duket e \u00e7uditshme t\u00eb gjenerosh blloqe t\u00eb dh\u00ebnash me heshtje \u2014 sepse nuk mund t\u00eb d\u00ebgjohet, por k\u00ebto blloqe jan\u00eb t\u00eb nevojshme p\u00ebr funksionimin e gjeneratorit t\u00eb sinjalit akustik. Gjeneratori p\u00ebrdor k\u00ebto blloqe si nj\u00eb let\u00ebr t\u00eb bardh\u00eb, duke regjistruar n\u00eb to ndjesi akustike. N\u00eb gjendjen e tij t\u00eb zakonshme, gjeneratori \u00ebsht\u00eb i fikur dhe thjesht kalon blloqet hyr\u00ebse n\u00eb dalje. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, blloqet e heshtjes kalojn\u00eb pa ndryshime n\u00eb t\u00eb gjith\u00eb skem\u00ebn nga e majta n\u00eb t\u00eb djatht\u00ebn, duke mb\u00ebrritur n\u00eb kart\u00ebn e z\u00ebrit. E cila merr blloqet nga radh\u00ebt e lidhura me hyrjen e saj pa asnj\u00eb z\u00eb.<\/p>\n<p><\/p>\n<p>Por gjith\u00e7ka ndryshon, n\u00ebse gjeneratorit i jepet urdhri p\u00ebr t\u00eb luajtur tinguj, ai fillon t\u00eb gjeneroj\u00eb ndjesi akustike dhe i z\u00ebvend\u00ebson ato n\u00eb blloqet hyr\u00ebse dhe i vendos blloqet e ndryshuara n\u00eb dalje. Karta e z\u00ebrit fillon t\u00eb luaj\u00eb tinguj. M\u00eb posht\u00eb \u00ebsht\u00eb nj\u00eb program q\u00eb realizon skem\u00ebn e 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 mediastream-it, krijohet tre filtrues: <em>voidsource, dtmfgen, snd_card_write<\/em>. Krijohet nj\u00eb burim i sinjalit takt.<\/p>\n<p><\/p>\n<p>Pastaj, duhet t\u00eb kryhet lidhja e filtruesve sipas skem\u00ebs ton\u00eb, dhe burimi takt duhet t\u00eb lidhet i fundit, sepse pas k\u00ebsaj do t\u00eb filloj\u00eb menj\u00ebher\u00eb funksionimi i skem\u00ebs. N\u00ebse lidhet burimi takt me nj\u00eb skem\u00eb t\u00eb pap\u00ebrfunduar, ndodhi q\u00eb mediastream-i t\u00eb mbyllet papritur, n\u00ebse zbulon n\u00eb zinxhir t\u00eb pakt\u00ebn nj\u00eb filtrues q\u00eb ka t\u00eb gjitha hyrjet ose t\u00eb gjitha daljet \"n\u00eb aj\u00ebr\" (nuk jan\u00eb lidhur). <\/p>\n<p><\/p>\n<p>Lidhja e filtruesve 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 te filtruesi-burim, argumenti i dyt\u00eb \u2014 numri i daljes s\u00eb burimit (vini re se hyrjet dhe daljet num\u00ebrohen q\u00eb nga zero). Argumenti i tret\u00eb \u00ebsht\u00eb nj\u00eb tregues te filtruesi-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 (do ta quajm\u00eb thjesht Tikeri) lidhet i fundit. Pas k\u00ebsaj, plani yn\u00eb z\u00ebdh\u00ebn\u00ebs fillon pun\u00ebn, por n\u00eb dinamik\u00ebn e kompjuterit nuk d\u00ebgjohet asgj\u00eb \u2013 gjeneratori i z\u00ebrit \u00ebsht\u00eb i fikur dhe thjesht kalon blloqet e t\u00eb dh\u00ebnave me heshtje. P\u00ebr t\u00eb nisur gjenerimin e sinjalit tonal, \u00ebsht\u00eb e nevojshme t\u00eb ekzekutohet metoda e filtrit t\u00eb gjeneratorit.<\/p>\n<p><\/p>\n<p>Ne do t\u00eb gjenerojm\u00eb nj\u00eb sinjal dy-tonal (DTMF) q\u00eb korrespondon me shtypjen e butonit \"1\" n\u00eb telefon. P\u00ebr k\u00ebt\u00eb, ne 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 korrespondon me sinjalin q\u00eb do t\u00eb luhet.<\/p>\n<p><\/p>\n<p>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 t\u00eb nisni:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ .\/mstest2<\/code><\/pre>\n<p><\/p>\n<p>Pas nisjes s\u00eb programit, do d\u00ebgjoni n\u00eb dinamik\u00ebn e kompjuterit nj\u00eb sinjal t\u00eb shkurt\u00ebr z\u00ebri q\u00eb p\u00ebrb\u00ebhet nga dy ton\u00eb.<\/p>\n<p><\/p>\n<p>Krijuam dhe vendos\u00ebm n\u00eb pun\u00eb skem\u00ebn ton\u00eb t\u00eb par\u00eb akustike. E pam\u00eb se si t\u00eb krijojm\u00eb instanca filtrash, si t\u2019i lidhim dhe si t\u00eb thirrim metodat e tyre. Pas suksesit t\u00eb par\u00eb, megjithat\u00eb na duhet t\u00eb kushtojm\u00eb v\u00ebmendje faktit se programi yn\u00eb nuk \u00e7liron memorie t\u00eb alokuar para p\u00ebrfundimit. N\u00eb pjes\u00ebn tjet\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495780\/\">artikullin<\/a><\/noindex> ne do t\u00eb m\u00ebsojm\u00eb si 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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\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\udd47T\u00eb njohim motorin 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}]}}