现在的位置: 首页 > 综合 > 正文

SIP DTMF

2019年03月11日 ⁄ 综合 ⁄ 共 1223字 ⁄ 字号 评论关闭

SIP DTMF

SIP通常有三种支持DTMF的方式

一种是带外(out of band),采用SIP的INFO消息。在这种情况下,DTMF数字如0,1,3等在SIP的INFO消息里携带。

一种是带内(in band),就是通过RTP中的Codec,例如G.711。SDP中Payload Type或者Codec的定义见RFC3551

不是所有的Codec都能够携带DTMF。比如G.729,因为压缩得厉害,就不能够携带DTMF。所以RFC2833(注:RFC4733RFC2833有更新)定义了一种专门的Payload Type来传递DTMF信号。从SIP的角度看RFC2833定义的方式也是属于带内,因为它是在RTP流里面传而不是在信令里面传。但从RTP的角度看,他属于一种特殊的Payload Type,这种类型定义为“telephone-event”。RTP的角度看这种方式可能是带外,因为是在语音或视频Codec之外传DTMF。(Payload Type和Codec我认为是等价的,一回事,不知对不对。)

RFC3551定义了96-127的Payload Type是Dynamic的。就是说这个范围内的数字本身没有定义Codec或Payload Type。

下面是截取的SIP消息中的SDP Body中的Payload Type部分。其中8和101代表的是两种Payload Type。8是静态的类型,代表”PCMA/8000”。101在96-127之间,是动态类型。需要直到后面的telephone-event才知道具体的Payload Type。

m=audio 2332 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

按惯例101代表telephone-event,但只是惯例,最初大概是因为Cisco的设备用101代表telephone-event(见这里)。如下面消息,把101换成96在逻辑上和上面的消息是等价的。

m=audio 2332 RTP/AVP 8 96
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15

关于SIP的SDP Offer/Answer模型,参见RFC6337。在RFC4317中也有SIP的SDP Offer/Answer例子。

抱歉!评论已关闭.