您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 对于VoIP与中继通道的语音交互
1Keygoe交换机系列产品完全支持带外DTMF的检测和发送。IP业务中的DTMF分为带内(InBand)和带外(OutofBand)两种。带外DTMF1、是VoIP协议中定义的一系列用来描述DTMF信号的分组消息。2、常用的包括H.323协议下的H.245UserInputIndication消息、SIP协议下的INFO消息。带外DTMF通过IOData命令和事件XMS_IO_TYPE_VOIP_RTPDTMF/XMS_IO_TYPE_VOIP_RTPTONE来完成,应用程序通过函数XMS_ctsSendIOData()可以主动向对端发送带外DTMF信号,在收到对端发送的带外DTMF信号时,应用程序会收到XMS_EVT_RECVIODATA事件。对于带内DTMF,需以录放音类似的方法处理。需为VoIP设备绑定语音设备,之后对该语音设备进行传统DTMF的相应操作。带内DTMF1、指的就是传统的DTMF,在话路中以时域信号形式在语音带内传输;2、包括RFC2833/4733标准定义的以RTP分组格式封装的DTMF消息;由于带内DTMF的发送和放音类似,所以在向VoIP设备绑定的语音设备发送DTMF时,需要先对语音设备调用XMS_ctsSetParam()设置语音输出通道的混音来源为IP语音通道+放音通道。//向VoIP设备绑定的语音设备发送DTMF时,调用XMS_ctsSetParam()设置语音输出通道的混音来源为IP语音通道+放音通道。CmdParamData_Voice_tVocMixParam;memset(&VocMixParam,0,sizeof(CmdParamData_Voice_t));VocMixParam.m_u8OutputCtrlValid=1;VocMixParam.m_VocOutputControl.m_u8OutputType=XMS_VOC_OUTPUT_FROM_MIXER;VocMixParam.m_VocOutputControl.m_u16FixGain=1024;VocMixParam.m_VocOutputControl.m_MixerControl.m_u8SRC1_Ctrl=XMS_MIXER_FROM_PLAY;VocMixParam.m_VocOutputControl.m_MixerControl.m_u16SRC_ChID1=g_deviceVoc[iDeviceVoc].device.m_s16ChannelID;VocMixParam.m_VocOutputControl.m_MixerControl.m_u8SRC2_Ctrl=XMS_MIXER_FROM_IP;VocMixParam.m_VocOutputControl.m_MixerControl.m_u16SRC_ChID2=g_deviceVoIP[iDeviceIP].device.m_s16ChannelID;XMS_ctsSetParam(g_acsHandle,&g_deviceVoc[iDeviceVoc].device,VOC_PARAM_UNIPARAM,sizeof(VocMixParam),&VocMixParam);用于混音的语音设备和VoIP设备必须位于同一个DSP上。网关对VoIP设备和对语音设备调用XMS_ctsSetParam()设置混音时的参数类型和参数内容并不相同。前者VoIP设备参数类型为VOIP_PARAM_RTPMIXER,参数为MixerControlParam_t结构,后者语音设备参数类型为VOC_PARAM_UNIPARAM,参数为CmdParamData_Voice_t结构。对于VoIP与中继通道的语音交互(如各类IP网关应用)1、将VoIP设备的输出音源设为语音设备输入(Input),XMS_MIXER_FROM_INPUT;2、将语音设备的输出(Output)设为VoIP设备,MixerControlParam_tVocCmdP;memset(&VocCmdP,0,sizeof(MixerControlParam_t));VocCmdP.m_u8SRC1_Ctrl=XMS_MIXER_FROM_INPUT;VocCmdP.m_u16SRC_ChID1=g_deviceVoc[iDeviceVoc].device.m_s16ChannelID;ret=XMS_ctsSetParam(g_acsHandle,&g_deviceVoIP[iDeviceIP].device,VOIP_PARAM_RTPMIXER,sizeof(VocCmdP),&VocCmdP);2RetCode_tRet=LinkDevice(&g_deviceVoIP[iDeviceIP],&g_deviceVoc[iDeviceVoc]);之后再通过函数XMS_ctsLinkDevice()将绑定的语音设备与其他中继设备进行时隙连接,可完成IP与其他中继设备语音的交互对于IP设备加入会议的功能,不需要额外借助语音设备,只需要直接将IP加入会议设备即可。IP与传真VoIP模块支持SIP协议下的IP传真功能,包括T.38/udptl和T.30透传两种模式。在呼叫成功建立以后,应用程序可通过XMS_ctsSendIOData函数向VoIP模块发送XMS_IO_TYPE_VOIP_FAXSTART事件启动传真模式协商,协商完成后应用程序会收到相同的事件类型,即表示传真模式正常启动。XMS_IO_TYPE_VOIP_FAXSTART事件参数为DJ_U8类型,值为0表示启动T.38/udptl传真模式,值为1表示启动T.30透传模式(G.711编码)。传真结束后可再次向VoIP模块发送XMS_IO_TYPE_VOIP_FAXSTOP事件返回正常通话模式。IP与语音当VoIP呼叫建立后,DSP模块将使用内部缺省的IP专用语音通道用于RTP媒体数据的接收和发送。该语音通道【IP专用语音通道】与DSP模块通常意义的语音设备并不相同,不能用于录放音等操作。当需要对VoIP设备进行录放音或中继转接等功能时,必须借助语音设备的混音来完成,直接对VoIP设备调用XMS_ctsPlay()、XMS_ctsRecord()等函数是错误的。混音操作通过调用函数XMS_ctsSetParam()设置混音参数(MixerControl)来实现。对于IP放音在混音属性中将VoIP设备的输出音源设定为语音的放音设备(XMS_MIXER_FROM_PLAY)MixerControlParam_tVocCmdP;memset(&VocCmdP,0,sizeof(MixerControlParam_t));VocCmdP.m_u8SRC1_Ctrl=XMS_MIXER_FROM_PLAY;VocCmdP.m_u16SRC_ChID1=g_deviceVoc[iDeviceVoc].device.m_s16ChannelID;XMS_ctsSetParam(g_acsHandle,&g_deviceVoIP[iDeviceIP].device,VOIP_PARAM_RTPMIXER,sizeof(VocCmdP),&VocCmdP);对于IP录音在函数XMS_ctsRecord()的录音混音属性中将音源指定为VoIP设备(XMS_MIXER_FROM_IP)RecordProperty_trecordProperty;memset(&recordProperty,0,sizeof(RecordProperty_t));recordProperty.m_MixerControl.m_u8SRC1_Ctrl=XMS_MIXER_FROM_PLAY;recordProperty.m_MixerControl.m_u16SRC_ChID1=pVocDevID-m_s16ChannelID;recordProperty.m_MixerControl.m_u8SRC2_Ctrl=XMS_MIXER_FROM_IP;recordProperty.m_MixerControl.m_u16SRC_ChID2=pIPDevID-m_s16ChannelID;//XMS_MIXER_FROM_IP;XMS_ctsRecord(g_acsHandle,pVocDevID,&recordProperty,NULL);
本文标题:对于VoIP与中继通道的语音交互
链接地址:https://www.777doc.com/doc-2465643 .html