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



  • 相关阅读:
    Win32应用中创建多窗口
    同时控制多个UIScrollView对象
    在后台代码中设定控件的Visibility
    VC中使用GDI+
    悬垂指针(Dangling pointer)和野指针(Wild pointer)
    在Windows下通过命令行界面编译并生成 .exe
    C++流重定向到文件
    读写文本文件和二进制文件——二进制模式
    使用MahApps.Metro
    WPF之GUI编写
  • 原文地址:https://www.cnblogs.com/yoyotl/p/4673911.html
Copyright © 2011-2022 走看看