在RTP媒体传输中携带DTMF信号。
该方法是将DTMF信号和媒体流一样,用RTP包来传输,因而没有DTMF信号和媒体流不同步的问题,使用H323信令的VOIP就是采用该种方法,相对来说比较成熟。
而其中又分In band和Out of band(RFC2833)两种。
In Band DTMF
In Band DTMF是指直接将DTMF的音频数字信号不经任何处理直接打成RTP包在IP网中传输。其中可能和用户的语音媒体流混合(mix)在一起传输。程序要获知哪个包有DTMF信号,是什么DTMF信号,必须实时检查每个RTP包里面的媒体流数据,分析它的频域。
Out of Band DTMF(RFC 2833)
Out of Band DTMF是DTMF信号用专门的RTP包进行标识,在RTP包的头域中就可得知该包是DTMF包,并且知道是什么DTMF信号。RFC2833专门对此有定义。
给你一个中断服务程序编写的样式:
#include "reg51h"
void Init(void)
{
TMOD = 0x01; //十六位定时器
TH0 = 60000/256; //定时器计数器赋值,12MHz晶振55ms一次中断
TL0 = 60000%256;
ET0 = 1; //开定时器0中断允许
PT0 = 0; //中断优先级为0
return;
}
void Timer0(void) interrupt 1 //定时器中断0
{
TL0 = TL0|(60000%256);//重装初值
TH0 = 60000/256; //定时器计数器赋值,12MHz晶振50ms一次中断
// 你的代码(如信号引脚取反==) 通过判断重装不同的初值可以改变占空比
return;
}
两个不同频率的信号不能在同一个引脚上输出,因为谈频率,就得是周期性的!
给你个单片机论坛地址:>
传统的DTMF发生器芯片有Hotel公司的HT9200A/B、Mitel公司的MT8880等。部分MCU也内置了DTMF发生器,其DTMF信号产生原理可简述如下:
将振荡器产生的高频振荡信号分别送至两个计数器,当计数器达到预设的值时,产生一次反转信号输出,形成低频方波。其中计数器寄存器可用软件设置且有自动装载功能。通过这两个计数器可设置输出的两路方波频率。软件编写控制程序时,只须将对应频率的计数值写入控制寄存器便可自动产生所需的频率信号。
DTMF的意思是双音多频,是Dual-Tone Multi Frequency的缩略语,我们把这个简写拆开来看,首先,看到单音节词dual,它由双音节字母ua组成,读作ˈdjuːəl,它表示双的、双重的,而tone也有双元音音标əʊ,读作təʊn,表示语气、语调的意思,所以dual-tone表示的就是双音的;
multifrequency,有我们很熟悉的前缀multi对不对,表示的是多种多样的意思,而frequency表示的是频率,所以multi frequency表示的是多频的,As an alternative to using speech recognition in your voice application,you can use DTMF,作为在语音应用程序中使用语音识别的备方案,您可以使用双音多频,DTMF双音多频,你认识了吗?
摘要:本文介绍了DTMF解码芯片MT8870的功能和特点,给出了在解码器中与89C51单片机的接口电路,说明了解码器的工作原理抗干扰措施。
相关(即引脚图)参见网页>
以上就是关于VOIP DTMF问题全部的内容,包括:VOIP DTMF问题、如何用51系列单片机产生DTMF双音频信号,核心是关于怎样用C语言写两个中断程序、请问有哪位知道DTMF信号发生器的工作原理谢谢!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)