freeswitch笔记(7)-放音控制
来电时,播放音乐是一个很常用的功能,下面是一些相关的命令:
一、单次播放playback
originate user/1000 &playback(ivr/8000/ivr-welcome_to_freeswitch.wav)
二、指定次数的循环播放loop_playback
注:这个方式,直接用命令在freeswitch控制台中,一直没尝试成功
originate user/1000 &loop_playback(+2 ivr/8000/ivr-welcome_to_freeswitch.wav)
总是报错缺少文件数据参数,另外发现一个可以让freeswitch瞬间崩溃的方法: originate user/1000 &loop_playback +2 ivr/8000/ivr-welcome_to_freeswitch.wav,把括号去掉,在Freeswitch Console中输入 ,马上就崩了(windows 10环境+freeswitch 1.6.18)
官方用diaplan xml配置的方式如下:
<action application="loop_playback" data="+3 ivr/8000/ivr-welcome_to_freeswitch.wav"/>
如果使用esl-client,可以这样写:
SendMsg msg = new SendMsg();
msg.addCallCommand("execute");
msg.addExecuteAppName("loop_playback");
msg.addExecuteAppArg("+2 " + prompt);
CommandResponse resp = context.sendMessage(msg);
三、无限循环播放endless_playback
originate user/1000 &endless_playback(ivr/8000/ivr-welcome_to_freeswitch.wav)
四、多个文件依次顺序播放file_string
originate user/1000 &playback(file_string://ivr/8000/ivr-welcome_to_freeswitch.wav!ivr/8000/welcome_to.wav)
注:file_string:// 这个开头不能省略,后面的文件用!拼起来即可
五、暂停/重头开始播放
循环播放过程中,可以用uuid_break将音乐强制从头开始播放(注:这个命令的命名方式很玄学,明明叫break,但是并不能中断播放,叫restart_playback或许更适合)
真正要暂停,可以用pause命令,恢复暂停继续播放用restart
这些命令可以在esl中直接调用。
注意:一旦音乐播放起来,没有方法可以让音乐彻底停止,又不影响通话(除非把当前Leg,bridge到其它leg之类),有一个uuid_kill方法,这个方法会中断该Channel上的所有事件,包括通话,也不满足要求.
六、监听播放开始/结束事件
PLAYBACK_START
PLAYBACK_STOP
这2个事件对应音乐的开始播放/播放完成,值得一提的是,对于循环播放endless_playback,这一组事件,会重复一直不停的触发,直到电话挂断。
参考文章:
1、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools:+playback
2、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+loop_playback
3、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+endless_playback
4、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+file_string
freeswitch笔记(7)-放音控制的更多相关文章
- alsamixer + alsactl 控制放音通道
1 使用alsamixer的gui界面配置放音(控制OUT1,OUT2的音量); 2 退出alsamixer,使用alsactl store生成配置文件,文件位于/etc/asound.state; ...
- c#录音和放音,超简单!不用DirectX
最近在做android与C#录音并互相通信的小东西.但是卡在C#录音这儿了.找了好久,说的都是DirectX,可是我总是安装不上,这才找到了这个简单的录音方法.当然,如果你想要录得好并且处理音频,那还 ...
- .NET MVC 学习笔记(七)— 控制input控件
.NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ...
- H5之audio标签放音兼容所有浏览器方法
前端交流群,群文件提供大量文档.书籍和资料.期待你的加入!群号:127768464 由于项目需要,最近刚做了一个网页放音的功能,使用到了H5新标签<audio></audio> ...
- Robot Operating System (ROS)学习笔记4---语音控制
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/260 一.语音识别包 1.安装 ...
- EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO
0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机. 在该从机中定义了线圈寄存器.当中线圈寄存器地址较低的4位和EasyARM的P2 ...
- Shell脚本笔记(七)控制Shell脚本
控制Shell脚本 一.处理信号 1) SIGHUP本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. ...
- 《深入分析Linux内核源代码》读书、私藏笔记大放送
秉承着"不懂操作系统原理的程序员不是合格的程序员"的至理名言,鄙人又是买陈莉君老师的“Linux教学视频”,又是研读其力作<深入分析Linux内核源代码>,先将总结笔记 ...
- V-rep学习笔记:关节力矩控制
Torque or force mode When the joint motor is enabled and the control loop is disabled, then the join ...
- 【CSAPP笔记】6. 汇编语言——控制
原先刊于自己的域名下面,考虑到博客园之前发过一半,不想烂尾,故在博客园发一版. 到目前为止我们只考虑了直线代码的执行行为,也就是指令一条接着一条执行.C语言中的某些语句,比如条件语句.循环.分支语句, ...
随机推荐
- redis 中文乱码
查询数据时中文乱码 解决方法: 使用 ./redis-cli 登录的时候加上 --raw参数 ./redis-cli --raw
- Spring--IOC注解用法初探
创建一个UserDao接口,和一个UserDaoImp的实现类 UserDao接口 package com.zjw.spring.demo1; public interface UserDao { p ...
- Time Series in pandas
Time Series import pandas as pd import numpy as np Date and Time data types and tools from datetime ...
- SuperSocket 2.0 的发布标志着.NET Socket 服务器框架迈入了一个全新的时代
2025 年 4 月 20 日 - SuperSocket 团队自豪地宣布正式发布 SuperSocket 2.0,这是这款适用于 .NET 的高性能.可扩展套接字服务器应用程序框架的一个重要里程碑. ...
- UVW源码漫谈(一)
博客园是个非常好的学习知识的地方,相信有很多人跟我一样,园龄3年,从博客园不知道拷了多少代码,看了多少博客,自己却一篇博客都没写过.真是罪过. 这次准备写几篇关于这个项目源码的阅读和理解的文章,大家一 ...
- 使用Streamlit构建批量二维码生成器
Streamlit是一个优秀的Python库,让数据科学家和开发者能够快速创建交互式Web应用.今天,我将展示如何使用Streamlit和qrcode库构建一个简单而实用的批量二维码生成器. 技术栈 ...
- Spring Boot项目基于POI框架导出Excel表格
1. 依赖 我的项目是基于Spring Boot的,这里只贴出POI框架需要依赖的两个包,其他的都无所谓,只要能提供Controller让浏览器访问即可.在pom.xml配置文件中增加如下两个包 ...
- 什么是云原生(Cloud Native)
云原生(Cloud Native)是一种专门为云环境设计的软件架构和技术实践,它利用云计算的优势,实现 高可用性.可伸缩性.弹性部署.云原生应用通常基于 容器化.微服务.DevOps.持续集成/持续部 ...
- 超实用!Dify快速接入本地MCP服务
Dify 可以通过插件实现 MCP 服务调用,而被调用的 MCP 服务基本可以分为以下两类: 通用 MCP 服务(非本地 MCP 服务). 本地 MCP 服务. 本地 MCP 服务指的是本地通过 Ja ...
- 基于人类反馈的强化学习 RLHF
1.强化学习和语言模型的联系 agent: 语言模型本身 state: prompt(input tokens) action: 选择哪个token作为下一个token(贪婪,top k,top p) ...