A real time stream trans to other application or server for FreeSWITCH
get media bug data send it to an udp server
receive udp packet and write into file
实时将FreeSWITCH通话中的语音媒体流导出到其它程序或机器中 支持双路音频实时数据通过udp 传输给其它的udp server,从而进行识别或旁路录音等
实时对 media bug 数据转发的模块
接收udp包并写进文件中
由于很多人说不能用,所以试了一下,开发是在freeswitch 1.10.8下开发,二进制包也是在1.10.8下打的,如图
//理论上,不需要回应包,但收到包后回一个
//ACK :478525a8-8263-4550-b18c-d027d11c9865
//如果是数据则格式如下:
//DATA:UUID:FLAG:PAYLOAD:LENGTH:xxx
//如 DATA:478525a8-8263-4550-b18c-d027d11c9865:R:00:160:xxxxx
//uuid为FS的session_id
//FALG为FS在channel中的read/write,用R或W
//payload为编码,如00,pcmu,08 PCMA,18 G729 ,04 G723, 10 PCM
//每次收到包后,需要更新下时间,如果某条通道不论read write长时间没有包过来,则我们需要自行BYE
//如果是开始需要送udp包,则发:
//INV :UUID:CALLER:CALLEE
//如:
// INV :478525a8-8263-4550-b18c-d027d11c9865:18621575908:02131570530
//如果是挂机则发:
//BYE :UUID
//如
// BYE :478525a8-8263-4550-b18c-d027d11c9865
INVITE 包格式: INV :UUID:CALLER:CALLEE:LOCAL_READ_PORT:LOCAL_WRITE_PORT 如: INV :478525a8-8263-4550-b18c-d027d11c9865:18621575908:02131570530:5004:5005
ACK 包格式: ACK :UUID:SERVER_READ_PORT:SERVER_WRITE_PORT 如: ACK :478525a8-8263-4550-b18c-d027d11c9865:6004:6005 在这里意味着由5004向 server:6004端口发包 5005向 server:6005端口发包
-
将 rst.conf.xml 拷贝到
/usr/local/freeswitch/conf/autoload_configs/rst.conf.xml
-
mod_rst.so 拷贝到
/usr/local/freeswitch/mod/mod_rst.so
-
通这 fs_cli 中
load mod_rst
如无异常可以正常加载 -
后台启动 udp_server
-
在 freeswitch 的 dialplan 中配置路由
<action application="set" data="execute_on_answer='rst serverip serverport'"/>
如果是 fs 1.10.10 版本,要去掉单引号,否则总提示找不到application
<action application="set" data="execute_on_answer=rst serverip serverport"/>
如不指定 serverip、serverport 那么自动使用默认的 ip/port。
-
如果是 esl 连接,那么在 inbound 模式下中调用时使用
uuid_rst uuid serverip serverport
即可 -
如果是要将
<param name="write-hex" value="true"/>
配为 true,那么需要先创建一个mkdir /opt/nway/records/ -p