SIP DTMF 有三种方式
1) 带外方式, 也就是指传DTMF信号不走RTP, 通过信令的方式。用的比较多的是 sip INFO消息传输。
2) 带内方式
a) 直接把DTMF 信息当做语音信号处理,但是他和语音的频率不同,在接收端可以根据频率把这16个电话按键区分出来。
但是不是所有的Codec都能够携带DTMF, G729 好像就不可以携带DTMF。所以有RFC2833 带内方式的DTMF。
b) 通过RTP传输,但是和语音分开编码,和语音使用不同的RTP payload 值来区分,所以在sip 信令协商的时候会指定哪一种payload是DTMF的payload。比如说从96~127 中取一个协商为DTMF的payload 类型。
在RFC 2833 中对DTMF 事件的定义除了16个电话按键外还有其他的,一直到173
example:
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15,66,70
payload type 101 为 DTMF 编码的payload, 0-15, 66, 70 这些个DTMF事件的编码的使用payload 101