āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻŽāĻžāĻ° āĻĨā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§
RTP āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ TShark āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§
āĻļā§āĻˇā§
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž RTP āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻĄāĻŋāĻ āĻ¸āĻāĻā§āĻ¤ āĻ¸āĻāĻā§āĻ°āĻŽāĻŖ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻā§āĻāĻŋāĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ°ā§ āĻāĻžāĻ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ RTP āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻļāĻŋāĻāĻŋāĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻ°āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻ°āĻāĻŋāĻĒāĻŋ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻāĻŦāĻ āĻā§āĻ¨āĻāĻŋ āĻā§āĻ°āĻšāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° mstest6.c āĻĢāĻžāĻāĻ˛āĻāĻŋāĻā§ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻāĻŋ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻāĻžāĻ āĻāĻ°āĻŋ; āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻ°āĻžāĻāĻŦ āĻ¯āĻž āĻāĻāĻ¯āĻŧāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻĢāĻžāĻāĻ˛ā§, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻ˛ āĻāĻ°āĻŦ mstest_common.c, āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻŦā§:
/* ФаКĐģ mstest_common.c ĐĐąŅиĐĩ ŅŅĐŊĐēŅии Đ´ĐģŅ ĐŋĐĩŅĐĩĐ´Đ°ŅŅиĐēĐ° и ĐŋŅиĐĩĐŧĐŊиĐēĐ°. */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/msrtp.h>
#include <ortp/rtpsession.h>
#include <ortp/payloadtype.h>
define PCMU 0
/*---------------------------------------------------------*/
/* ФŅĐŊĐēŅиŅ ŅĐĩĐŗиŅŅŅĐ°Ņии ŅиĐŋОв ĐŋĐžĐģĐĩСĐŊŅŅ
ĐŊĐ°ĐŗŅŅСОĐē. */
void register_payloads(void)
{
/* Đ ĐĩĐŗиŅŅŅиŅŅĐĩĐŧ ŅиĐŋŅ ĐŊĐ°ĐŗŅŅСОĐē в ŅĐ°ĐąĐģиŅĐĩ ĐŋŅĐžŅиĐģĐĩĐš. ĐОСдĐŊĐĩĐĩ, ĐŋĐž иĐŊĐ´ĐĩĐēŅŅ вСŅŅĐžĐŧŅ
иС СаĐŗĐžĐģОвĐēĐ° RTP-ĐŋĐ°ĐēĐĩŅĐ° иС ŅŅОК ŅĐ°ĐąĐģиŅŅ ĐąŅĐ´ŅŅ иСвĐģĐĩĐēĐ°ŅŅŅŅ ĐŋĐ°ŅĐ°ĐŧĐĩŅŅŅ
ĐŊĐ°ĐŗŅŅСĐēи, ĐŊĐĩОйŅ
ОдиĐŧŅĐĩ Đ´ĐģŅ Đ´ĐĩĐēОдиŅОваĐŊиŅ Đ´Đ°ĐŊĐŊŅŅ
ĐŋĐ°ĐēĐĩŅĐ°. */
rtp_profile_set_payload (&av_profile, PCMU, &payload_type_pcm8000);
}
/*---------------------------------------------------------*/
/* ĐŅĐ° ŅŅĐŊĐēŅиŅ ŅОСдаĐŊĐ° иС ŅŅĐŊĐēŅии create_duplex_rtpsession() в audiostream.c ĐŧĐĩдиаŅŅŅиĐŧĐĩŅĐ°2. */
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 ? "::" : "0.0.0.0", loc_rtp_port, loc_rtcp_port);
rtp_session_signal_connect (rtpr, "timestamp_jump", (RtpCallback) rtp_session_resync, 0);
rtp_session_signal_connect (rtpr, "ssrc_changed", (RtpCallback) rtp_session_resync, 0);
rtp_session_set_ssrc_changed_threshold (rtpr, 0);
rtp_session_set_send_payload_type(rtpr, PCMU);
/* ĐĐž ŅĐŧĐžĐģŅĐ°ĐŊиŅ вŅĐēĐģŅŅĐ°ĐĩĐŧ RTCP-ŅĐĩŅŅиŅ, ŅĐ°Đē ĐēĐ°Đē ĐŊĐ°Ņ ĐŋŅĐģŅŅ ĐŊĐĩ ĐąŅĐ´ĐĩŅ иŅĐŋĐžĐģŅСОваŅŅ
ĐĩŅ. */
rtp_session_enable_rtcp (rtpr, FALSE);
return rtpr;
}
āĻāĻāĻ¨ āĻĒā§āĻĨāĻ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻĢāĻžāĻāĻ˛:
/* ФаКĐģ mstest6.c ĐĐŧиŅĐ°ŅĐžŅ ĐŋŅĐģŅŅĐ° ŅĐŋŅавĐģĐĩĐŊиŅ (ĐŋĐĩŅĐĩĐ´Đ°ŅŅиĐēĐ°). */
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/msrtp.h>
#include "mstest_common.c"
/*----------------------------------------------------------*/
int main()
{
ms_init();
/* ХОСдаĐĩĐŧ ŅĐēСĐĩĐŧĐŋĐģŅŅŅ ŅиĐģŅŅŅОв. */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
/* ХОСдаĐĩĐŧ ŅиĐģŅŅŅ ĐēОдĐĩŅĐ°. */
MSFilter *encoder = ms_filter_create_encoder("PCMU");
/* Đ ĐĩĐŗиŅŅŅиŅŅĐĩĐŧ ŅиĐŋŅ ĐŊĐ°ĐŗŅŅСĐēи. */
register_payloads();
/* ХОСдаĐĩĐŧ RTP-ŅĐĩŅŅиŅ ĐŋĐĩŅĐĩĐ´Đ°ŅŅиĐēĐ°. */
RtpSession *tx_rtp_session = create_rtpsession (8010, 8011, FALSE, RTP_SESSION_SENDONLY);
rtp_session_set_remote_addr_and_port(tx_rtp_session,"127.0.0.1", 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);
/* ХОСдаĐĩĐŧ иŅŅĐžŅĐŊиĐē ŅĐ°ĐēŅОв - ŅиĐēĐĩŅ. */
MSTicker *ticker_tx = ms_ticker_new();
/* ĐĄĐžĐĩдиĐŊŅĐĩĐŧ ŅиĐģŅŅŅŅ ĐŋĐĩŅĐĩĐ´Đ°ŅŅиĐēĐ°. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, encoder, 0);
ms_filter_link(encoder, 0, rtpsend, 0);
/* ĐОдĐēĐģŅŅĐ°ĐĩĐŧ иŅŅĐžŅĐŊиĐē ŅĐ°ĐēŅОв. */
ms_ticker_attach(ticker_tx, voidsource);
/* ĐĐ°ŅŅŅаиваĐĩĐŧ ŅŅŅŅĐēŅŅŅŅ, ŅĐŋŅавĐģŅŅŅŅŅ вŅŅ
ОдĐŊŅĐŧ ŅиĐŗĐŊĐ°ĐģĐžĐŧ ĐŗĐĩĐŊĐĩŅĐ°ŅĐžŅĐ°. */
MSDtmfGenCustomTone dtmf_cfg;
dtmf_cfg.tone_name[0] = 0;
dtmf_cfg.duration = 1000;
dtmf_cfg.frequencies[0] = 440;
/* ĐŅĐ´ĐĩĐŧ ĐŗĐĩĐŊĐĩŅиŅОваŅŅ ОдиĐŊ ŅĐžĐŊ, ŅĐ°ŅŅĐžŅŅ вŅĐžŅĐžĐŗĐž ŅĐžĐŊĐ° ŅŅŅĐ°ĐŊОвиĐŧ в 0. */
dtmf_cfg.frequencies[1] = 0;
dtmf_cfg.amplitude = 1.0;
dtmf_cfg.interval = 0.;
dtmf_cfg.repeat_count = 0.;
/* ĐŅĐŗĐ°ĐŊиСŅĐĩĐŧ ŅиĐēĐģ ŅĐēĐ°ĐŊиŅОваĐŊиŅ ĐŊĐ°ĐļĐ°ŅŅŅ
ĐēĐģавиŅ. ĐвОд ĐŊŅĐģŅ СавĐĩŅŅĐ°ĐĩŅ
* ŅиĐēĐģ и ŅайОŅŅ ĐŋŅĐžĐŗŅĐ°ĐŧĐŧŅ. */
char key='9';
printf("ĐĐ°ĐļĐŧиŅĐĩ ĐēĐģавиŅŅ ĐēĐžĐŧĐ°ĐŊĐ´Ņ, СаŅĐĩĐŧ ввОд.n"
"ĐĐģŅ СавĐĩŅŅĐĩĐŊиŅ ĐŋŅĐžĐŗŅĐ°ĐŧĐŧŅ ввĐĩдиŅĐĩ 0.n");
while(key != '0')
{
key = getchar();
if ((key >= 49) && (key <= 54))
{
printf("ĐŅĐŋŅавĐģĐĩĐŊĐ° ĐēĐžĐŧĐ°ĐŊĐ´Đ°: %cn", key);
/* ĐŖŅŅĐ°ĐŊавĐģиваĐĩĐŧ ŅĐ°ŅŅĐžŅŅ ĐŗĐĩĐŊĐĩŅĐ°ŅĐžŅĐ° в ŅООŅвĐĩŅŅŅвии Ņ
* ĐēОдОĐŧ ĐŊĐ°ĐļĐ°ŅОК ĐēĐģавиŅи. */
dtmf_cfg.frequencies[0] = 440 + 100*(key-49);
/* ĐĐēĐģŅŅĐ°ĐĩĐŧ СвŅĐēОвОК ĐŗĐĩĐŊĐĩŅĐ°ŅĐžŅ c ОйĐŊОвĐģĐĩĐŊĐŊОК ŅĐ°ŅŅĐžŅОК. */
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM, (void*)&dtmf_cfg);
}
/* ĐŖĐēĐģĐ°Đ´ŅваĐĩĐŧ ŅŅĐĩĐ´ в ŅĐŋŅŅĐēŅ ĐŊĐ° 20ĐŧŅ, ŅŅОйŅ Đ´ŅŅĐŗиĐĩ ŅŅĐĩĐ´Ņ
* ĐŋŅиĐģĐžĐļĐĩĐŊиŅ ĐŋĐžĐģŅŅиĐģи вŅĐĩĐŧŅ ĐŊĐ° ŅайОŅŅ. */
ms_usleep(20000);
}
}
āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻˇā§, āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ° āĻĢāĻžāĻāĻ˛:
/* ФаКĐģ mstest7.c ĐĐŧиŅĐ°ŅĐžŅ ĐŋŅиĐĩĐŧĐŊиĐēĐ°. */
include <mediastreamer2/mssndcard.h>
include <mediastreamer2/mstonedetector.h>
include <mediastreamer2/msrtp.h>
/* ĐОдĐēĐģŅŅĐ°ĐĩĐŧ СаĐŗĐžĐģОвОŅĐŊŅĐš ŅĐ°ĐšĐģ Ņ ŅŅĐŊĐēŅиŅĐŧи ŅĐŋŅавĐģĐĩĐŊиŅ ŅОйŅŅиŅĐŧи ĐŧĐĩдиаŅŅŅиĐŧĐĩŅĐ°.*/
include <mediastreamer2/mseventqueue.h>
/* ĐОдĐēĐģŅŅĐ°ĐĩĐŧ ŅĐ°ĐšĐģ ОйŅиŅ
ŅŅĐŊĐēŅиК. */
include "mstest_common.c"
/* ФŅĐŊĐēŅиŅ ОйŅĐ°ŅĐŊĐžĐŗĐž вŅСОва, ĐžĐŊĐ° ĐąŅĐ´ĐĩŅ вŅСваĐŊĐ° ŅиĐģŅŅŅĐžĐŧ, ĐēĐ°Đē ŅĐžĐģŅĐēĐž ĐžĐŊ ОйĐŊĐ°ŅŅĐļиŅ ŅОвĐŋĐ°Đ´ĐĩĐŊиĐĩ Ņ
Đ°ŅĐ°ĐēŅĐĩŅиŅŅиĐē вŅ
ОдĐŊĐžĐŗĐž ŅиĐŗĐŊĐ°ĐģĐ° Ņ СадаĐŊĐŊŅĐŧи. */
static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,MSToneDetectorEvent *ev)
{
printf("ĐŅиĐŊŅŅĐ° ĐēĐžĐŧĐ°ĐŊĐ´Đ°: %sn", ev->tone_name);
}
/*----------------------------------------------------------*/
int main()
{
ms_init();
/* ХОСдаĐĩĐŧ ŅĐēСĐĩĐŧĐŋĐģŅŅŅ ŅиĐģŅŅŅОв. */
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);
/* ĐŅиŅĐ°ĐĩĐŧ ĐŧĐ°ŅŅив ĐŊĐ°Ņ
ОдŅŅиКŅŅ вĐŊŅŅŅи Đ´ĐĩŅĐĩĐēŅĐžŅĐ° ŅĐžĐŊОв, ĐžĐŊ ĐžĐŋиŅŅваĐĩŅ
* ĐžŅОйŅĐĩ ĐŋŅиĐŧĐĩŅŅ ŅаСŅŅĐēиваĐĩĐŧŅŅ
ŅиĐŗĐŊĐ°ĐģОв.*/
ms_filter_call_method(detector, MS_TONE_DETECTOR_CLEAR_SCANS, 0);
/* ĐОдĐēĐģŅŅĐ°ĐĩĐŧ Đē ŅиĐģŅŅŅŅ ŅŅĐŊĐēŅиŅ ОйŅĐ°ŅĐŊĐžĐŗĐž вŅСОва. */
ms_filter_set_notify_callback(detector, (MSFilterNotifyFunc)tone_detected_cb, NULL);
/* ХОСдаĐĩĐŧ ĐŧĐ°ŅŅив, ĐēĐ°ĐļĐ´ŅĐš ŅĐģĐĩĐŧĐĩĐŊŅ ĐēĐžŅĐžŅĐžĐŗĐž ĐžĐŋиŅŅваĐĩŅ Ņ
Đ°ŅĐ°ĐēŅĐĩŅиŅŅиĐēŅ
* ОдĐŊĐžĐŗĐž иС ŅĐžĐŊОв, ĐēĐžŅĐžŅŅĐš ŅŅĐĩĐąŅĐĩŅŅŅ ОйĐŊĐ°ŅŅĐļиваŅŅ:
ĐĸĐĩĐēŅŅОвОĐĩ иĐŧŅ
* Đ´Đ°ĐŊĐŊĐžĐŗĐž ŅĐģĐĩĐŧĐĩĐŊŅĐ°, ŅĐ°ŅŅĐžŅĐ° в ĐŗĐĩŅŅĐ°Ņ
, Đ´ĐģиŅĐĩĐģŅĐŊĐžŅŅŅ в ĐŧиĐģĐģиŅĐĩĐēŅĐŊĐ´Đ°Ņ
,
* ĐŧиĐŊиĐŧĐ°ĐģŅĐŊŅĐš ŅŅОвĐĩĐŊŅ ĐžŅĐŊĐžŅиŅĐĩĐģŅĐŊĐž 0,775Đ. */
MSToneDetectorDef scan[6]=
{
{"V+",440, 100, 0.1}, /* ĐĐžĐŧĐ°ĐŊĐ´Đ° "ĐŖвĐĩĐģиŅиŅŅ ĐŗŅĐžĐŧĐēĐžŅŅŅ". */
{"V-",540, 100, 0.1}, /* ĐĐžĐŧĐ°ĐŊĐ´Đ° "ĐŖĐŧĐĩĐŊŅŅиŅŅ ĐŗŅĐžĐŧĐēĐžŅŅŅ". */
{"C+",640, 100, 0.1}, /* ĐĐžĐŧĐ°ĐŊĐ´Đ° "ĐŖвĐĩĐģиŅиŅŅ ĐŊĐžĐŧĐĩŅ ĐēĐ°ĐŊĐ°ĐģĐ°". */
{"C-",740, 100, 0.1}, /* ĐĐžĐŧĐ°ĐŊĐ´Đ° "ĐŖĐŧĐĩĐŊŅŅиŅŅ ĐŊĐžĐŧĐĩŅ ĐēĐ°ĐŊĐ°ĐģĐ°". */
{"ON",840, 100, 0.1}, /* ĐĐžĐŧĐ°ĐŊĐ´Đ° "ĐĐēĐģŅŅиŅŅ ŅĐĩĐģĐĩвиСОŅ". */
{"OFF", 940, 100, 0.1}/* ĐĐžĐŧĐ°ĐŊĐ´Đ° "ĐŅĐēĐģŅŅиŅŅ ŅĐĩĐģĐĩвиСОŅ". */
};
/* ĐĐĩŅĐĩĐ´Đ°ĐĩĐŧ "ĐŋŅиĐŧĐĩŅŅ" ŅиĐŗĐŊĐ°ĐģОв Đ´ĐĩŅĐĩĐēŅĐžŅ ŅĐžĐŊОв. */
int i;
for (i = 0; i < 6; i++)
{
ms_filter_call_method(detector, MS_TONE_DETECTOR_ADD_SCAN, &scan[i]);
}
/* ХОСдаĐĩĐŧ ŅиĐģŅŅŅ Đ´ĐĩĐēОдĐĩŅĐ° */
MSFilter *decoder=ms_filter_create_decoder("PCMU");
/* Đ ĐĩĐŗиŅŅŅиŅŅĐĩĐŧ ŅиĐŋŅ ĐŊĐ°ĐŗŅŅСĐēи. */
register_payloads();
/* ХОСдаĐĩĐŧ RTP-ŅĐĩŅŅиŅ ĐŋŅиĐĩĐŧĐŊиĐēĐ°. */
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);
/* ХОСдаĐĩĐŧ иŅŅĐžŅĐŊиĐē ŅĐ°ĐēŅОв - ŅиĐēĐĩŅ. */
MSTicker *ticker_rx = ms_ticker_new();
/* ĐĄĐžĐĩдиĐŊŅĐĩĐŧ ŅиĐģŅŅŅŅ ĐŋŅиŅĐŧĐŊиĐēĐ°. */
ms_filter_link(rtprecv, 0, decoder, 0);
ms_filter_link(decoder, 0, detector, 0);
ms_filter_link(detector, 0, snd_card_write, 0);
/* ĐОдĐēĐģŅŅĐ°ĐĩĐŧ иŅŅĐžŅĐŊиĐē ŅĐ°ĐēŅОв. */
ms_ticker_attach(ticker_rx, rtprecv);
char key='9';
printf( "ĐĐģŅ СавĐĩŅŅĐĩĐŊиŅ ĐŋŅĐžĐŗŅĐ°ĐŧĐŧŅ ввĐĩдиŅĐĩ 0.n");
while(key != '0')
{
key = getchar();
/* ĐŖĐēĐģĐ°Đ´ŅваĐĩĐŧ ŅŅĐĩĐ´ в ŅĐŋŅŅĐēŅ ĐŊĐ° 20ĐŧŅ, ŅŅОйŅ Đ´ŅŅĐŗиĐĩ ŅŅĐĩĐ´Ņ * ĐŋŅиĐģĐžĐļĐĩĐŊиŅ ĐŋĐžĐģŅŅиĐģи вŅĐĩĐŧŅ ĐŊĐ° ŅайОŅŅ. */
ms_usleep(20000);
}
}
āĻāĻŽāĻ°āĻž āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ° āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋāĻā§ āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻ˛āĻā§āĻ āĻāĻ°āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻāĻŋ āĻāĻā§āĻ° āĻŽāĻ¤ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ - āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻ˛ā§ 1 āĻĨā§āĻā§ 6 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻāĻā§āĻ¯āĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¸ā§āĻĒā§āĻāĻžāĻ°ā§ āĻā§āĻ¨ āĻļā§āĻ°āĻŦāĻŖāĻ¯ā§āĻā§āĻ¯ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¤āĻžāĻ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻāĻŋ - āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻĨā§āĻā§ āĻ°āĻŋāĻ¸āĻŋāĻāĻžāĻ°ā§ āĻāĻ°āĻāĻŋāĻĒāĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻ¸āĻāĻā§āĻ°āĻŽāĻŖ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻ¨ āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ; āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻŽā§āĻāĻžāĻ° āĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻļāĻžāĻ°ā§āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻ¨āĻ¸ā§āĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦ - āĻāĻāĻŋāĻā§ TShark āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ¸āĻšāĻāĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ āĻāĻ°āĻ āĻāĻ˛ā§āĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ TShark āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ Wireshark-āĻāĻ° āĻ¸āĻžāĻĨā§, āĻāĻŽāĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĻā§āĻ°ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§, āĻ¯āĻž Wireshark-āĻāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ˛ā§ āĻĻā§āĻ°ā§āĻ¤ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ Wireshark āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ¤āĻŦā§ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ, āĻāĻŽāĻŋ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°āĻāĻŋ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ TShark āĻ āĻĻāĻā§āĻˇāĻ¤āĻž āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°ā§āĻ¨, āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŋāĻāĻāĻāĻĒāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻā§āĻ¯āĻžāĻĒāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻāĻ°āĻŦā§āĨ¤
āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ TShark āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨:
$ sudo apt-get install tshark
āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤āĻāĻžāĻŦā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ:
$ tshark --version
āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻāĻ¤ā§āĻ¤āĻ° āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻāĻ°āĻ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻŦāĨ¤
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻāĻĒāĻžāĻ¤āĻ¤ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž tshark āĻā§ āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻžāĻ¤ā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĨā§āĻā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻā§āĻ¯āĻžāĻĒāĻāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ˛ā§āĻĒāĻŦā§āĻ¯āĻžāĻ (āĻ˛ā§āĻĒāĻŦā§āĻ¯āĻžāĻ) TShark āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°ā§ -āĻāĻ˛ā§:
$ sudo tshark -i lo
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°ā§āĻ°āĻŋāĻ¤ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻĸāĻžāĻ˛āĻž āĻļā§āĻ°ā§ āĻšāĻŦā§ (āĻāĻŽāĻ°āĻž āĻ°āĻŋāĻŽā§āĻ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ā§ āĻŦā§āĻ¤āĻžāĻŽ āĻāĻŋāĻĒā§āĻ¨ āĻāĻŋ āĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻļā§āĻˇā§ āĻā§āĻ°āĻŽāĻžāĻāĻ¤)āĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻŋāĻā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻā§ āĻ¯āĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ˛ā§āĻĒā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ, āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ˛ā§āĻā§āĻ° āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻŽāĻŋāĻļā§āĻ°āĻŖ āĻĒāĻžāĻŦāĨ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ°āĻŋāĻŽā§āĻ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°ā§āĻ°āĻŋāĻ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻŦāĨ¤ Ctrl-C āĻāĻŋāĻĒā§ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻŋ āĻ¯āĻž āĻ°āĻŋāĻŽā§āĻ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻ¤āĻžāĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĒā§āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ (8010): -f "udp āĻĒā§āĻ°ā§āĻ 8010". āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻŦā§:
$ sudo tshark -i lo -f "udp port 8010"
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻāĻāĻĒā§āĻ āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§ (āĻĒā§āĻ°āĻĨāĻŽ 10 āĻ˛āĻžāĻāĻ¨):
1 0.000000000 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
2 0.020059705 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
3 0.040044409 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
4 0.060057104 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
5 0.080082311 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
6 0.100597153 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
7 0.120122668 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
8 0.140204789 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
9 0.160719008 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
10 0.180673685 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
āĻāĻĒāĻžāĻ¤āĻ¤, āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¨āĻ¯āĻŧ, āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻžāĻ¯ā§āĻā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¯āĻ¤ā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻāĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻāĻ˛āĻžāĻŽ āĻ¸āĻāĻā§āĻ¯āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻĒāĻžāĻ ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ:
āĻāĻā§āĻ¨ā§āĻ āĻ¨āĻŽā§āĻŦāĻ°āĨ¤
āĻāĻ° āĻ¸āĻāĻāĻāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻā§āĻ¸ IP āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¤āĻŦā§āĻ¯ IP āĻ āĻŋāĻāĻžāĻ¨āĻžāĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ UDP āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻžāĻ°āĻŖ RTP āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ UDP āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻĒā§āĻ˛ā§āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤
āĻŦāĻžāĻāĻā§ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻāĻžāĻ°āĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻā§āĻ¸ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻŦāĻ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ°āĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ˛ā§āĻĄā§āĻ° āĻāĻāĻžāĻ°, āĻāĻāĻžāĻ¨ āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°ā§ āĻāĻ¸āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻāĻžāĻ°āĻāĻŋ 172 āĻŦāĻžāĻāĻ āĻāĻāĻžāĻ°ā§āĻ° RTP āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§, āĻ¯āĻž āĻŦā§āĻā§āĻ° āĻšāĻžāĻāĻ¸ā§āĻ° āĻŽāĻ¤ā§, 214 āĻŦāĻžāĻāĻ āĻāĻāĻžāĻ°ā§āĻ° UDP āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤
āĻāĻāĻ¨ UDP āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ¤āĻžāĻāĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¸ā§āĻā§, āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻā§āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ¸ā§āĻ āĻ¸āĻš TShark āĻāĻžāĻ˛ā§ āĻāĻ°āĻŦ:
sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻāĻāĻĒā§āĻ āĻ¸āĻŽā§āĻĻā§āĻ§ āĻšāĻŦā§ - āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ¯āĻžāĻ° āĻāĻžāĻ°āĻŖā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻā§āĻ¨ā§āĻā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻāĻāĻĒā§āĻāĻāĻŋ āĻāĻ°āĻ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻĻā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻšāĻ¯āĻŧ Ctrl-C āĻāĻŋāĻĒā§ TShark āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ āĻĨāĻŦāĻž āĻ°āĻžāĻ¨ āĻāĻŽāĻžāĻ¨ā§āĻĄā§ āĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°ā§ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¨āĻžāĻŽ, tee <filename> āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§ āĻĢāĻžāĻāĻ˛ā§ āĻāĻ° āĻāĻāĻāĻĒā§āĻ āĻ¨āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
$ sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x | tee log.txt
āĻāĻāĻ¨ āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻāĻŽāĻ°āĻž āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻāĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ, āĻāĻāĻžāĻ¨ā§ āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻ°āĻ¯āĻŧā§āĻā§:
1 0.000000000 127.0.0.1 â 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 ..<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 ......
āĻāĻŽāĻ°āĻž āĻāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻĨāĻžāĻāĻž āĻ¤āĻĨā§āĻ¯ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻ¤ā§āĻ¸āĻ°ā§āĻ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻ āĻ¨āĻŋāĻŦāĻžāĻ°ā§āĻ¯āĻāĻžāĻŦā§ RTP āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻāĻžāĻ āĻžāĻŽā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com