เจฒเฉเจ เจธเจฎเฉฑเจเจฐเฉ เจฎเฉเจฐเฉ เจคเฉเจ เจฒเจ เจเจ เจนเฉ
RTP เจชเฉเจเฉเจเจพเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจ เจฒเจ TShark เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ
เจชเจฟเจเจฒเฉ เจตเจฟเฉฑเจ
เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ RTP เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจกเฉเจ เจธเจฟเจเจจเจฒ เจเฉเจฐเจพเจเจธเจฎเจฟเจธเจผเจจ เจฆเจพ เจ เจงเจฟเจเจจ เจเจฐเจจเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฆเฉ เจนเจพเจเฅค เจชเจนเจฟเจฒเจพเจ, เจเจ เจเจชเจฃเฉ เจเฉเจธเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจเฉฑเจ เจเฉเจฐเจพเจเจธเจฎเฉเจเจฐ เจ เจคเฉ เจเฉฑเจ เจฐเจฟเจธเฉเจตเจฐ เจตเจฟเฉฑเจ เจตเฉฐเจกเฉเจ เจ เจคเฉ เจธเจฟเฉฑเจเฉเจ เจเจฟ เจเฉฑเจ เจจเฉเฉฑเจเจตเจฐเจ เจเฉเจฐเฉเจซเจฟเจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ 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 เจจเฉเฉฐ เจเฉเจฃเจฟเจเฅค เจตเจพเจเจฐเจธเจผเจพเจฐเจ เจฆเฉ เจจเจพเจฒ, เจฎเฉเจจเฉเฉฐ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจเจธ เจฆเฉ เจเฉฑเจ เจธเจฎเฉเฉฐเจฆเจฐ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉเจเจเฉ, เจเฉ เจตเจพเจเจฐเจธเจผเจพเจฐเจ เจฆเจพ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจเจพเจฐเฉ เจนเฉเจฃ 'เจคเฉ เจเจฒเจฆเฉ เจชเฉเจฐเจพเจฃเฉ เจนเฉ เจธเจเจฆเฉ เจนเฉเฅค
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจพเจฃเจฆเฉ เจนเฉ เจเจฟ เจตเจพเจเจฐเจธเจผเจพเจฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจตเฉเจ เจเจฐเจจเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจธเจพเจกเฉเจเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเจพ เจ เจงเจฟเจเจจ เจเจฐเจจ เจฒเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจชเจฐ เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ เจตเฉ, เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ TShark เจตเจฟเฉฑเจ เจฎเฉเจนเจพเจฐเจค เจนเจพเจธเจฒ เจเจฐเจจ เจฆเฉ เจธเจฟเจซเจผเจพเจฐเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ, เจเจฟเจเจเจเจฟ เจเจน เจคเฉเจนเจพเจกเฉเจเจ VoIP เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฆเฉ เจธเจตเฉเจเจพเจฒเจค เจเจพเจเจ เจเจฐเจจ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจฐเจฟเจฎเฉเจ เจเฉเจชเจเจฐ เจเจฐเจจ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจกเฉ เจฎเจฆเจฆ เจเจฐเฉเจเจพเฅค
เจเจฎเจพเจเจก เจจเจพเจฒ TShark เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ:
$ sudo apt-get install tshark
เจฐเจตเจพเจเจคเฉ เจคเฉเจฐ 'เจคเฉ, เจ เจธเฉเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจธเฉฐเจธเจเจฐเจฃ เจฒเจ เจชเฉเฉฑเจ เจเฉ เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจจเจคเฉเจเฉ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ:
$ tshark --version
เจเฉเจเจฐ เจขเฉเจเจตเจพเจ เจเจตเจพเจฌ เจฎเจฟเจฒเจฆเจพ เจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจ เฉฑเจเฉ เจตเจงเจฆเฉ เจนเจพเจเฅค
เจเจฟเจเจเจเจฟ เจธเจพเจกเฉ เจชเฉเจเฉเจ เจธเจฟเจฐเจซเจผ เจเฉฐเจชเจฟเจเจเจฐ เจฆเฉ เจ เฉฐเจฆเจฐ เจนเฉ เจเจพเจเจฆเฉ เจนเจจ, เจ เจธเฉเจ เจเจธเจผเจพเจฐเจ เจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจ เจเจฟเจนเฉ เจชเฉเจเฉเจ เจฆเจฟเจเจพเจเจฃ เจฒเจ เจเจนเจฟ เจธเจเจฆเฉ เจนเจพเจเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฐเจเจฐเจซเฉเจธ เจคเฉเจ เจชเฉเจเฉเจ เจเฉเจชเจเจฐ เจฆเฉ เจเฉเจฃ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจฒเฉเจชเจฌเฉเจ (เจฒเฉเจชเจฌเฉเจ) TShark เจตเจฟเจเจฒเจช เจจเฉเฉฐ เจชเจพเจธ เจเจฐเจเฉ -ilo:
$ sudo tshark -i lo
เจธเจพเจกเฉ เจเฉเจฐเจพเจเจธเจฎเฉเจเจฐ เจฆเฉเจเจฐเจพ เจญเฉเจเฉ เจเจ เจชเฉเจเฉเจเจพเจ เจฌเจพเจฐเฉ เจธเฉฐเจฆเฉเจธเจผ เจคเฉเจฐเฉฐเจค เจเฉฐเจธเฉเจฒ เจตเจฟเฉฑเจ เจเจเจฃเฉ เจธเจผเฉเจฐเฉ เจนเฉ เจเจพเจฃเจเฉ (เจฒเจเจพเจคเจพเจฐ, เจเจธ เจเฉฑเจฒ เจฆเฉ เจชเจฐเจตเจพเจน เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจเจฟ เจ เจธเฉเจ เจฐเจฟเจฎเฉเจ เจเฉฐเจเจฐเฉเจฒ 'เจคเฉ เจฌเจเจจ เจฆเจฌเจพเจเจ เจนเฉ เจเจพเจ เจจเจนเฉเจ)เฅค เจธเจผเจพเจเจฆ เจคเฉเจนเจพเจกเฉ เจเฉฐเจชเจฟเจเจเจฐ 'เจคเฉ เจ เจเจฟเจนเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจนเจจ เจเฉ เจธเจฅเจพเจจเจ เจฒเฉเจช เจฐเจพเจนเฉเจ เจชเฉเจเฉเจ เจตเฉ เจญเฉเจเจฆเฉ เจนเจจ, เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเจชเจฃเฉ เจ เจคเฉ เจนเฉเจฐ เจฒเฉเจเจพเจ เจฆเฉ เจชเฉเจเฉเจเจพเจ เจฆเจพ เจฎเจฟเจธเจผเจฐเจฃ เจชเฉเจฐเจพเจชเจค เจเจฐเจพเจเจเฉเฅค เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจฟ เจธเฉเจเฉ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจธเจฟเจฐเจซเจผ เจธเจพเจกเฉ เจฐเจฟเจฎเฉเจ เจเฉฐเจเจฐเฉเจฒ เจฆเฉเจเจฐเจพ เจญเฉเจเฉ เจเจ เจชเฉเจเฉเจ เจตเฉเจเจฆเฉ เจนเจพเจ, เจ เจธเฉเจ เจชเฉเจฐเจ เจจเฉฐเจฌเจฐ เจฆเฉเจเจฐเจพ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจเฉเฉเจพเจเจเฉเฅค Ctrl-C เจฆเจฌเจพเจเจฃ เจจเจพเจฒ เจ เจธเฉเจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจจเฉเฉฐ เจฐเฉเจเจฆเฉ เจนเจพเจ เจ เจคเฉ เจชเฉเจฐเจ เจจเฉฐเจฌเจฐ เจฒเจ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจฆเจพเจเจฒ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟเจธ เจจเฉเฉฐ เจฐเจฟเจฎเฉเจ เจเฉฐเจเจฐเฉเจฒ เจเจธเจฆเฉ เจชเฉเจฐเจธเจพเจฐเจฃ (8010) เจฒเจ เจฎเฉฐเจเจผเจฟเจฒ เจชเฉเจฐเจ เจตเจเฉเจ เจตเจฐเจคเจฆเจพ เจนเฉ: -f "เจฏเฉเจกเฉเจชเฉ เจชเฉเจฐเจ 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 เจจเฉเฉฐ เจฐเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเจพเจ เจฐเจจ เจเจฎเจพเจเจก เจตเจฟเฉฑเจ เจเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจเฉเฉ เจเฉ, เจซเจพเจเจฒ เจฆเจพ เจจเจพเจฎ, เจเฉ <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