zoukankan      html  css  js  c++  java
  • 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里的所有成员都能一直循环听这个声音了呢?



  • 相关阅读:
    [原创]SQL经验
    DotNetBar技巧经验集合
    正则表达式的那些小角落
    [转]验证数字的正则表达式集
    项目受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何更改
    DateGridView的一些技巧
    个人的CodeSmith和.NetTiers的学习心得及经验总结
    常用代码
    mysql 数据库常用命令
    XP2防火墙拒绝网上邻居访问的解决
  • 原文地址:https://www.cnblogs.com/yoyotl/p/4673911.html
Copyright © 2011-2022 走看看