{"id":301606,"date":"2020-04-09T21:00:17","date_gmt":"2020-04-09T21:00:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=301606"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=301606","title":{"rendered":"\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 7"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/496490\/\">\n<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 <a href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\" rel=\"nofollow\">\u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"ispolzuem-tshark-dlya-analiza-rtp-paketov\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c TShark \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/h2>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pq\/xs\/bz\/pqxsbzcpb1rvuitimuzbzmax3d4.png\" alt=\"\u0412\u0438\u0434 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e RTP-\u043f\u0430\u043a\u0435\u0442\u0430\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/496328\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u0445\u0435\u043c\u0443 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RTP-\u043f\u043e\u0442\u043e\u043a\u0430. <\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RTP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043d\u0430\u0448\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c RTP-\u043f\u043e\u0442\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430. <\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043c \u0431\u043e\u043b\u0435\u0435 \u044f\u0441\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 RTP, \u0430 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430 \u043f\u0440\u0438\u0435\u043c, \u043c\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0448 \u0444\u0430\u0439\u043b mstest6.c \u043d\u0430 \u0434\u0432\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430, \u043e\u0431\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438 \u0442\u043e\u0442 \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u044b \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0432 \u0442\u0440\u0435\u0442\u0438\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u043e\u0432\u0435\u043c <em>mstest_common.c<\/em>, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b include:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/* \u0424\u0430\u0439\u043b mstest_common.c \u041e\u0431\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430. *\/ #include &lt;mediastreamer2\/msfilter.h&gt; #include &lt;mediastreamer2\/msticker.h&gt; #include &lt;mediastreamer2\/msrtp.h&gt; #include &lt;ortp\/rtpsession.h&gt; #include &lt;ortp\/payloadtype.h&gt;  define PCMU 0  \/*---------------------------------------------------------*\/ \/* \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a. *\/ void register_payloads(void) {    \/* \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0438\u043f\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439. \u041f\u043e\u0437\u0434\u043d\u0435\u0435, \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443    \u0432\u0437\u044f\u0442\u043e\u043c\u0443       \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f    \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b       \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430. *\/   rtp_profile_set_payload (&amp;av_profile, PCMU, &amp;payload_type_pcm8000); }  \/*---------------------------------------------------------*\/ \/* \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 create_duplex_rtpsession() \u0432 audiostream.c   \u043c\u0435\u0434\u0438\u0430\u0441\u0442\u0440\u0438\u043c\u0435\u0440\u04302. *\/  static RtpSession *create_rtpsession (int loc_rtp_port, int loc_rtcp_port,  bool_t ipv6, RtpSessionMode mode) {     RtpSession *rtpr;  rtpr = rtp_session_new ((int) mode);     rtp_session_set_scheduling_mode (rtpr, 0);     rtp_session_set_blocking_mode (rtpr, 0);   rtp_session_enable_adaptive_jitter_compensation (rtpr, TRUE);   rtp_session_set_symmetric_rtp (rtpr, TRUE);    rtp_session_set_local_addr (rtpr, ipv6 ? &quot;::&quot; : &quot;0.0.0.0&quot;, loc_rtp_port,  loc_rtcp_port);    rtp_session_signal_connect (rtpr, &quot;timestamp_jump&quot;,  (RtpCallback) rtp_session_resync, 0);   rtp_session_signal_connect (rtpr, &quot;ssrc_changed&quot;,  (RtpCallback) rtp_session_resync, 0);   rtp_session_set_ssrc_changed_threshold (rtpr, 0);   rtp_session_set_send_payload_type(rtpr, PCMU);    \/* \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c RTCP-\u0441\u0435\u0441\u0441\u0438\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448 \u043f\u0443\u043b\u044c\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c    \u0435\u0451. *\/    rtp_session_enable_rtcp (rtpr, FALSE);  return rtpr; } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0444\u0430\u0439\u043b \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/* \u0424\u0430\u0439\u043b mstest6.c \u0418\u043c\u0438\u0442\u0430\u0442\u043e\u0440 \u043f\u0443\u043b\u044c\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430). *\/ #include &lt;mediastreamer2\/dtmfgen.h&gt; #include &lt;mediastreamer2\/msrtp.h&gt; #include &quot;mstest_common.c&quot;  \/*----------------------------------------------------------*\/ int main() {    ms_init();  \/* \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. *\/   MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);    MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440 \u043a\u043e\u0434\u0435\u0440\u0430. *\/   MSFilter *encoder = ms_filter_create_encoder(&quot;PCMU&quot;);  \/* \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0438\u043f\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. *\/   register_payloads();  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c RTP-\u0441\u0435\u0441\u0441\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430. *\/   RtpSession *tx_rtp_session = create_rtpsession (8010, 8011, FALSE, RTP_SESSION_SENDONLY);    rtp_session_set_remote_addr_and_port(tx_rtp_session,&quot;127.0.0.1&quot;, 7010, 7011);   rtp_session_set_send_payload_type(tx_rtp_session, PCMU);    MSFilter *rtpsend = ms_filter_new(MS_RTP_SEND_ID);   ms_filter_call_method(rtpsend, MS_RTP_SEND_SET_SESSION, tx_rtp_session);  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0430\u043a\u0442\u043e\u0432 - \u0442\u0438\u043a\u0435\u0440. *\/   MSTicker *ticker_tx = ms_ticker_new();  \/* \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430. *\/   ms_filter_link(voidsource, 0, dtmfgen, 0);    ms_filter_link(dtmfgen, 0, encoder, 0);  ms_filter_link(encoder, 0, rtpsend, 0);  \/* \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0430\u043a\u0442\u043e\u0432. *\/   ms_ticker_attach(ticker_tx, voidsource);  \/* \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. *\/   MSDtmfGenCustomTone dtmf_cfg;   dtmf_cfg.tone_name[0] = 0;   dtmf_cfg.duration = 1000;   dtmf_cfg.frequencies[0] = 440;  \/* \u0411\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0442\u043e\u043d, \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u043e\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0432 0. *\/    dtmf_cfg.frequencies[1] = 0;   dtmf_cfg.amplitude = 1.0;   dtmf_cfg.interval = 0.;    dtmf_cfg.repeat_count = 0.;  \/* \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0446\u0438\u043a\u043b \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448. \u0412\u0432\u043e\u0434 \u043d\u0443\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 * \u0446\u0438\u043a\u043b \u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. *\/    char key='9';   printf(&quot;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0437\u0430\u0442\u0435\u043c \u0432\u0432\u043e\u0434.\\n&quot;   &quot;\u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0432\u0435\u0434\u0438\u0442\u0435 0.\\n&quot;);   while(key != '0')   {  key = getchar();     if ((key &gt;= 49) &amp;&amp; (key &lt;= 54))     {       printf(&quot;\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430: %c\\n&quot;, key);       \/* \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441        * \u043a\u043e\u0434\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438. *\/       dtmf_cfg.frequencies[0] = 440 + 100*(key-49);        \/* \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 c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439. *\/       ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM,      (void*)&amp;dtmf_cfg);     }    \/* \u0423\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0435\u0434 \u0432 \u0441\u043f\u044f\u0447\u043a\u0443 \u043d\u0430 20\u043c\u0441, \u0447\u0442\u043e\u0431\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0440\u0435\u0434\u044b     * \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443. *\/    ms_usleep(20000);   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/* \u0424\u0430\u0439\u043b mstest7.c \u0418\u043c\u0438\u0442\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430. *\/ include &lt;mediastreamer2\/mssndcard.h&gt; include &lt;mediastreamer2\/mstonedetector.h&gt; include &lt;mediastreamer2\/msrtp.h&gt;  \/* \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438  \u043c\u0435\u0434\u0438\u0430\u0441\u0442\u0440\u0438\u043c\u0435\u0440\u0430.*\/ include &lt;mediastreamer2\/mseventqueue.h&gt; \/* \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043e\u0431\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. *\/ include &quot;mstest_common.c&quot;  \/* \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d   \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438. *\/ static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,MSToneDetectorEvent *ev) {   printf(&quot;\u041f\u0440\u0438\u043d\u044f\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430: %s\\n&quot;, ev-&gt;tone_name); }  \/*----------------------------------------------------------*\/ int main() {   ms_init();  \/* \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. *\/    MSSndCard *card_playback =  ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());   MSFilter *snd_card_write = ms_snd_card_create_writer(card_playback);   MSFilter *detector = ms_filter_new(MS_TONE_DETECTOR_ID);  \/* \u041e\u0447\u0438\u0449\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0442\u043e\u043d\u043e\u0432, \u043e\u043d \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 * \u043e\u0441\u043e\u0431\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0442\u044b \u0440\u0430\u0437\u044b\u0441\u043a\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432.*\/   ms_filter_call_method(detector, MS_TONE_DETECTOR_CLEAR_SCANS, 0);  \/* \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430. *\/   ms_filter_set_notify_callback(detector,  (MSFilterNotifyFunc)tone_detected_cb, NULL);  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0443 * \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0442\u043e\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c: \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u043c\u044f * \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0432 \u0433\u0435\u0440\u0446\u0430\u0445, \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, * \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e 0,775\u0412. *\/   MSToneDetectorDef scan[6]=   {        {&quot;V+&quot;,440, 100, 0.1}, \/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c&quot;. *\/     {&quot;V-&quot;,540, 100, 0.1}, \/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c&quot;. *\/     {&quot;C+&quot;,640, 100, 0.1}, \/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u043d\u0430\u043b\u0430&quot;. *\/     {&quot;C-&quot;,740, 100, 0.1}, \/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u043d\u0430\u043b\u0430&quot;. *\/     {&quot;ON&quot;,840, 100, 0.1}, \/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440&quot;. *\/     {&quot;OFF&quot;, 940, 100, 0.1}\/* \u041a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440&quot;. *\/   };  \/* \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u043c &quot;\u043f\u0440\u0438\u043c\u0435\u0442\u044b&quot; \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0442\u043e\u043d\u043e\u0432. *\/   int i;   for (i = 0; i &lt; 6; i++)   {     ms_filter_call_method(detector, MS_TONE_DETECTOR_ADD_SCAN,    &amp;scan[i]);   }  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 *\/   MSFilter *decoder=ms_filter_create_decoder(&quot;PCMU&quot;);  \/* \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0438\u043f\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. *\/   register_payloads();  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c RTP-\u0441\u0435\u0441\u0441\u0438\u044e \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430. *\/   MSFilter *rtprecv = ms_filter_new(MS_RTP_RECV_ID);   RtpSession *rx_rtp_session = create_rtpsession (7010, 7011, FALSE, RTP_SESSION_RECVONLY);   ms_filter_call_method(rtprecv, MS_RTP_RECV_SET_SESSION, rx_rtp_session);  \/* \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0430\u043a\u0442\u043e\u0432 - \u0442\u0438\u043a\u0435\u0440. *\/   MSTicker *ticker_rx = ms_ticker_new();  \/* \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430. *\/   ms_filter_link(rtprecv, 0, decoder, 0);   ms_filter_link(decoder, 0, detector, 0);   ms_filter_link(detector, 0, snd_card_write, 0);  \/* \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0430\u043a\u0442\u043e\u0432. *\/   ms_ticker_attach(ticker_rx, rtprecv);   char key='9';   printf( &quot;\u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0432\u0435\u0434\u0438\u0442\u0435 0.\\n&quot;);   while(key != '0')   {     key = getchar();    \/* \u0423\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0435\u0434 \u0432 \u0441\u043f\u044f\u0447\u043a\u0443 \u043d\u0430 20\u043c\u0441, \u0447\u0442\u043e\u0431\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0440\u0435\u0434\u044b    * \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443. *\/    ms_usleep(20000);   } } <\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a, \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. \u0414\u0430\u043b\u0435\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0432\u043e\u0434 \u0447\u0438\u0441\u0435\u043b \u043e\u0442 1 \u0434\u043e 6 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430, \u0430 \u043e\u0442\u043a\u043b\u0438\u043a \u043d\u0430 \u043d\u0438\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430. \u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043d\u044b. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0442\u0430\u043a, \u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u0443 \u043d\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0441\u0432\u044f\u0437\u044c \u2014 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043e\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443. <\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u0444\u0438\u043a\u0430, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Wireshrk \u2014 \u043e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f TShark. \u042f \u0432\u044b\u0431\u0440\u0430\u043b TShark \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439. \u0421 Wireshark \u043c\u043d\u0435 \u0431\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043c\u043e\u0440\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0442\u044c \u0441 \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Wireshark.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u043c\u0435\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Wireshark, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u041d\u043e \u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0432\u0430\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0441\u0432\u043e\u0438\u0442\u044c TShark, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0430\u043c \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 VoIP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e .<\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c TShark \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo apt-get install tshark<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">tshark --version<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u0448\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u0445\u043e\u0434\u044f\u0442 \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043a\u0430\u0437\u0430\u0442\u044c tshark \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <em>loopback<\/em> (\u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u0435\u0442\u043b\u044f), \u043f\u0435\u0440\u0435\u0434\u0430\u0432 TShark \u043e\u043f\u0446\u0438\u044e <em>-i lo<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo tshark -i lo<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0447\u043d\u0443\u0442 \u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u043f\u0430\u043a\u0435\u0442\u0430\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043d\u0430\u0448\u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c (\u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0436\u0438\u043c\u0430\u043b\u0438 \u043c\u044b \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u043f\u0443\u043b\u044c\u0442\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442). \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0442\u043b\u0435, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043c\u0435\u0441\u044c \u043d\u0430\u0448\u0438\u0445 \u0438 \u0447\u0443\u0436\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0448\u0438\u043c \u043f\u0443\u043b\u044c\u0442\u043e\u043c, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u043f\u043e\u0440\u0442\u0430. \u041d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Ctrl-C \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u0432\u0432\u043e\u0434\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440 \u043d\u0430 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0430 \u043f\u0443\u043b\u044c\u0442 \u043a\u0430\u043a \u043f\u043e\u0440\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 (8010): <em>-f &quot;udp port 8010&quot;<\/em>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo tshark -i lo -f &quot;udp port 8010&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0432\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430 (\u043f\u0435\u0440\u0432\u044b\u0435 10 \u0441\u0442\u0440\u043e\u043a): <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\"> 1 0.000000000    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172   2 0.020059705    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172  3 0.040044409    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172   4 0.060057104    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172  5 0.080082311    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172    6 0.100597153    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172   7 0.120122668    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172  8 0.140204789    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172  9 0.160719008    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172 10 0.180673685    127.0.0.1 \u2192 127.0.0.1    UDP 214 8010 \u2192 7010 Len=172<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043a\u0430 \u0435\u0449\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u0447\u0435\u043d \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443, \u043c\u044b \u0443\u0436\u0435 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0438\u0441\u044c \u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0442\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u043f\u0430\u043a\u0435\u0442\u0430\u0445 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430. \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u0443\u0435\u043c \u044d\u0442\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u043a\u043e\u043b\u043e\u043d\u043e\u043a:<\/p>\n<p>  <\/p>\n<p>\u041d\u043e\u043c\u0435\u0440 \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<br \/>  \u0412\u0440\u0435\u043c\u044f \u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f.<br \/>  IP-\u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430.<br \/>  \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u0430\u043a\u0435\u0442\u0430, \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a UDP, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 RTP-\u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 UDP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432.<br \/>  \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445.<br \/>  \u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430.<br \/>  \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043e\u0442\u0441\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u043d\u0430\u0448 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 RTP-\u043f\u0430\u043a\u0435\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 172 \u0431\u0430\u0439\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a \u0443\u0442\u043a\u0430 \u0432 \u0441\u0443\u043d\u0434\u0443\u043a\u0435, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 UDP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 214 \u0431\u0430\u0439\u0442.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u044c UDP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c TShark \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043b\u044e\u0447\u0435\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo tshark -i lo -f &quot;udp port 8010&quot;  -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0431\u043e\u0433\u0430\u0442\u0438\u0442\u0441\u044f \u2014 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u043b. \u0427\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438\u0431\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c TShark \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Ctrl-C, \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 tee \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430, tee &lt;\u0438\u043c\u044f_\u0444\u0430\u0439\u043b\u0430&gt;:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo tshark -i lo -f &quot;udp port 8010&quot;  -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x | tee  log.txt<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435, \u0432\u043e\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 \u043d\u0435\u0433\u043e: <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">1 0.000000000    127.0.0.1 \u2192 127.0.0.1    RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x6B8B4567, Seq=58366, Time=355368720 Frame 1: 214 bytes on wire (1712 bits), 214 bytes captured (1712 bits) on interface 0 Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00) Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1User Datagram Protocol, Src Port: 8010, Dst Port: 7010 Real-Time Transport Protocol    [Stream setup by HEUR RT (frame 1)]         [Setup frame: 1]         [Setup Method: HEUR RT]     10.. .... = Version: RFC 1889 Version (2)     ..0. .... = Padding: False     ...0 .... = Extension: False     .... 0000 = Contributing source identifiers count: 0       0... .... = Marker: False     Payload type: ITU-T G.711 PCMU (0)     Sequence number: 58366    [Extended sequence number: 58366]     Timestamp: 355368720     Synchronization Source identifier: 0x6b8b4567 (1804289383)     Payload: ffffffffffffffffffffffffffffffffffffffffffffffff...  0000  00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00   ..............E. 0010  00 c8 3c 69 40 00 40 11 ff b9 7f 00 00 01 7f 00   ..&lt;i@.@......... 0020  00 01 1f 4a 1b 62 00 b4 fe c7 80 00 e3 fe 15 2e   ...J.b.......... 0030  7f 10 6b 8b 45 67 ff ff ff ff ff ff ff ff ff ff   ..k.Eg.......... 0040  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 0050  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 0060  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 0070  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 0080  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 0090  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 00a0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 00b0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 00c0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................ 00d0  ff ff ff ff ff ff                                  ......<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043c\u044b \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043c \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0438 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 RTP-\u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/496490\/\"> https:\/\/habr.com\/ru\/post\/496490\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/496490\/\">\n<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 <a href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\" rel=\"nofollow\">\u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"ispolzuem-tshark-dlya-analiza-rtp-paketov\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c TShark \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/h2>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pq\/xs\/bz\/pqxsbzcpb1rvuitimuzbzmax3d4.png\" alt=\"\u0412\u0438\u0434 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e RTP-\u043f\u0430\u043a\u0435\u0442\u0430\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/496328\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u0445\u0435\u043c\u0443 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RTP-\u043f\u043e\u0442\u043e\u043a\u0430. <\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RTP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043d\u0430\u0448\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c RTP-\u043f\u043e\u0442\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-301606","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301606"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301606\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}