博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FreeSWITCH检测DTMF数据的方法
阅读量:7119 次
发布时间:2019-06-28

本文共 850 字,大约阅读时间需要 2 分钟。

一、RFC2833

1. 介绍:

RFC2833为带内检测方式,通过RTP传输,由特殊的rtpPayloadType即TeleponeEvent来标示RFC2833数据包。同一个DTMF按键通常会对应多个RTP包,这些RTP数据包的时间戳均相同,此可以作为识别同一个按键的判断依据,最后一包RTP数据包的end标志置1表示DTMF数据结束。
另外,很多SIP UA默认的TeleponeEvent都为101,但可以人为修改,这时要求在进行RFC2833 DTMF检测之前需事先获取SDP协商的TeleponeEvent参数。
2. 配置:
这是FreeSWITCH默认的DTMF检测配置。

二、SIPINFO

1. 介绍:

SIPINFO为带外检测方式,通过SIP信令通道传输DTMF数据。这种方式甚至比RFC2833更有效。但是由于SIP信令和RTP收发采用的是不同的端口,所以可能会造成收到DTMF和实际的声音不同步。
2. 配置:
修改profile,例如sip_profiles/internal.xml。

 

三、INBAND

1. 介绍:

INBAND为带内检测方式,而且与普通的RTP语音包混在一起传送。在进行INBAND DTMF检测时唯一的办法就是提取RTP数据包进行频谱分析,经过频谱分析得到高频和低频的频率,然后查表得到对应的按键,进行频谱分析的算法一般为Goertzel,这种算法的实现也很简单,网上有很多可以下到,但建议采用定点算法,浮点算法效率很低。
2. 配置:
2.1 修改profile,例如sip_profiles/internal.xml。

2.2 在需要使用的dialplan中增加

 

附录

DTMF

全称:Dual Tone Multi Frequency(双音多频)
定义:由高频音和低频音的两个正弦波合成表示数字按键(0~9 * # A B C D)

转载于:https://www.cnblogs.com/yoyotl/p/7054428.html

你可能感兴趣的文章
LAMP架构一
查看>>
hibernate中多对多关系映射时的xml文件
查看>>
PhalApi-OSS--阿里云OSS包
查看>>
stripslashes和addslashes的使用方法
查看>>
OSChina 周二乱弹 —— 从此鲜肉成屌丝
查看>>
OSChina 周六乱弹 —— 能胖出腹肌来
查看>>
SVN 命令测试
查看>>
oracle Interval 分区维护与管理要点
查看>>
Exsi6.5修改主机密码
查看>>
jdk自带4种多线程创建方式
查看>>
EJB3.0 Timer
查看>>
Scanner和BufferedReader从控制台读取输入数据
查看>>
详细介绍Linux shell脚本基础学习(一)
查看>>
存储引擎和Mysql服务层出现索引信息不一致错误提示
查看>>
LInux下如何挂载光盘找rpm包?
查看>>
java 异常处理
查看>>
MySQL异常
查看>>
写给工程师的十条精进原则
查看>>
前嗅ForeSpider教程:采集图片/视频/资源文件的链接地址
查看>>
远程部署SEP 11.RU5 安装包到 Windows 7 客户端提示“访问被拒”
查看>>