DTMF采用RFC2833进行带内传输的实现

摘要:    本文主要说明采用RFC2833标准进行DTMF传送的方法和格式。
关键字:RFC2833,RTPDTMF
 
一.IP电话传送DTMF的方式
       DTMF就是双音多频,我们日常生活中拨打电话的过程中经常会用到,如拨打用户的分机号码,输入帐号和密码等。而随着IP电话的大量使用如何实现传送DTMF成为IP电话中的一个技术问题。
目前传送DTMF信号普遍有两种方式:带内传送和带外传送。
其中带外传送主要通过将DTMF消息封装到协议中进行传送,如H323协议中可以通过Q931H245进行传送DTMF
而带内传输主要有两种:透明传送和RFC2833方式。所谓透明传送(也可叫中继传输(relay))就是将DTMF音作为语音一起打包到RTP中进行发送。由于网络丢包的影响,有时会造成DTMF信号丢失,而且DTMF音混合在语音包中,容易产生偏差,造成信号失真。所以目前普遍采用的是RFC2833方式,就是将DTMF数字按照一个的规则和格式组成一个数据包,然后封装到RTP中发送。接收端接收后进行解析,再还原成相应的DTMF信号,这种方式的优点是对丢包的容错性强以及识别差错率低。
 
.RTP
       在介绍RFC2833前,先来了解一下RTPReal Time Protocal),该协议可参见RFC1889RTP协议是IP电话中以及NGN中最经典的协议。无论采用H323H248MGCP还是SIP,这些都属于信令层的协议,他们之间进行互通、交换其最终目的是为了实现媒体流的收发。而所有的媒体流都是采用RTP协议,无论是视频,语音还是图象,包括本文所提到的DTMF都是建立在RTP的基础上的。
RTP协议用以传送实时数据。RTP协议通常运行在UDP层之上,二者共同完成运输层的功能。UDP提供复用及校验和服务,也就是通过分配不同的端口号传送多个RTP流。协议规定,RTP流使用偶数(2n)端口号,相应的RTCP流使用相邻的奇数(2n+1)端口号。因此,应用进程应在一对端口上接收RTP数据和RTCP控制数据,同时向另一对端口上接收RTP数据和RTCP控制数据。
 
       RTP分组由RTP头部和净荷数据组成;RTP分组由UDP包来进行传输,通常一个UDP包仅含一个RTP分组,若采用一定的封装方法,也可以包含多个RTP分组;其中的RTP净荷就是RTP传送的语音数据。RTP分组的头部的格式如表1
 
0-1
2
3
4-7
8
9-15
16-31
V
P
X
CC
M
PT
序号
时戳
同步源( SSRC )标识
分信源( CSRC )标识( 0~15 个)
 
1 RTP分组头部格式
 
       RTP分组头部的各字段含义为:
 
1VRTP版本号。为“10”。
2P:填充指示位。
       P为“1”时表示分组结尾含有1个或多个填充字节。
3X:扩展指示位。
       X为“1”时,则表示固定头部后还有一个扩展头部,这种情况较复杂,很少使用。
4CCCSRC计数。
       指示固定头部后的CSRC的个数
5M
       由应用文档解释,通常不用。
6PT:净荷类型
       表示RTP分组的净荷类型。我们常用的有:
"0":G711u
"8":G711A
"4":G723.1
"18":G729
"96":RFC2833
7.序号:
       序号顾名思义就是表示RTP分组的次序。初值为随机数,每发送一个增加1。可供接收方检测分组丢失和恢复分组次序。
8.时戳:
       表示RTP分组第一个字节的取样时刻。其初值为随机数,每个采用周期加1。如果每次传送20ms的数据,由于音频的采样频率为8000Hz,即每20ms160次采样,则每传送20ms的数据,时戳增加160
9SSRC:同步源标识(Synchronous Source
       表示信号的同步源,其值应随机选择,以保证同一个RTP会话中任意两个同步源的SSRC标识不同。
10CSRC:分信源标识(Contributing Source
       CSRC标识由混合器插入,其值就是组成复合信号的各个分信号的SSRC标识,用以标识各个组成分信号的信源。RTP分组的头部最多可以包含15CSRC标识,其数目由CC字段指明。
 
三.RFC2833
1.标准格式
RFC2833(RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals)IETF制定的,它规定了传送DTMF数字以及其他电话音和信号的标准。
0-7
8
9
10-15
16-31
event 
E
R
volume
 duration
 
2 RFC2833 净荷格式
2给出RFC2833的标准格式
events: 事件号,8位,用于说明本数据包的事件。RFC2833除了传送DTMF信号外还能传送传真,调制解调器,MF信号等。本文只关注DTMF信号,有关DTMF的事件看见表2
Event
encoding ( 十进制 )
0—9
0--9
* 
10
# 
11
A—D
12—15
Flash
16
2DTMF的事件
volume: 音量,6位,用于说明DTMF信号的音频功率级,范围从(0~ -63dbm)。有效的DTMF范围是从0-36 dBm0;低于-55 dBm0则必须丢弃。
duration:数字信号的宽度,16位,以时戳单元表示。这样,事件从RTP时间戳表示的瞬间开始,并一直持续到该参数表示的长度。事件可以已经结束也可以没有结束。以8000赫兹
取样来说,本字段最长可以表示8秒。
E:结束位,1位,若设置为1表明数据包中含有事件的结束。因此上述的duration参数即测定了事件的完整宽度。
R:本字段为以后使用而保留。发送方必须将它设为0,接收端则应忽略它。
 
2.举例
 
3 Sniffer抓包截图
3是采用Sniffer软件所捕获的数据包,从上面可以看到RTP数据为:80 60 03 8e 7d 8b 6a d5 5a 12 02 80 05 f0。我们将该报数据按照格式还原如表3
 
0-1
2
3
4-7
8
9-15
16-31
V
P
X
CC
M
PT
序号
2
0
0
0
0
96=0x60
910  (03 8e)
时戳
2106288853 (7d 8b 6a d5)
同步源( SSRC )标识
5a 12 02 80
Event 
E
R
Volume
 Duration
05
1
1
0
 











3 DTMF ‘5’的数据格式
在表3中净荷类型为96,这是RFC2833中规定的,在实际情况下可以自己定义类型,只要通信双方能够确认即可。
对于同一个DTMF信号,其时戳是相同的,这样接收方可以通过判断时戳来剔除冗余信息。
 
3. 安全性





¨   R
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SIP中,DTMF(Dual Tone Multi-Frequency)信号的协商可以使用两种不同的方式:INFO和RFC 2833。这两种方式在协商过程和数据包中的差异如下: 1. INFO方式: - 协商过程:DTMF的协商是通过SDP(Session Description Protocol)消息体中的m行和a行属性来指定。 - 数据包差异:使用INFO方式时,DTMF信号被编码为SIP INFO消息。SIP INFO消息是一个DTMF信号的SIP信令消息,可以通过SIP信令通道传输DTMF信号以文本的形式封装在SIP INFO消息的消息体中,通常使用RFC 2833的DTMF事件字符进行编码。 2. RFC 2833方式: - 协商过程:DTMF的协商是通过SDP消息体中的m行和a行属性来指定,其中a行中的fmtp属性用于指定RFC 2833 DTMF传输的相关参数。 - 数据包差异:使用RFC 2833方式时,DTMF信号被编码为RTP(Real-time Transport Protocol)数据包,并通过RTP流进行传输。在RTP数据包中,DTMF信号被封装为特定的RTP事件类型,并携DTMF信号的相关信息,如事件编号和持续时间。 INFO方式和RFC 2833方式都可以用于传输DTMF信号,但存在一些差异。INFO方式将DTMF信号封装在SIP信令中,而RFC 2833方式将DTMF信号封装在RTP数据包中。INFO方式的优势在于它可以通过SIP信令通道传输,不需要额外的RTP流,因此在一些网络环境下更容易实现RFC 2833方式的优势在于它与音频流分离,可以更灵活地进行处理和编解码,同时在网络上的延迟和抖动对DTMF信号的影响较小。 具体选择使用哪种方式取决于通信设备和服务器的支持以及网络环境的要求。 希望这个解释对您有所帮助!如果您还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值