FreeSWITCH在会议室中持续播放音频文件

最近遇到一个客户需求,希望在会议室建立起来后,自动播放一段指定的声音。

已知会议室命令,假设建立起一个会议室号码3000,很容易实现以下功能:

一、播放一个声音文件一次

conference 3000 play /home/test.wav

二、播放一个声音文件二次

conference 3000 play file_string:///home/test.wav!/home/test.wav

三、播放不同的声音文件(原理同二)

conference 3000 play file_string:///home/test0.wav!/home/test1.wav

四、持续不停的播放一个声音文件

呃……其实绕弯路的方法是有的,监听会议室播放事件,一旦发现指定会议室的播放结束,就重新放一遍,直到会议室关闭……

有没有更优雅的方法呢?我想到了第一个进会议室的人,如果会议室里只有这一个人,那么TA会一直收到背景音乐的声音……

看看源代码,会议播放接口是一样的,那是为什么呢?

继续看看,啊哈,文件类型不一样!第一个人进会议室,播放的文件是local_stream://类型的!原理明白了,就好实现了……

1.把声音文件放置到合适的位置。

例如:/usr/local/freeswitch/sounds/test/8000路径下。

2.增加本地音频流配置,打开/usr/local/freeswitch/conf/autoload_configs/local_stream.conf.xml文件,增加如下配置:

1 <directory name="test/8000" path="$${sounds_dir}/test/8000">
2 <param name="rate" value="8000"/>
3 <param name="shuffle" value="false"/>
4 <param name="channels" value="1"/>
5 <param name="interval" value="20"/>
6 <param name="timer-name" value="soft"/>

3.执行reload_local_stream test/8000使配置生效。

4.执行conference 3000 play local_stream://test。

OK,试一下,是不是3000里的所有成员都能一直循环听这个声音了呢?



posted @ 2015-07-24 16:30  一沙世界  阅读(3493)  评论(0编辑  收藏  举报