DTMF三种模式(SIPINFO,RFC2833,INBAND)

1、DTMF(双音多频)定义:由高频音和低频音的两个正弦波合成表示数字按键(0~9 * # A B C D)。
2、SIP中检测DTMF数据的方法:SIPINFO、RFC2833、INBAND
1)SIPINFO
为带外检测方式,通过SIP信令通道传输DTMF数据。没有统一的实现标准,目前以Cisco SIPINFO为标准,通过SIPINFO包中的signal字段识别DTMF按键。注意当DTMF为“*”时不同的标准实现对应的signal=*或signal=10。SIPINFO的好处就是不影响RTP数据包的传输,但可能会造成不同步。
2)RFC2833
为带内检测方式,通过RTP传输,由特殊的rtpPayloadType即TeleponeEvent来标示RFC2833数据包。同一个DTMF按键通常会对应多个RTP包,这些RTP数据包的时间戳均相同,此可以作为识别同一个按键的判断依据,最后一包RTP数据包的end标志置1表示DTMF数据结束。另外,很多SIP UA 包括IAD都提供TeleponeEvent的设置功能如3CX Phone,Billion-IAD,ZTE-IAD等默认的TeleponeEvent都为101,但可以人为修改,这时要求在进行RFC2833 DTMF检测之前需事先获取SDP协商的TeleponeEvent参数。
3)INBAND
为带内检测方式,而且与普通的RTP语音包混在一起传送。在进行INBAND DTMF检测时唯一的办法就是提取RTP数据包进行频谱分析,经过频谱分析得到高频和低频的频率,然后查表得到对应的按键,进行频谱分析的算法一般为Goertzel,这种算法的实现也很简单,网上有很多可以下到,但建议采用定点算法,浮点算法效率很低。
在选择压缩比很高码率很低的codec,比如G.723.1和G.729A等,建议不要使用INBAND模式,因为INBAND DTMF数据在进行复杂编解码后会产生失真,造成DTMF检测发生偏差或失败。
另外,还特别需要注意的一点就是很多SIP UA中INBAND都是伴随着RFC2833和SIPINFO同时发生的,这时需要区别对待,最好选择RFC2833和SIPINFO

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DTMF(Dual Tone Multi-Frequency)协商是在SIP(Session Initiation Protocol)中用于协商传输电话键盘按键信号的方式。在DTMF协商中,常见的三种方式是INFO、RFC 2833和Inband,它们在数据包中的差异如下: 1. INFO方式: - 协商过程:INFO方式通过SDP(Session Description Protocol)消息体中的m行和a行属性来指定使用INFO方式传输DTMF信号。 - 数据包差异:在INFO方式中,DTMF信号被编码为SIP INFO消息。SIP INFO消息是一个带有DTMF信号的SIP信令消息,可以通过SIP信令通道传输。DTMF信号以文本的形式封装在SIP INFO消息的消息体中,通常使用RFC 2833的DTMF事件字符进行编码。 2. RFC 2833方式: - 协商过程:RFC 2833方式通过SDP消息体中的m行和a行属性来指定使用RFC 2833方式传输DTMF信号。 - 数据包差异:在RFC 2833方式中,DTMF信号被编码为RTP(Real-time Transport Protocol)数据包,并通过RTP流进行传输。在RTP数据包中,DTMF信号被封装为特定的RTP事件类型,并携带了DTMF信号的相关信息,如事件编号和持续时间。 3. Inband方式: - 协商过程:Inband方式不需要在SDP消息体中明确指定,而是通过使用支持音频编解码器的媒体流传输DTMF信号。 - 数据包差异:在Inband方式中,DTMF信号被直接混合在音频流中传输。DTMF信号以音频的形式发送,与语音信号一起传输。这种方式要求音频编解码器能够支持传输音频和DTMF信号。 这三种方式在数据包中的差异主要体现在编码和传输方式上。INFO方式将DTMF信号封装在SIP INFO消息中,RFC 2833方式通过RTP数据包传输DTMF信号,而Inband方式将DTMF信号与音频信号混合在一起进行传输。 选择使用哪种方式取决于设备和服务器的支持以及网络环境的要求。RFC 2833方式通常被认为是最常用的方式,因为它与音频流分离,可以更灵活地处理和编解码。INFO方式适用于带宽受限或网络不稳定的情况下。而Inband方式则要求设备和服务器能够支持传输音频和DTMF信号。 希望这个解释对您有所帮助!如果您还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值