FreeSWITCH中文网,电话机器人开发网 ,微信订阅号:

FreeSWITCH及VOIP,Openser,电话机器人等产品中文技术资讯、交流、沟通、培训、咨询、服务一体化网络。QQ群:293697898

实时将FreeSWITCH通话中的语音媒体流导出到其它程序或机器中mod_rst


tags:实时流 FreeSWITCH 媒体流 创建时间:2023-01-31 08:47:44

过节期间把以前分享的mod_rst改了下实时将FreeSWITCH通话中的语音媒体流导出到其它程序或机器中

支持双路音频实时数据通过udp 传输给其它的udp server,从而进行识别或旁路录音等 ``## mod_rst 实时对media bug 数据转发的模块

udp server

接收udp包并写进文件中

协议

//理论上,不需要回应包,但收到包后回一个

//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

License:GPL`

```

在好几年前写了个模块,是半拉子,应该是编译都没通过,但由于事多,当时提交后就没有再进行编写。由于一些朋友的提问,所以重新写了下,提交到了github.

开源应用分两部分:一、mod_rst 用于将实时流通过media bug获取到后通过udp输出;二、udp_server按照协议进行流的收取并写入左右声道的文件中。

安装使用:
1. 将rst.conf.xml拷贝到/usr/local/freeswitch/conf/autoload_configs/rst.conf.xml

2. mod_rst.so拷贝到/usr/local/freeswitch/mod/mod_rst.so

3. 通这fs_cli中 load mod_rst 如无异常可以正常加载

4. 后台启动udp_server

5. 在freeswitch的dialplan中配置路由

<action application="set" data="execute_on_answer='rst serverip serverport'"/>

如不指定serverip、serverport那么自动使用默认的ip/port。

6. 如果是esl连接,那么在inbound模式下中调用时使用 uuid_rst uuid serverip serverport即可

地址: https://github.com/nwaycn/rst.git



上海老李,QQ:1354608370,FreeSWITCH QQ群: