เชฒเซเชเชจเซ เชธเชพเชฎเชเซเชฐเซ เชฎเชพเชฐเชพ เชชเชฐเชฅเซ เชฒเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ
RTP เชธเซเชเซเชฐเซเชฎ เชฆเซเชตเชพเชฐเชพ เชเชกเชฟเช เชธเชฟเชเซเชจเชฒ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเซเช
เชเซเชฒเซเชฒเชพเชฎเชพเช
RTP เชชเซเชฐเซเชเซเชเซเชฒ (เชฐเซเช เชฒ เชเชพเชเชฎ เชชเซเชฐเซเชเซเชเซเชฒ) เช เชจเซเชตเชพเชฆเชจเซ เช เชฐเซเชฅ เชฐเซเช เชฒ-เชเชพเชเชฎ เชชเซเชฐเซเชเซเชเซเชฒ เชเซ, เชคเซเชจเซ เชเชชเชฏเซเช เชเชกเชฟเช, เชตเชฟเชกเชฟเชฏเซ, เชกเซเชเชพ, เชตเชพเชธเซเชคเชตเชฟเช เชธเชฎเชฏเชฎเชพเช เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชคเซ เชฌเชงเซเช เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ. เชเชพเชฒเซ เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชเชกเชฟเชฏเซ เชธเชฟเชเซเชจเชฒ เชฒเชเช. เชชเซเชฐเซเชเซเชเซเชฒเชจเซ เชฒเชตเชเซเชเชคเชพ เชเชตเซ เชเซ เชเซ เชคเซ เชคเชฎเชจเซ เชชเซเชฐเซเชตเชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชเซเชฃเชตเชคเซเชคเชพ เชธเชพเชฅเซ เชเชกเชฟเช เชธเชฟเชเซเชจเชฒ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ UDP เชชเซเชเซเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเซเชจเซ เช เชฐเซเชฅ เชเซ เชเซ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชชเซเชเซเชเชจเซ เชเซเช เชคเชฆเซเชฆเชจ เชธเซเชตเซเชเชพเชฐเซเชฏ เชเซ. เชฆเชฐเซเช เชชเซเชเซเชเชฎเชพเช เชเชพเชธ RTP เชนเซเชกเชฐ เช เชจเซ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชเซเชก เชธเชฟเชเซเชจเชฒเชจเซ เชกเซเชเชพ เชฌเซเชฒเซเช เชนเซเชฏ เชเซ. เชนเซเชกเชฐเชฎเชพเช เช เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชฐเซเชคเซ เชชเชธเชเชฆ เชเชฐเซเชฒ เชธเชฟเชเซเชจเชฒ เชธเซเชคเซเชฐเซเชค เชเชณเชเชเชฐเซเชคเชพ, เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชคเชพ เชธเชฟเชเซเชจเชฒเชจเชพ เชชเซเชฐเชเชพเชฐ เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เช เชจเซ เชเช เช เชจเชจเซเชฏ เชชเซเชเซเช เชธเชฟเชเซเชตเชจเซเชธ เชจเชเชฌเชฐเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ เชเซเชฅเซ เชชเซเชเซเชเซเชจเซ เชกเซเชเซเชก เชเชฐเชคเซ เชตเชเชคเซ เชฏเซเชเซเชฏ เชเซเชฐเชฎเชฎเชพเช เชเซเช เชตเซ เชถเชเชพเชฏ, เชชเชเซ เชญเชฒเซเชจเซ เชคเซเช เชเซ เชเซเชฐเชฎเชฎเชพเช เชตเชฟเชคเชฐเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเซเชฏ. เชจเซเชเชตเชฐเซเช เชนเซเชกเชฐเชฎเชพเช เชตเชงเชพเชฐเชพเชจเซ เชฎเชพเชนเชฟเชคเซ เชชเชฃ เชนเซเช เชถเชเซ เชเซ, เชเชนเซเชตเชพเชคเชพ เชเชเซเชธเซเชเซเชเชถเชจ, เชเซ เชนเซเชกเชฐเชจเซ เชเซเชเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชพเชฐเซเชฏเชฎเชพเช เชเชชเชฏเซเช เชฎเชพเชเซ เช เชจเซเชเซเชฒเชฟเชค เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชกเซเชเชพ เชฌเซเชฒเซเชเชฎเชพเช เชชเซเชเซเชเชจเซ เชชเซเชฒเซเชก เชนเซเชฏ เชเซ. เชธเชพเชฎเชเซเชฐเซเชจเซ เชเชเชคเชฐเชฟเช เชธเชเชธเซเชฅเชพ เชฒเซเชกเชจเชพ เชชเซเชฐเชเชพเชฐ เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ, เชคเซ เชฎเซเชจเซ เชธเชฟเชเซเชจเชฒ, เชธเซเชเซเชฐเชฟเชฏเซ เชธเชฟเชเซเชจเชฒ, เชตเชฟเชกเชฟเช เชเชฎเซเช เชฒเชพเชเชจ เชตเชเซเชฐเซเชจเชพ เชจเชฎเซเชจเชพเช เชนเซเช เชถเชเซ เชเซ.
เชฒเซเชกเชจเซ เชชเซเชฐเชเชพเชฐ เชธเชพเชค-เชฌเซเช เชจเชเชฌเชฐ เชฆเซเชตเชพเชฐเชพ เชธเซเชเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชญเชฒเชพเชฎเชฃ RFC3551 (เชจเซเชฏเซเชจเชคเชฎ เชจเชฟเชฏเชเชคเซเชฐเชฃ เชธเชพเชฅเซ เชเชกเชฟเชฏเซ เช เชจเซ เชตเชฟเชกเชฟเชฏเซ เชเซเชจเซเชซเชฐเชจเซเชธ เชฎเชพเชเซ RTP เชชเซเชฐเซเชซเชพเชเชฒ) เชตเชฟเชตเชฟเชง เชชเซเชฐเชเชพเชฐเชจเชพ เชฒเซเชกเชจเซ เชธเซเชฅเชพเชชเชจเชพ เชเชฐเซ เชเซ; เช เชจเซเชฐเซเชช เชเซเชทเซเชเช เชฒเซเชกเชจเชพ เชชเซเชฐเชเชพเชฐเซ เช เชจเซ เชเซเชกเชจเชพ เช เชฐเซเชฅเชจเซเช เชตเชฐเซเชฃเชจ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ เชเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชคเซเช เชจเชฟเชฏเซเชเซเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ. เชเซเชเชฒเชพเช เชเซเชก เชเซเชเชชเชฃ เชชเซเชฐเชเชพเชฐเชจเชพ เชฒเซเชก เชธเชพเชฅเซ เชธเชเชค เชฐเซเชคเซ เชเซเชกเชพเชฏเซเชฒเชพ เชจเชฅเซ; เชคเซเชจเซ เชเชชเชฏเซเช เชฎเชจเชธเซเชตเซ เชฒเซเชกเชจเซ เชจเชฟเชฏเซเชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเช เชถเชเซ เชเซ.
เชกเซเชเชพ เชฌเซเชฒเซเชเชจเซเช เชเชฆ เชเชชเชฐเชจเชพ เชฎเชนเชคเซเชคเชฎ เชชเซเชเซเช เชเชฆ เชฆเซเชตเชพเชฐเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชเซ เชเซ เชเชชเซเชฒ เชจเซเชเชตเชฐเซเช เชชเชฐ เชธเซเชเซเชฎเซเชจเซเชเซเชถเชจ (MTU เชชเซเชฐเชพเชฎเซเชเชฐ) เชตเชฟเชจเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเซ เชถเชเชพเชฏ เชเซ. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เช 1500 เชฌเชพเชเชเซเชธ เชเชฐเชคเชพเช เชตเชงเซ เชจเชฅเซ. เชเชฎ, เชชเซเชฐเชคเชฟ เชธเซเชเชจเซเชก เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชฅเชคเชพ เชกเซเชเชพเชจเซ เชฎเชพเชคเซเชฐเชพ เชตเชงเชพเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเซ เชชเซเชเซเชเชจเซเช เชเชฆ เชเซเชเซเชเชธ เชฌเชฟเชเชฆเซ เชธเซเชงเซ เชตเชงเชพเชฐเซ เชถเชเซ เชเซ, เช เชจเซ เชชเชเซ เชคเชฎเชพเชฐเซ เชชเซเชเซเชเซ เชฎเซเชเชฒเชตเชพเชจเซ เชเชตเชฐเซเชคเชจ เชตเชงเชพเชฐเชตเซ เชชเชกเชถเซ. เชฎเซเชกเชฟเชฏเชพ เชธเซเชเซเชฐเซเชฎเชฐเชฎเชพเช, เช เชเซเช เชตเชฃเซ เชเชฐเซ เชถเชเชพเชฏ เชคเซเชตเซ เชธเซเชเชฟเชเช เชเซ. เชฎเซเชณเชญเซเชค เชฐเซเชคเซ เชคเซ 50 Hz เชเซ, เชเชเชฒเซ เชเซ. 50 เชชเซเชเซเช เชชเซเชฐเชคเชฟ เชธเซเชเชจเซเชก. เช เชฎเซ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชเซเชก RTP เชชเซเชเซเชเชจเชพ เชเซเชฐเชฎเชจเซ RTP เชธเซเชเซเชฐเซเชฎ เชเชนเซเชถเซเช.
เชธเซเชคเซเชฐเซเชค เช เชจเซ เชฐเซเชธเซเชตเชฐ เชตเชเซเชเซ เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเซ เชชเชฐเซเชฏเชพเชชเซเชค เชเซ เชเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชฐเซเชธเซเชตเชฐเชจเซเช IP เชธเชฐเชจเชพเชฎเซเช เช เชจเซ เชคเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ เชคเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เชเชพเชฃเซ เชเซ. เชคเซ. เชเซเชเชชเชฃ เชชเซเชฐเชพเชฐเชเชญเชฟเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชตเชฟเชจเชพ, เชธเซเชคเซเชฐเซเชค เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ, เช เชจเซ เชฐเซเชธเซเชตเชฐ, เชฌเชฆเชฒเชพเชฎเชพเช, เชคเซเชจเซ เชคเชฐเชค เช เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เช เชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชเซ. เชงเซเชฐเชฃ เชฎเซเชเชฌ, RTP เชธเซเชเซเชฐเซเชฎ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเชพ เช เชฅเชตเชพ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชตเชชเชฐเชพเชคเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เชธเชฎ เชนเซเชตเซ เชเซเชเช.
เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชเชฎเชพเช เชเซเชฏเชพเช เชฐเซเชธเซเชตเชฐเชจเซเช เชธเชฐเชจเชพเชฎเซเช เช เชเชพเชเชฅเซ เชเชพเชฃเชตเซเช เช เชถเชเซเชฏ เชเซ, เชธเชฐเซเชตเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซเชฏเชพเช เชฐเซเชธเซเชตเชฐเซ เชคเซเชฎเชจเซเช เชธเชฐเชจเชพเชฎเซเช เชเซเชกเซ เชฆเซ เชเซ, เช เชจเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชฐเซเชธเซเชตเชฐเชจเชพ เช เชฎเซเช เชตเชฟเชถเชฟเชทเซเช เชจเชพเชฎเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซเชจเซ เชคเซเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเซ เชถเชเซ เชเซ.
เชเชตเชพ เชเชฟเชธเซเชธเชพเชเชฎเชพเช เชเซ เชเซเชฏเชพเช เชธเชเชเชพเชฐ เชเซเชจเชฒเชจเซ เชเซเชฃเชตเชคเซเชคเชพ เช เชฅเชตเชพ เชฐเซเชธเซเชตเชฐเชจเซ เชเซเชทเชฎเชคเชพเช เช เชเชพเชฃ เชเซ, เชเช เชชเซเชฐเชคเชฟเชธเชพเชฆ เชเซเชจเชฒเชจเซเช เชเชฏเซเชเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชฐเซเชธเซเชตเชฐ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐเชจเซ เชคเซเชจเซ เชเซเชทเชฎเชคเชพเช, เชคเซ เชเซเชเซ เชเชฏเซเชฒเชพ เชชเซเชเซเชเซเชจเซ เชธเชเชเซเชฏเชพ เชตเชเซเชฐเซ เชตเชฟเชถเซ เชเชพเชฃ เชเชฐเซ เชถเชเซ เชเซ. เช เชเซเชจเชฒ RTCP เชชเซเชฐเซเชเซเชเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เช เชเซเชจเชฒเชฎเชพเช เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชคเชพ เชชเซเชเซเชเซเชจเซเช เชซเซเชฐเซเชฎเซเช RFC 3605 เชฎเชพเช เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชฅเชฏเซเชฒ เชเซ. เช เชเซเชจเชฒ เชชเชฐ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช เชเชเซ เชกเซเชเชพ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เชเซ, 200..300 เชฌเชพเชเชเซเชธ เชชเซเชฐเชคเชฟ เชธเซเชเชจเซเชก, เชคเซเชฅเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชคเซเชจเซ เชนเชพเชเชฐเซ เชฌเซเชเชพเชฐเซเชช เชจเชฅเซ. เชเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เชชเชฐ RTCP เชชเซเชเซเชเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชคเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เชเช เชตเชฟเชทเชฎ เช เชจเซ RTP เชธเซเชเซเชฐเซเชฎ เชเซเชฎเชพเชเชฅเซ เชเชตเซ เชเซ เชคเซเชจเชพ เชเชฐเชคเชพ เชฎเซเชเซ เชนเซเชตเซ เชเซเชเช. เช เชฎเชพเชฐเชพ เชเชฆเชพเชนเชฐเชฃเชฎเชพเช, เช เชฎเซ เช เชเซเชจเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช เชจเชนเซเช, เชเชพเชฐเชฃ เชเซ เชฐเซเชธเซเชตเชฐ เช เชจเซ เชเซเชจเชฒเชจเซ เชเซเชทเชฎเชคเชพเช เชฆเซเชเซเชคเซ เชฐเซเชคเซ เช เชฎเชพเชฐเซ, เช เชคเซเชฏเชพเชฐ เชธเซเชงเซเชจเซ เชธเชพเชงเชพเชฐเชฃ, เชเชฐเซเชฐเชฟเชฏเชพเชคเซ เชเชฐเชคเชพเช เชตเชงเซ เชเช เชเซ.
เช เชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช, เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชธเชฐเซเชเชฟเช, เช เชเชพเชเชจเชพ เชเชฆเชพเชนเชฐเชฃเชฅเซ เชตเชฟเชชเชฐเซเชค, เชฌเซ เชญเชพเชเซเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ: เชเซเชฐเชพเชจเซเชธเชฎเชฟเชเชฟเชเช เชชเชพเชฅ เช เชจเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพเชจเซ เชฎเชพเชฐเซเช. เชถเซเชฐเซเชทเช เชเชฟเชคเซเชฐเชฎเชพเช เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ เชฆเชฐเซเช เชญเชพเช เชฎเชพเชเซ เชเชชเชฃเซ เชเชชเชฃเซ เชชเซเชคเชพเชจเซ เชเชกเชฟเชฏเชพเชณเชจเซ เชธเซเชคเซเชฐเซเชค เชฌเชจเชพเชตเซเชถเซเช.
RTP เชชเซเชฐเซเชเซเชเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเซเชฎเชจเซ เชตเชเซเชเซ เชตเชจ-เชตเซ เชธเชเชเชพเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. เช เชเชฆเชพเชนเชฐเชฃเชฎเชพเช, เช เชฎเชจเซ เชฌเชพเชนเซเชฏ เชจเซเชเชตเชฐเซเชเชจเซ เชเชฐเซเชฐ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เช เชจเซ เชฐเซเชธเซเชตเชฐ เชฌเชเชจเซ เชเช เช เชเชฎเซเชชเซเชฏเซเชเชฐ เชชเชฐ เชธเซเชฅเชฟเชค เชนเชถเซ - เชชเซเชเซเชเซ เชคเซเชจเซ เช เชเชฆเชฐ เชเชถเซ.
RTP เชธเซเชเซเชฐเซเชฎ เชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ, เชฎเซเชกเชฟเชฏเชพ เชธเซเชเซเชฐเซเชฎเชฐ เชฌเซ เชซเชฟเชฒเซเชเชฐเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ: MS_RTP_SEND เช เชจเซ MS_RTP_RECV. เชชเซเชฐเชฅเชฎ เชเช เชฌเซเชเชพเชจเซ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเซ เชเซ เช เชจเซ RTP เชธเซเชเซเชฐเซเชฎ เชฎเซเชณเชตเซ เชเซ. เช เชซเชฟเชฒเซเชเชฐเซเชธ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเซเชฎเชจเซ RTP เชธเชคเซเชฐ เชเชฌเซเชเซเชเซเช เชชเชฐ เชเช เชจเชฟเชฐเซเชฆเซเชถเช เชชเชธเชพเชฐ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชเซ เชเชพเช เชคเซ เชกเซเชเชพ เชฌเซเชฒเซเชเซเชธเชจเชพ เชชเซเชฐเชตเชพเชนเชจเซ RTP เชชเซเชเซเชเชจเชพ เชชเซเชฐเชตเชพเชนเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเซ เชถเชเซ เชเซ เช เชฅเชตเชพ เชคเซเชจเชพเชฅเซ เชตเชฟเชฐเซเชฆเซเชง เชเชฐเซ เชถเชเซ เชเซ. เชฎเซเชกเชฟเชฏเชพ เชธเซเชเซเชฐเซเชฎเชฐเชจเซเช เชเชเชคเชฐเชฟเช เชกเซเชเชพ เชซเซเชฐเซเชฎเซเช RTP เชชเซเชเซเชเชจเชพ เชกเซเชเชพ เชซเซเชฐเซเชฎเซเช เชธเชพเชฅเซ เชฎเซเชณ เชเชพเชคเซเช เชจ เชนเซเชตเชพเชฅเซ, เชกเซเชเชพเชจเซ MS_RTP_SEND เชชเชฐ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชเชฐเชคเชพ เชชเชนเซเชฒเชพ, เชคเชฎเชพเชฐเซ เชเชจเซเชเซเชกเชฐ เชซเชฟเชฒเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ 16-เชฌเซเช เชเชกเชฟเช เชธเชฟเชเซเชจเชฒ เชจเชฎเซเชจเชพเชเชจเซ เชเช -เชฌเซเช เชเชจเซเชเซเชกเซเชกเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเซ เชเซ. เชฏเซ-เชฒเซ (เชฎเซ-เชเชพเชฏเชฆเซ). เชชเซเชฐเชพเชชเซเชค เชฌเชพเชเซ เชชเชฐ, เชกเซเชเซเชกเชฐ เชซเชฟเชฒเซเชเชฐ เชตเชฟเชชเชฐเซเชค เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ.
เชจเซเชเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซ เชเซเชเซเชธเซเช เชเซ เชเซ เชเชเซเชคเชฟเชฎเชพเช เชฌเชคเชพเชตเซเชฒ เชฏเซเชเชจเชพเชจเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเซ เชเซ (เชธเชฎเชพเชตเซเชถ เชจเชฟเชฐเซเชฆเซเชถเซ เชชเชนเซเชฒเชพเชเชจเชพ # เชชเซเชฐเชคเซเชเซ เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ, เชคเซเชฎเชจเซ เชถเชพเชฎเซเชฒ เชเชฐเชตเชพเชจเซเช เชญเซเชฒเชถเซ เชจเชนเซเช):
/* ะคะฐะนะป 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