DTMF学习笔记

概念
 DTMF是dual tone multi frequency的缩写,中文称之为“双音多频”,它是由高频群和低频群组合而成的;“多音双频”中规定,在按键面板中,横向和纵向各占有4个信号,横向的为高频信号,纵向的为低频信号,这样的话,在面板中组合起来,总共有16个频率信号;
而按键的数字是由一个高频信号和一个低频信号组合而成;所以DTMF信号总共有16个,也就是说,总共有16个字符可以通过DTMF表现出来;

IP网络中如何传输DTMF信号

DTMF信号是支持在网络中传输的,目前广泛支持的传输方式有两种;

  1. 使用sip信令进行传输,将DTMF的信息封装在info类型的sip协议包中,这种方式目前存在争议,使用的场景比较少;
  2. 使用RTP协议进行传输,在负载(playload)信息中携带DTMF数据,然后进行网络的传输;目前这种方式使用比较广泛,我们重点介绍这种方法

     RFC2833协议对DTMF在网络中的传输方式有相关的规定,在协议中,规定DTMF使用RTP协议作为传输协议,RTP协议头中的PT字段值97用来表示负载中的内容为RFC2833格式的数据;所以在解析RTP头部信息的时候,获取到PT为97,则需要按照RFC2833的协议格式来解析负载的内容;

    RFC2833格式:
    在这里插入图片描述
    如图,RFC2833定义了以上字段,总共占有4Byte的数据长度;接下来我们针对于每个字段进行介绍:
    event:占有8bit长度,说明该数据包的事件类型,也就是上面提到的16中事件;
    0-9对应于数字0-9,10对应于“*”,11对应于“#”,12对应于A,13对应于B,14对 应于C,15对应于D,16对应于Flash;
    E:占用1bit长度,说明当前字段事件是否结束,当该字段设置为1的时候,说明本次事件 已经结束
    R:占用1bit长度,该字段保留,但是规定发送方必须设置为0
    volume:占用6bit字节长度,在dtmf数字和其他表示音调的事件中,该字段表示音调的功率电平,在删除符号以后,dBm0表示;有效的电频功率为0~-36;该字段仅对DTMF定义,其他事件,直接设置为0;
    duration:占用16bit长度,此事件的持续事件,以时间戳为单位,因此,事件在RTP时间戳标识的瞬间开始,并且一直持续到该阐述指示的时间。该事件可能已经结束,也可能尚未结束。

你可能感兴趣的:(voip解密,网络协议)