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里的所有成员都能一直循环听这个声音了呢?



  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    解析看病难看病贵
    [转]微服务概念解析
    OC中几种延时操作的比較
    Android AOP之路三 Android上的注解
    浅析C#中的托付
    图类算法总结
    有关https安全的相关内容介绍
    BZOJ 3684: 大朋友和多叉树 [拉格朗日反演 多项式k次幂 生成函数]
    Codeforces 250 E. The Child and Binary Tree [多项式开根 生成函数]
  • 原文地址:https://www.cnblogs.com/yoyotl/p/4673911.html
Copyright © 2011-2022 走看看