FreeSWITCH 1.10.10 简单图形化界面21-录音相关

FreeSWITCH 1.10.10 简单图形化界面21-录音相关

  • FreeSWITCH GUI界面预览
  • 00、安装FreeSWITCH GUI先看使用手册
  • 1、录音相关的应用
    • 11、record
      • 用法:
      • 举例:
      • 注意:
    • 12、record_session
      • 用法:
      • 举例:
  • 2、录音相关的变量
  • 3、单腿录音


FreeSWITCH GUI界面预览

http://myfs.f3322.net:8020/
用户名:admin,密码:admin

FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/137820796

00、安装FreeSWITCH GUI先看使用手册

先看使用手册,先看使用手册,先看使用手册。

这里是手册,这里是手册,这里是手册,
这里是手册,这里是手册,这里是手册,
这里是手册,这里是手册,这里是手册,
这里是手册,这里是手册,这里是手册,

1、录音相关的应用

通过下面的这个链接,可找到freeswitch常用的录音application有两个record和record_session。
freeswitch dptools链接
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_dptools_1970333/

11、record

record为阻塞式录音,在执行record时,后续的application不会执行,直到record执行完毕。

用法:

record <路径> [时间限制(秒)] [静音阈值] [连续静音次数]路径: 指定录音文件保存的路径及文件名。文件扩展名决定录音的格式。如果只给出文件名,没有指定路径,则会根据通道变量sound_prefix或默认的base_dir来确定保存位置。时间限制(秒)(可选): 设置录音的最大持续时间,单位为秒。如果不提供,默认可能会一直录直到手动停止或其他条件触发结束。静音阈值(可选): 定义何种音量水平以下被视为静音。这有助于根据无声状态自动停止录音。连续静音次数(可选): 指定在达到静音阈值下连续多少秒无声音后录音自动结束。默认是3秒。

举例:

<extension name="自定义IVR"><condition expression="^(999)$" field="destination_number"><action application="set" data="absolute_codec_string=PCMU,PCMA"/><action application="answer"/><action application="sleep" data="500"/><action application="playback" data="$${sounds_dir}/sound/test1-离线022310.wav"/><action application="playback" data="default/beep.gsm"/><!-- 创建录音文件目录 --><action application="mkdir" data="$${recordings_dir}/phone/${strftime(%Y%m%d)}"/><action application="set" data="record_filename=${caller_id_number}-${destination_number}-${strftime(%H_%M_%S)}.wav"/><action application="set" data="record_filepath=$${recordings_dir}/phone/${strftime(%Y%m%d)}/${record_filename}"/><action application="set" data="playback_terminators=#"/> <!-- 阻塞式录音,这里执行录音操作,录音操作结束之前,不会进行后续的操作--><action application="record" data="${record_filepath} 120 200 10" /><!-- 后续操作 --><action application="log" data="INFO ${record_ms}" /><action application="sleep" data="500"/><action application="hangup"/></condition>
</extension>`在这里插入代码片`

注意:

(1)在测试record的时候,如果录音文件的录音路劲不存在,则会提示错误,如下图:

2024-06-01 15:45:39.457231 97.10% [WARNING] mod_sndfile.c:281 Error Opening File [/usr/local/freeswitch/recordings/phone/20240601/2002-999-15_45_39.wav] [No Error.]

因此需要在record之前确保录音文件的最终路径存在。可以通过mkdir创建最终路径存在。

  <!-- 创建录音文件目录 --><action application="mkdir" data="$${recordings_dir}/phone/${strftime(%Y%m%d)}"/>

(2)可以指定一个按键,手动结束录音。

 <!-- 在录音之前,指定一个按键,在录制结束后,通过这个按键手动结束本次录音--><action application="set" data="playback_terminators=#"/> 

(3)可以设置静音值,自动结束录音。

<!-- 200为静音阀值,10为匹配静音次数后,自动结束录音,可以根据实际情况调节--><action application="record" data="${record_filepath} 120 200 10" />

12、record_session

record_session为非阻塞式录音,在执行record_session时,后续的application会继续执行。
个人理解,看英文名称,是录制会话、通话的,通话是是2个session,如果阻塞了,后续没办法桥接被叫了,那还录制个毛线。

用法:

record_session <路径> 

举例:

<extension name="分机1001"><condition field="destination_number" expression="^(1001)$"><!-- 录音通话--><action application="record_session" data="$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/><action application="bridge" data="user/$1"/><action application="hangup" /></condition>
</extension>

2、录音相关的变量

参考:https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Dialplan/Variables-Master-List_16352570/#record_read_only
在这里插入图片描述
大部分都是设置录音文件元数据的一些设置,有几个常用的变量,变量在进行录音应用之前设置即可。
AI翻译如下:

RECORD_APPEND:布尔值,当设置为true时,新的录音将会被追加到已存在的文件末尾,而不是覆盖原有文件。这特性仅对支持元数据头的文件格式(如WAV通过mod_sndfile模块)有效。RECORD_ARTIST, RECORD_COMMENT, RECORD_COPYRIGHT, RECORD_DATE, RECORD_SOFTWARE, RECORD_TITLE:这些字符串变量允许在录音前设置文件的元数据信息,比如艺术家、评论、版权信息、录制日期、软件名称和标题。这些信息会被存储在文件的头部,前提是文件格式支持元数据。RECORD_BRIDGE_REQ:布尔值,当设为true时,仅当通道被桥接后才开始录音。这对于需要确保通话双方都在线才开始记录的场景很有用。RECORD_DISCARDED:只读变量,如果录音因故被丢弃或放弃,此变量会被设为true,有助于诊断问题。record_fill_cng:用于指定静音期间填充舒适噪声的采样率。例如,设置为1200意味着每秒填充1200个静音样本。RECORD_HANGUP_ON_ERROR:布尔值,设为true时,若录音遇到错误则挂断呼叫。这保证了在某些业务场景中,未成功录音的通话不会继续。RECORD_MIN_SEC:整数,设定录音的最短持续时间。低于此时间长度的录音将被自动删除。record_ms:只读变量,记录最近一次录音的毫秒长度。record_post_process_exec_api, record_post_process_exec_app:允许指定API或应用程序来对录制的音频进行后处理,适用于A腿先挂断导致无法在正常流程中处理录音文件的情况。RECORD_READ_ONLY, RECORD_WRITE_ONLY:分别控制只录制读取流(如来电方的声音)或只录制写入流(如去电方的声音)。这对于分离不同方向的音频记录很有帮助。record_restart_limit_on_dtmf:布尔值,允许用户通过DTMF按键延长录音时间限制。record_sample_rate:设置录音的采样率,如8000代表每秒8000次采样。RECORD_STEREO, RECORD_STEREO_SWAP:控制是否以立体声方式记录,以及是否交换左右声道,适用于同时记录通话双方且希望区分两边声音的情况。record_waste_resources:默认情况下,录音时FreeSWITCH不发送RTP包以节省带宽,但某些情况下这可能导致媒体超时挂断。设置此变量可强制发送RTP包(即使包含静音),以避免超时。recording_follow_transfer:布尔值,当设为true,即使通话被转移,录音也会继续。recordings_dir:指定录音文件的保存目录。

3、单腿录音

通过上面的录音变量的解释,可以使用 RECORD_WRITE_ONLY(只录制被叫的声音)和RECORD_READ_ONLY(只录制主叫的声音)进行单腿录音。

如下:

<extension name="分机1001"><condition field="destination_number" expression="^(1001)$"><!-- 下面都是A通道的变量--><!-- 经过测试,录制A通道上,freeswitch收到的声音,即录制主叫的声音--><action application="set" data="RECORD_READ_ONLY=true"/><!-- 经过测试,录制A通道上,freeswitch发出去的声音,即录制被叫的声音--><!--<action application="set" data="RECORD_WRITE_ONLY=true"/> --><!-- 录音通话--><action application="record_session" data="$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/><action application="bridge" data="user/$1"/><action application="hangup" /></condition>
</extension>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中&#xff0c;复合图形是一种非常有用的工具&#xff0c;可以同时显示多种数据类型的关系。在本篇博客中&#xff0c;我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…

联合和枚举(自定义类型)

1.枚举&#xff08;关键字&#xff1a;enum) 1.1枚举类型的声明 把可能的值一一列举 赋的值是可能取值 1.2枚举类型的优点 1&#xff09;增加代码的可读性和可维护性 2&#xff09;和#define定义的标识符比较枚举有类型检查&#xff0c;更加严谨 3&#xff09;便于调试&a…

vue:实现丝滑上传进度条

一、效果展示 缓若江海凝清光 . 二、代码 const uploadProgress ref(); //上传进度//进度丝滑更新 //进度&#xff0c;时常 const ProgressChange (targetPercent: number, duration: number) > {//performance.now() 是浏览器提供的一个高性能时间 API&#xff0c;它返…

Linux系统编程(七)网络编程TCP、UDP

本文目录 一、基础知识点1. IP地址2. 端口3. 域名4. 网络协议类型5. IP协议类型6. 字节序7. socket套接字 二、常用API1. socket套接字描述符2. bind套接字绑定3. listen设置客户端连接个数4. accept接收客户端请求5. connect连接服务端 三、编程流程1.TCP编程 在学习本章之前&…

《mysql轻松学习·二》

1、创建数据表 contacts&#xff1a;数据表名 auto_increament&#xff1a;自动增长 primary key&#xff1a;主键 engineInnoDB default charsetutf8; 默认字符集utf8&#xff0c;不写就默认utf8 对数据表的操作&#xff1a; alter table 数据表名 add sex varchar(1); //添…

使用YOLOv10训练自己的数据集

1. yolov10源码下载 THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection (github.com)https://github.com/THU-MIG/yolov10?tabreadme-ov-file 2. 环境配置 预先安装好ANACONDA、PyCharm或者VSCode等基本软件。参考以下博客&#xff1a; 史上最全最详细的An…

unity2D跑酷游戏

项目成果 项目网盘 导入资源包 放入Assets文件Assets资源文件 游戏流程分析 摄像机size调小&#xff0c;让图片占满屏幕 人跑本质&#xff0c;相对运动&#xff0c;图片无限向右滚动 图片720&#xff0c;缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯 空对象Bg…

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中&#xff0c;我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配&#xff0c;这在大大降低推理延迟的情况下保证了性能。此外&#xff0c;我们针对YOLO…

【计算机毕设】设计与实现基于SpringBoot的在线文档管理系统 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 在当今信息爆炸的时代&#xff0c;文档管理对于任何组织都至关重要。基于SpringBoot的在线文档管理系统的设计旨在为用户提供一个便捷、高效、安全的…

轻松拿捏C语言——【内存函数】

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正~~ 目录&#x1…

JVM学习-类加载过程(一)

概述 在Java中数据类型分为基本数据类型和引用数据类型&#xff0c;基本数据类型由虚拟机预先定义&#xff0c;引用数据类型则需要进行类的加载按Java虚拟机规范&#xff0c;从class文件加载到内存中的类&#xff0c;到类卸载出内存为止&#xff0c;它的整个生命周期包含以下7…

测试工具fio

一、安装部署 fio是一款优秀的磁盘IO测试工具&#xff0c;在Linux中比较常用于测试磁盘IO 其下载地址&#xff1a;https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz 或者登录其官网&#xff1a;http://freshmeat.sourceforge.net/projects/fio/ 进行下载。 tar -zxvf fio-…

【redis】宝塔,线上环境报Redis error: ERR unknown command del 错误

两种方式&#xff1a; 1.打开宝塔上的redis&#xff0c;通过配置文件修改权限&#xff0c;注释&#xff1a;#rename-command DEL “” 2.打开服务器&#xff0c;宝塔中默认redis安装位置是&#xff1a;cd /www/server/redis 找到redis.conf,拉到最后&#xff0c;注释#rename-co…

Flutter 验证码输入框

前言&#xff1a; 验证码输入框很常见&#xff1a;处理不好 bug也会比较多 想实现方法很多&#xff0c;这里列举一种完美方式&#xff0c;完美兼容 软键盘粘贴方式 效果如下&#xff1a; 之前使用 uniapp 的方式实现过一次 两种方式&#xff08;原理相同&#xff09;&#xff1…

二叉树链式结构的前序、中序、后序、层序遍历

文章目录 一、二叉树创建二、前序遍历概念以及解释代码 三、中序遍历概念及解释代码 四、后序遍历概念及解释代码 五、层序遍历概念及解释代码 一、二叉树创建 &mesp; 实现二叉树的遍历&#xff0c;我们要先手搓出一个二叉树&#xff0c;在次基础上实现二叉树的前序、中序…

【RLHF个人笔记】RLHF:Reinforcement Learning from Human Feedback具体过程

【RLHF个人笔记】RLHF:Reinforcement Learning from Human Feedback具体过程 RLHF训练的三个步骤步骤1&#xff1a;收集数据与有监督训练策略步骤2&#xff1a;收集数据训练奖励模型步骤3&#xff1a;结合奖励模型利用强化学习算法如PPO算法来优化策略 参考内容 RLHF训练的三个…

今年一定要做的副业兼职,1篇文章收入600,批量操作收入翻倍

随着公众号开放公域流量&#xff0c;流量主收入迅速攀升&#xff0c;吸引了众多投资者纷纷涌入这一领域&#xff0c;通过流量主赚取了丰厚的利润。上周&#xff0c;我曾向大家介绍了一些借助公众号流量主实现盈利的策略。 然而&#xff0c;公众号的盈利途径远不止流量主一种。…

数据库(14)——DQL排序查询

DQL排序查询语法 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2; 排序方式 ASC&#xff1a;升序 DESC&#xff1a;降序 注&#xff1a;如果是多字段排序&#xff0c;当第一个字段值相同时&#xff0c;才会根据第二个字段进行排序。如果不写排序方式默…

图像处理ASIC设计方法 笔记27 红外非均匀校正的两点定标校正算法

非均匀性校正(Non-Uniformity Correction, NUC)是一种在图像处理和传感器校准中常用的技术,用于改善图像传感器(如CCD或CMOS相机)的输出质量。这种校正主要针对传感器在不同像素之间可能存在的响应差异,这些差异可能是由于制造过程中的微小不完美导致的。 基本原理: 响应…

MAB规范(2):Introduction 介绍

Chapter1 Introduction 1.1 指南目的 MathWorks咨询委员会&#xff08;MAB&#xff09;指南规定了Simulink和Stateflow建模的重要基本规则。这些建模指南的总体目的是让建模者和控制系统模型的使用者能够简单、共同地理解。 指南的主要目标是&#xff1a; • 可读性  提高…