FreeSWITCH快速录音

一、背景

测试人员反映FreeSWITCH录音不及时,需要大约5秒的时间才能捕获到RTP流。

二、原因及解决

查了下资料,FreeSWITCH默认的录音参数配置是开启缓冲的,

即RTP流大小到达65536字节写一次wav文件,想更接近实时的获得wav文件,关闭缓冲区即可。

...
<action application="set" data="enable_file_write_buffering=false"/>
<action application="record_session" data="/tmp/test.wav"/>
<!--<action application="info"/>-->
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
...
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要开启FreeSWITCH录音功能并将录音保存至MySQL数据库,需要按照以下步骤进行操作: 1. 在FreeSWITCH的配置文件中设置录音路径和格式。在“vars.xml”文件中添加以下配置: ``` <XML> <X-PRE-PROCESS cmd="set" data="recordings_dir=/path/to/recordings"/> <XML> ``` 其中,/path/to/recordings是录音文件保存的路径。 2. 在FreeSWITCH的“autoload_configs”目录下创建一个名为“mod_mysql.conf.xml”的文件,并添加以下配置: ``` <configuration name="mod_mysql.conf" description="MySQL Configuration"> <settings> <param name="odbc-dsn" value="DSN"/> <param name="odbc-table" value="recordings"/> <param name="odbc-username" value="username"/> <param name="odbc-password" value="password"/> </settings> </configuration> ``` 其中,DSN是ODBC数据源的名称,recordings是表名,username和password是连接数据库的用户名和密码。 3. 在FreeSWITCH的“autoload_configs”目录下创建一个名为“mod_callcenter.conf.xml”的文件,并添加以下配置: ``` <configuration name="mod_callcenter.conf" description="Callcenter Configuration"> <settings> <param name="cdr-db-dsn" value="odbc://DSN"/> <param name="cdr-table" value="recordings"/> <param name="cdr-username" value="username"/> <param name="cdr-password" value="password"/> </settings> </configuration> ``` 其中,DSN是ODBC数据源的名称,recordings是表名,username和password是连接数据库的用户名和密码。 4. 在FreeSWITCH的“dialplan”中添加录音处理逻辑。在“default.xml”文件中添加以下配置: ``` <extension name="record_call"> <condition field="destination_number" expression="^(\d{3})$"> <action application="answer"/> <action application="start_dtmf"/> <action application="playback" data="ivr/ivr-enter-ext-of-person.wav"/> <action application="read" data="exten_to_dial 3 6 7000 #"/> <action application="start_record" data="$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}_${caller_id_number}_${dialed_extension}.wav"/> <action application="bridge" data="{sofia/internal/${exten_to_dial}@default}"/> <action application="stop_record"/> <action application="hangup"/> </condition> </extension> ``` 其中,$${recordings_dir}是录音保存的路径,在start_record应用程序中使用了时间戳、呼叫方号码和被叫方号码作为文件名。 5. 创建MySQL表以存储录音文件。可以使用以下SQL语句创建表: ``` CREATE TABLE recordings ( id INT NOT NULL AUTO_INCREMENT, filename VARCHAR(255) NOT NULL, caller_id VARCHAR(255) NOT NULL, dialed_extension VARCHAR(255) NOT NULL, start_time DATETIME NOT NULL, end_time DATETIME NOT NULL, duration INT NOT NULL, PRIMARY KEY (id) ); ``` 6. 启动FreeSWITCH并测试录音。拨打测试号码并录制音频,然后检查MySQL数据库中的录音表以确保录音已保存。 以上是将FreeSWITCH录音保存至MySQL数据库的操作步骤。需要注意的是,这只是基本的录音配置,具体的录音逻辑和处理方式可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值