Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 6

เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเตฝ เดŽเดจเตเดฑเต†เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดŸเตเดคเตเดคเดคเดพเดฃเต เดธเต†เตป เดšเดพเดจเตฝ.

RTP เดธเตเดŸเตเดฐเต€เด‚ เดตเดดเดฟ เด’เดฐเต เด“เดกเดฟเดฏเต‹ เดธเดฟเด—เตเดจเตฝ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต

Mediastreamer2 VoIP เดŽเดžเตเดšเดฟเตป เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดญเดพเด—เด‚ 6

เด…เดตเดธเดพเดจเดคเตเดคเดฟเตฝ เดฒเต‡เด–เดจเด‚ เดžเด™เตเด™เตพ เด’เดฐเต เดŸเต‹เตบ เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด•เตบเดŸเตเดฐเต‹เตพ เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเตเด‚ เด’เดฐเต‡ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดŸเต‹เตบ เดกเดฟเดฑเตเดฑเด•เตเดŸเดฑเตเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. RTP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ (RFC 3550-) เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เดชเด เดฟเด•เตเด•เตเด‚. RTP: เดคเดคเตเดธเดฎเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดŸเตเดฐเดพเตปเดธเตเดชเต‹เตผเดŸเตเดŸเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ) เด’เดฐเต เด‡เดฅเตผเดจเต†เดฑเตเดฑเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‚เดŸเต† เด’เดฐเต เด“เดกเดฟเดฏเต‹ เดธเดฟเด—เตเดจเตฝ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเตเด‚.

RTP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ (เดคเดคเตเดธเดฎเดฏ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ) เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดŽเดจเตเดจเดพเตฝ เดคเดคเตเดธเดฎเดฏ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดŽเดจเตเดจเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต, เด“เดกเดฟเดฏเต‹, เดตเต€เดกเดฟเดฏเต‹, เดกเดพเดฑเตเดฑ, เดคเดคเตเดธเดฎเดฏเด‚ เดธเด‚เดชเตเดฐเต‡เดทเดฃเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดŽเดฒเตเดฒเดพเด‚ เด•เตˆเดฎเดพเดฑเดพเตป เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เด’เดฐเต เด“เดกเดฟเดฏเต‹ เดธเดฟเด—เตเดจเตฝ เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เดพเด‚. เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเดถเตเดšเดฏเดฟเดšเตเดš เด—เตเดฃเดฎเต‡เดจเตเดฎเดฏเตเดณเตเดณ เด’เดฐเต เด“เดกเดฟเดฏเต‹ เดธเดฟเด—เตเดจเตฝ เด•เตˆเดฎเดพเดฑเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดฒเดพเดฃเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเดจเตเดฑเต† เดตเดดเด•เตเด•เด‚.

UDP เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดทเตป เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต, เด…เดคเดพเดฏเดคเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดทเตป เดธเดฎเดฏเดคเตเดคเต เดชเดพเด•เตเด•เดฑเตเดฑเต เดจเดทเตเดŸเด‚ เดคเดฟเด•เดšเตเดšเตเด‚ เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฃเต. เด“เดฐเต‹ เดชเดพเด•เตเด•เดฑเตเดฑเดฟเดฒเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• RTP เดนเต†เดกเดฑเตเด‚ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดค เดธเดฟเด—เตเดจเดฒเดฟเดจเตเดฑเต† เด’เดฐเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดคเดฒเด•เตเด•เต†เดŸเตเดŸเดฟเตฝ เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดธเดฟเด—เตเดจเตฝ เดธเต‹เดดเตโ€Œเดธเต เดเดกเดจเตเดฑเดฟเดซเดฏเตผ, เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เดธเดฟเด—เตเดจเดฒเดฟเดจเตเดฑเต† เดคเดฐเดคเตเดคเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ, เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดชเดพเด•เตเด•เดฑเตเดฑเต เดธเต€เด•เตเดตเตปเดธเต เดจเดฎเตเดชเตผ เดŽเดจเตเดจเดฟเดต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดถเตƒเด‚เด–เดฒ. เดนเต†เดกเดฑเดฟเตฝ เด…เดงเดฟเด• เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด‡เดคเต เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เดชเดพเด•เตเด•เดฑเตเดฑเดฟเดจเตเดฑเต† เดชเต‡เดฒเต‹เดกเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเดฟเดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เด“เตผเด—เดจเตˆเดธเต‡เดทเตป เดฒเต‹เดกเดฟเดจเตเดฑเต† เดคเดฐเดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด’เดฐเต เดฎเต‹เดฃเต‹ เดธเดฟเด—เตเดจเตฝ, เดธเตเดฑเตเดฑเต€เดฐเดฟเดฏเต‹ เดธเดฟเด—เตเดจเตฝ, เด’เดฐเต เดตเต€เดกเดฟเดฏเต‹ เด‡เดฎเต‡เดœเต เดฒเตˆเตป เดฎเตเดคเดฒเดพเดฏเดตเดฏเตเดŸเต† เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพ เด†เด•เดพเด‚.

เดฒเต‹เดกเต เดคเดฐเด‚ เดเดดเต-เดฌเดฟเดฑเตเดฑเต เดจเดฎเตเดชเตผ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดถเตเดชเดพเตผเดถ RFC3551 (เด•เตเดฑเดžเตเดž เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดฎเตเดณเตเดณ เด“เดกเดฟเดฏเต‹, เดตเต€เดกเดฟเดฏเต‹ เด•เต‹เตบเดซเดฑเตปเดธเตเด•เตพเด•เตเด•เตเดณเตเดณ RTP เดชเตเดฐเตŠเดซเตˆเตฝ) เดจเดฟเดฐเดตเดงเดฟ เดคเดฐเด‚ เดฒเต‹เดกเต เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต; เด…เดจเตเดฌเดจเตเดง เดชเดŸเตเดŸเดฟเด• เดฒเต‹เดกเดฟเดจเตเดฑเต† เดคเดฐเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด…เดต เดจเดฟเดฏเตเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเตเด•เดณเตเดŸเต† เด…เตผเดคเตเดฅเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด’เดฐเต เดตเดฟเดตเดฐเดฃเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดšเดฟเดฒ เด•เต‹เดกเตเด•เตพ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฒเต‹เดกเตเดฎเดพเดฏเดฟ เด•เตผเดถเดจเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ; เด’เดฐเต เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดฒเต‹เดกเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เดพเตป เด…เดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เดธเต†เด—เตโ€Œเดฎเต†เดจเตเดฑเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดคเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ (MTU เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ) เด•เตˆเดฎเดพเดฑเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดชเดฐเดฎเดพเดตเดงเดฟ เดชเดพเด•เตเด•เดฑเตเดฑเต เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเตฝ เด’เดฐเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เดฎเตเด•เดณเดฟเตฝ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตŠเดคเตเดตเต‡, เด‡เดคเต 1500 เดฌเตˆเดฑเตเดฑเตเด•เดณเดฟเตฝ เด•เต‚เดŸเตเดคเดฒเดฒเตเดฒ. เด…เดคเดฟเดจเดพเตฝ, เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด…เดณเดตเต เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดชเต‹เดฏเดฟเดจเตเดฑเต เดตเดฐเต† เดชเดพเด•เตเด•เดฑเตเดฑเต เดตเดฒเตเดชเตเดชเด‚ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดคเตเดŸเตผเดจเตเดจเต เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด†เดตเตƒเดคเตเดคเดฟ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด’เดฐเต เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเตฝ, เด‡เดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจ เด’เดฐเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเดฎเดพเดฃเต. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เด‡เดคเต 50 Hz เด†เดฃเต, เด…เดคเดพเดฏเดคเต. เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 50 เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ. เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดค RTP เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เด•เตเดฐเดฎเดคเตเดคเต† เดžเด™เตเด™เตพ RTP เดธเตเดŸเตเดฐเต€เด‚ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚.

เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดจเตเด‚ เดฑเดฟเดธเต€เดตเดฑเดฟเดจเตเด‚ เด‡เดŸเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป, เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเตผ เดฑเดฟเดธเต€เดตเดฑเดฟเดจเตเดฑเต† เดเดชเดฟ เดตเดฟเดฒเดพเดธเดตเตเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเดฑเตเด‚ เด…เดฑเดฟเดžเตเดžเดพเตฝ เดฎเดคเดฟ. เด†. เดชเตเดฐเดพเดฅเดฎเดฟเด• เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒเดพเดคเต†, เด‰เดฑเดตเดฟเดŸเด‚ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดธเต€เดตเตผ เด…เดคเต เด‰เดŸเดจเดŸเดฟ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต. เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด…เดจเตเดธเดฐเดฟเดšเตเดšเต, เด’เดฐเต RTP เดธเตเดŸเตเดฐเต€เด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเต‹ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเตผ เดคเตเดฒเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

เดฑเดฟเดธเต€เดตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดฒเดพเดธเด‚ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด…เดฑเดฟเดฏเดพเตป เด•เดดเดฟเดฏเดพเดคเตเดค เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ, เดฑเดฟเดธเต€เดตเดฑเตเด•เตพ เด…เดตเดฐเตเดŸเต† เดตเดฟเดฒเดพเดธเด‚ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดธเต€เดตเดฑเดฟเดจเตเดฑเต† เดšเดฟเดฒ เดคเดจเดคเดพเดฏ เดชเต‡เดฐเต เดชเดฐเดพเดฎเตผเดถเดฟเดšเตเดšเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเดฑเดฟเดจเต เด…เดคเต เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เดพเด‚.

เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏ เดšเดพเดจเดฒเดฟเดจเตเดฑเต† เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเดฎเต‹ เดฑเดฟเดธเต€เดตเดฑเดฟเดจเตเดฑเต† เด•เดดเดฟเดตเตเด•เดณเต‹ เด…เดœเตเดžเดพเดคเดฎเดพเดฏ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เด’เดฐเต เดซเต€เดกเตโ€Œเดฌเดพเด•เตเด•เต เดšเดพเดจเตฝ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดฒเต‚เดŸเต† เดฑเดฟเดธเต€เดตเดฑเดฟเดจเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเดฑเต† เด…เดคเดฟเดจเตเดฑเต† เด•เดดเดฟเดตเตเด•เตพ, เดจเดทเตโ€ŒเดŸเดฎเดพเดฏ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดฎเตเดคเดฒเดพเดฏเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดฑเดฟเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดˆ เดšเดพเดจเตฝ RTCP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดšเดพเดจเดฒเดฟเตฝ เดธเด‚เดชเตเดฐเต‡เดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดซเต‹เตผเดฎเดพเดฑเตเดฑเต RFC 3605-เตฝ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดคเดพเดฐเดคเดฎเตเดฏเต‡เดจ เด•เตเดฑเดšเตเดšเต เดกเดพเดฑเตเดฑ เดˆ เดšเดพเดจเดฒเดฟเดฒเต‚เดŸเต† เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต, เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 200..300 เดฌเตˆเดฑเตเดฑเตเด•เตพ, เด…เดคเดฟเดจเดพเตฝ เดชเตŠเดคเตเดตเต‡, เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเด‚ เดญเดพเดฐเดฎเตเดณเตเดณเดคเดฒเตเดฒ. เด†เตผโ€ŒเดŸเดฟโ€Œเดธเดฟโ€Œเดชเดฟ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเตผ เด’เดฑเตเดฑเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ เด•เต‚เดŸเดพเดคเต† เด†เตผโ€ŒเดŸเดฟโ€Œเดชเดฟ เดธเตเดŸเตเดฐเต€เด‚ เดตเดฐเตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเดฑเดฟเดจเต‡เด•เตเด•เดพเตพ เดตเดฒเตเดคเตเด‚ เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดˆ เดšเดพเดจเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดฑเดฟเดธเต€เดตเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เดšเดพเดจเดฒเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เดดเดฟเดตเตเด•เตพ เดžเด™เตเด™เดณเตเดŸเต† เด‡เดคเตเดตเดฐเต†เดฏเตเดณเตเดณ เดฎเดฟเดคเดฎเดพเดฏ เด†เดตเดถเตเดฏเด™เตเด™เตพ เด•เดตเดฟเดฏเตเดจเตเดจเต.

เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเตฝ, เดกเดพเดฑเตเดฑเดพ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดทเตป เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเต, เดฎเตเดฎเตเดชเดคเตเดคเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ, เดฐเดฃเตเดŸเต เดญเดพเด—เด™เตเด™เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚: เด’เดฐเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเดฟเด‚เด—เต เดชเดพเดคเดฏเตเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเดพเดคเดฏเตเด‚. เดถเต€เตผเดทเด• เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† เด“เดฐเต‹ เดญเดพเด—เดคเตเดคเดฟเดจเตเด‚ เดžเด™เตเด™เตพ เดธเตเดตเดจเตเดคเด‚ เด•เตเดฒเต‹เด•เตเด•เต เด‰เดฑเดตเดฟเดŸเด‚ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด‚.

เด…เดตเตผ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตบ-เดตเต‡ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ RTP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚. เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดฌเดพเดนเตเดฏ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเดฑเตเด‚ เดฑเดฟเดธเต€เดตเดฑเตเด‚ เด’เดฐเต‡ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเด‚ - เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เด…เดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเดžเตเดšเดฐเดฟเด•เตเด•เตเด‚.

เด’เดฐเต RTP เดธเตเดŸเตเดฐเต€เด‚ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเตผ เดฐเดฃเตเดŸเต เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต: MS_RTP_SEND, MS_RTP_RECV. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ RTP เดธเตเดŸเตเดฐเต€เด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดˆ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด…เดตเตผ เด’เดฐเต RTP เดธเต†เดทเตป เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เด•เตˆเดฎเดพเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเต เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดŸเต† เด’เดฐเต เดธเตเดŸเตเดฐเต€เด‚ RTP เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดพเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฟเดชเดฐเต€เดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เดฎเต€เดกเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเดฑเดฟเดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เดกเดพเดฑเตเดฑ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต RTP เดชเดพเด•เตเด•เดฑเตเดฑเดฟเดจเตเดฑเต† เดกเดพเดฑเตเดฑ เดซเต‹เตผเดฎเดพเดฑเตเดฑเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดกเดพเดฑเตเดฑ MS_RTP_SEND-เดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฟเด™เตเด™เตพ 16-เดฌเดฟเดฑเตเดฑเต เด“เดกเดฟเดฏเต‹ เดธเดฟเด—เตเดจเตฝ เดธเดพเดฎเตเดชเดฟเดณเตเด•เดณเต† เดŽเดŸเตเดŸเต-เดฌเดฟเดฑเตเดฑเต เดŽเตปเด•เต‹เดกเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจ เด’เดฐเต เดŽเตปเด•เต‹เดกเตผ เดซเดฟเตฝเดŸเตเดŸเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. u-law (mu-law). เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดญเดพเด—เดคเตเดคเต, เดกเต€เด•เต‹เดกเตผ เดซเดฟเตฝเดŸเตเดŸเตผ เดตเดฟเดชเดฐเต€เดค เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเตเด•เต€เด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดตเดพเดšเด•เด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต (เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพเด•เตเด•เต เดฎเตเดฎเตเดชเตเดณเตเดณ # เดšเดฟเดนเตเดจเด™เตเด™เตพ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตโ€Œเดคเต, เด…เดต เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต):

/* ะคะฐะนะป mstest6.c ะ˜ะผะธั‚ะฐั‚ะพั€ ะฟัƒะปัŒั‚ะฐ ัƒะฟั€ะฐะฒะปะตะฝะธั ะธ ะฟั€ะธะตะผะฝะธะบะฐ. */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
#include <mediastreamer2/msvolume.h>
#include <mediastreamer2/mstonedetector.h>
#include <mediastreamer2/msrtp.h>
#include <ortp/rtpsession.h>
#include <ortp/payloadtype.h>
/* ะŸะพะดะบะปัŽั‡ะฐะตะผ ะทะฐะณะพะปะพะฒะพั‡ะฝั‹ะน ั„ะฐะนะป ั ั„ัƒะฝะบั†ะธัะผะธ ัƒะฟั€ะฐะฒะปะตะฝะธั ัะพะฑั‹ั‚ะธัะผะธ
* ะผะตะดะธะฐัั‚ั€ะธะผะตั€ะฐ.*/
include <mediastreamer2/mseventqueue.h>
#define PCMU 0
/* ะคัƒะฝะบั†ะธั ะพะฑั€ะฐั‚ะฝะพะณะพ ะฒั‹ะทะพะฒะฐ, ะพะฝะฐ ะฑัƒะดะตั‚ ะฒั‹ะทะฒะฐะฝะฐ ั„ะธะปัŒั‚ั€ะพะผ, ะบะฐะบ ั‚ะพะปัŒะบะพ ะพะฝ
ะพะฑะฝะฐั€ัƒะถะธั‚ ัะพะฒะฟะฐะดะตะฝะธะต ั…ะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบ ะฒั…ะพะดะฝะพะณะพ ัะธะณะฝะฐะปะฐ ั ะทะฐะดะฐะฝะฝั‹ะผะธ. */
static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,
MSToneDetectorEvent *ev)
{
printf("ะŸั€ะธะฝัั‚ะฐ ะบะพะผะฐะฝะดะฐ: %sn", ev->tone_name);
}
/*----------------------------------------------------------------------------*/
/* ะคัƒะฝะบั†ะธั ั€ะตะณะธัั‚ั€ะฐั†ะธะธ ั‚ะธะฟะพะฒ ะฟะพะปะตะทะฝั‹ั… ะฝะฐะณั€ัƒะทะพะบ. */
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;
}
/*----------------------------------------------------------------------------*/
int main()
{
ms_init();
/* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปัั€ั‹ ั„ะธะปัŒั‚ั€ะพะฒ. */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
MSFilter *volume = ms_filter_new(MS_VOLUME_ID);
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 *encoder = ms_filter_create_encoder("PCMU");
MSFilter *decoder=ms_filter_create_decoder("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);
/* ะกะพะทะดะฐะตะผ 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_tx = ms_ticker_new();
MSTicker *ticker_rx = ms_ticker_new();
/* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟะตั€ะตะดะฐั‚ั‡ะธะบะฐ. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, volume, 0);
ms_filter_link(volume, 0, encoder, 0);
ms_filter_link(encoder, 0, rtpsend, 0);
/* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟั€ะธั‘ะผะฝะธะบะฐ. */
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_tx, voidsource);
ms_ticker_attach(ticker_rx, rtprecv);
/* ะะฐัั‚ั€ะฐะธะฒะฐะตะผ ัั‚ั€ัƒะบั‚ัƒั€ัƒ, ัƒะฟั€ะฐะฒะปััŽั‰ัƒัŽ ะฒั‹ั…ะพะดะฝั‹ะผ ัะธะณะฝะฐะปะพะผ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ. */
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);
}
}

เดžเด™เตเด™เตพ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเตเดฎเตเดชเดคเตเดคเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต† เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚, เดชเด•เตเดทเต‡ เดกเดพเดฑเตเดฑ เด’เดฐเต RTP เดธเตเดŸเตเดฐเต€เด‚ เดตเดดเดฟ เด•เตˆเดฎเดพเดฑเตเด‚.

เด…เดŸเตเดคเตเดค เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดˆ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเต† เดฐเดฃเตเดŸเต เดธเตเดตเดคเดจเตเดคเตเดฐ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด‚ - เด’เดฐเต เดฑเดฟเดธเต€เดตเดฑเตเด‚ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเดฑเตเด‚ เด…เดต เดตเตเดฏเดคเตเดฏเดธเตเดค เดŸเต†เตผเดฎเดฟเดจเดฒเตเด•เดณเดฟเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚. เด…เดคเต‡ เดธเดฎเดฏเด‚, TShark เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต RTP เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเด เดฟเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•