แกแขแแขแแแก แแแกแแแ แแฆแแแฃแแแ แฉแแแ
TSark-แแก แแแแแงแแแแแ RTP แแแแแขแแแแก แแแกแแแแแแแแแแแแ
แฒแแแแก
แแ แกแขแแขแแแจแ แฉแแแ แแแแ แซแแแแแ แแฃแแแ แกแแแแแแแก แแแแแชแแแแก แจแแกแฌแแแแแก 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-แแแ แฃแแแ แจแแแแขแแแแ แแแแ แแแ แแ แแแแแ แแแกแฃแฎแ แฃแแแ แแแแแฉแแแแก แแแแฆแแแแก แแแแกแแแจแ. แขแแแแแ แฃแแแ แแกแแแแแก แแแแแแแแจแ. แแฃ แงแแแแแคแแ แ แแกแแ, แแแจแแ แฉแแแ แแแแแแงแแ แแ แแแแจแแ แ แแแแฆแแแกแ แแ แแแแแแชแแแก แจแแ แแก - แฎแแแแ RTP แแแแแขแแแแก แฃแฌแงแแแขแ แแแแแชแแแ แแแแแแชแแแแแแ แแแแฆแแแแแแ.
แแฎแแ แแ แแ แแแแแแกแขแแแแ แแ แขแ แแคแแแแก แแแแแแแแขแแ แ; แแแแกแแแแแก แฉแแแ แแแแแแแกแขแแแแ แแแ แจแแกแแแแจแแแแ Wireshark แแ แแแ แแแแก แแแแกแแแแก แแแ แกแแแก - แแแก แฃแฌแแแแแแ TShark. แแ แแแแ แฉแแ TShark แจแแแแแแแ แแแแฎแแแแแกแแแแก, แ แแแ แฎแแแ แจแแแฃแฌแงแ แแ แแแ แแแแก แแแแแฏแแแแขแแก แแฆแฌแแ แแก. Wireshark-แแแ แแ แแแ แแแแญแแ แแแแ แแแ แแแแก แแแแ แแแแก แแฆแแ, แ แแแแแแช แจแแแซแแแแ แกแฌแ แแคแแ แแแซแแแแแแก Wireshark-แแก แแฎแแแ แแแ แกแแแก แแแแแจแแแแแกแแก.
แแฃ แแชแแ แ แแแแ แแแแแแงแแแแ Wireshark, แจแแแแซแแแแ แแแแแแงแแแแ แแแ แฉแแแแ แแแแแแแแแแแก แจแแกแแกแฌแแแแแ. แแแแ แแ แแ แจแแแแฎแแแแแจแแช แแ แแแ แฉแแแ, แแแแฃแคแแแ TSark-แก, แ แแแแแ แแก แแแแแฎแแแ แแแแ แแฅแแแแ VoIP แแแแแแแชแแแแแก แขแแกแขแแ แแแแก แแแขแแแแขแแแแชแแแจแ, แแกแแแ แแแกแขแแแชแแฃแ แ แแแแแฆแแแแก แแแแฎแแ แชแแแแแแแจแ.
แแแแแแกแขแแแแ แแ TShark แแ แซแแแแแแ:
$ sudo apt-get install tshark
แขแ แแแแชแแฃแแแ, แฉแแแ แแแแแฌแแแแ แแแกแขแแแแชแแแก แจแแแแแก แแ แแแ แแแแก แแแ แกแแแก แแแแฎแแแแแ:
$ tshark --version
แแฃ แแแแฆแแแ แแแแแแแขแฃแ แ แแแกแฃแฎแ, แแแแ แซแแแแแ แจแแแแแแแก.
แแแแแแแแ แฉแแแแ แแแแแขแแแ แฏแแ แแฎแแแแ แแแแแแฃแขแแ แแก แจแแแแแ แจแแแแก, แจแแแแแซแแแ tshark-แก แแฃแแฎแ แแ แแฎแแแแ แแกแแแ แแแแแขแแแแก แฉแแแแแแ. แแแแกแแแแแก แแฅแแแ แฃแแแ แแแ แฉแแแ แแแแแขแแก แแแแแฆแแแ แแแขแแ แคแแแกแแแแ แแแ แงแฃแแ (loopback) 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 แแแแแขแแแจแ.
แแแแแขแแก แแแแ แแแแขแแแจแ.
แแแแแขแแก แฌแงแแ แแก แแแ แขแแก แแแแแ แ แแ แแแแแขแแก แแแแแจแแฃแแแแแก แแแ แขแแก แแแแแ แ.
แแแแแขแแก แแแขแแแ แแแแก แแแแ, แแฅแแแแ แจแแแแแซแแแ แแแแแกแแแแแ, แ แแ แฉแแแแ แแแแแแชแแแ แฌแแ แแแฅแแแแก RTP แแแแแขแแแก 172 แแแแขแแก แแแแแ, แ แแแแแแช, แ แแแแ แช แแฎแแ แแฃแแแแแ แแจแ, แแแแแแ แแแแก 214 แแแแขแแก แแแแแก UDP แแแแแขแแก แจแแแแแ.
แแฎแแ แแ แแ แจแแแฎแแแแ UDP แแแแแขแแแก, แแแแกแแแแแก แฉแแแ แแแแฃแจแแแ TSark แแแกแแฆแแแแแแก แแแคแแ แแแแแฃแแ แแแแ แแแแ:
sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x
แจแแแแแแ, แแ แแแ แแแแก แแแแแแแแแแ แแแแแแแ แแแแ - แแแแแแฃแ แแแแแแแแก แแแแแแขแแแ แแแแแขแแก แจแแแ แจแแแแแ แกแแก แแแจแแคแแ แ, แ แแแแช แแแแแแฌแแแ แแแ. แแแแแกแแแแแก แฃแแแ แแแกแแแแแแ, แจแแแแซแแแแ แจแแแฉแแ แแ TSark Ctrl-C-แแ แแแญแแ แแ, แแ แแแแแแแแ แแ แแแกแ แแแแแแแแแแ แคแแแแจแ, แแแแแแขแแ แแแแกแแแแแ tee แแ แแแ แแแแจแ Run แแ แซแแแแแแจแ, แแแฃแแแแแ แคแแแแแก แกแแฎแแแ, 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