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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ICPC训练赛补题集

ICPC训练赛补题集 文章目录 ICPC训练赛补题集D - Fast and Fat (负重越野)I-路径规划G. Inscryption(邪恶铭刻)NEW Houses雪中楼(西安交通大学)L.BracketGenerationE - Checksum D - Fast and Fat (负重越野) 原题链接&#xff1a;原题链接 题意&#xff1a;体重大的背体重小的…

图像处理ASIC设计方法 笔记26 非均匀性校正SOC如何设计

在红外成像技术领域,非均匀性校正是一个至关重要的环节,它直接影响到成像系统的性能和目标检测识别的准确性。非均匀性是指红外焦平面阵列(IRFPA)中各个像元对同一辐射强度的响应不一致的现象,这种不一致性可能是由于制造过程中的缺陷、材料的不均匀性或者像元间的热电特性…

Mysql 8.0.37 安装教程

图片有点长&#xff0c;慢慢来 安装教程 安装地址&#xff1a;MySQL :: MySQL Downloads 进入官网 下载社区版 此处有两个版本&#xff0c;我们下载的是8.0.37版本 第一个需要联网安装&#xff0c;我们现在第二个离线安装 server only&#xff1a;仅安装MySQL server clien…

SpringCloud如何实现SSO单点登录?

目录 一、SpringCloud框架介绍 二、什么是SSO单点登录 三、单点登录的必要性 四、SpringCloud如何实现SSO单点登录 一、SpringCloud框架介绍 Spring Cloud是一个基于Spring Boot的微服务架构开发工具集&#xff0c;它整合了多种微服务解决方案&#xff0c;如服务发现、配置…

Django里多app

在 Django 里的某一个项目&#xff0c;里面得包含很多 App (功能)&#xff0c;那么如何在该项目里管理这么多App呢&#xff1f; 先说明下背景&#xff1a;未先创建 apps 文件夹来存各个app文件夹&#xff0c;直接在项目文件目录里创建各个app。为了便于管理&#xff0c;得将各…

【TB作品】msp430f5529单片机墨水屏,口袋板,显示温度和万年历,tmp421温度,RTC时间

文章目录 一、部分程序二、展示三、全部代码下载 一、部分程序 int main(void) {WDTCTL WDTPW | WDTHOLD; //关闭看门狗init(); //屏幕初始化InitIIC(); //I2C初始化TMP_Init(); //tmp421初始化SetupRTC();_EINT();while (1){} }#pragma vectorRT…

在鸿蒙中身份校验的手势密码的实现

在harmony中它提供了默认的组件PatternLock()&#xff1b; 这个就能直接显示九宫格密码验证 并且他有两个主要的回调事件 .onDotConnect密码输入选中宫格圆点时触发该回调 .onPatternComplete&#xff1a;密码输入结束时触发该回调 //如代码实现 PatternLock().sideLength(32…

【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)

1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。 3.欢迎批评指正,欢迎互三,跪谢一键三连! 4.欢迎…

linux上VirtualBox使用

前言 最近想把唯一的windows系统装成linux&#xff0c; 但是确实存在一些特殊软件无法舍弃&#xff0c;所有装完linux需要用虚拟机装个windows 上来使用特定的一些软件&#xff08;不想用wine了&#xff09;。 还有对一些特定usb设备的透传&#xff0c;这样才能保证在虚拟机中…

计算机组成原理·存储系统疑点归纳

组原这门课有点学得不是很懂&#xff0c;现在快考试了&#xff0c;挑几个做错了的题分析、记录一下。 N o . 1 \mathit{No}.1 No.1  x x x、 y y y 为定点整数&#xff0c;其格式为 1 1 1 位符号位、 n n n 位数值位&#xff0c;若采用补码一位乘法实现乘法运算&#xff0c;则…

idea中导入代码文件无法修改,显示File is read-only,怎么办?难办?那就别办了------看下面

File is read-only 文件属性只读&#xff0c;不可修改。。。。。 第一次遇到这种问题&#xff0c;去网上搜了一堆方法&#xff0c;都试了&#xff0c;没用&#xff0c;最后居然还建议我重装idea&#xff0c;我还差点信了&#xff0c;经9X9难后&#xff0c;取得真经。 问题解决…

python实现描述统计

数据基础情况 import numpy as np import pandas as pd import matplotlib.pyplot as pyplot pd.options.display.max_rows 10##最多输出10行数据 data_url https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ST0151EN-SkillsN…

primeflex Display盒模型显示相关样式实战案例

01 Display盒子模式相关样式 基础样式 ClassPropertieshiddendisplay: none;blockdisplay: block;inlinedisplay: inline;inline-blockdisplay: inline-block;flexdisplay: flex;inline-flexdisplay: inline-flex; 样式说明&#xff1a; hidden&#xff1a;隐藏&#xff0c…

Arrays(操作数组工具类)、Lambda表达式

package exercise;import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5};//将数组变成字符串System.out.println(Arrays.toString(arr));//二分查找法查找元素//细节1&#xff1a;1.数组必须是有序的 2.元素…

c# 学习教程

打印语句 折叠代码 变量 整形 浮点型 特殊类型

Java18+前端html+后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍

Java18前端html后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统&#xff08;用户端&#xff09;介绍 家政服务用户端是一个为家庭用户提供便捷、高效家政服务的应用程序。 以下是家政服务用户端的详细功能描述&#xff1a; 一、注册与登录&#…

离线环境下安装NVIDIA驱动、CUDA(HUAWEI Kunpeng 920 + NVIDIA A100 + Ubuntu 20.04 LTS)

文章目录 前言 一、基础环境 1.1、处理器型号 1.2、英伟达显卡型号 1.3、操作系统 1.4、软件环境 二、取消内核自动升级 2.1、查看正在使用的内核版本 2.2、查看正在使用的内核包 2.3、禁止内核更新 三、配置本地apt源 3.1、挂载iso镜像文件 3.2、配置apt源 3.3、…

形式参数和实际参数

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在调用函数时&#xff0c;大多数情况下&#xff0c;主调函数和被调用函数之间有数据传递关系&#xff0c;这就是有参数的函数形式。函数参数的作用是…

如何仿一个抖音极速版领现金的进度条动画?

效果演示 不仅仅是实现效果&#xff0c;要封装&#xff0c;就封装好 看完了演示的效果&#xff0c;你是否在思考&#xff0c;代码应该怎么实现&#xff1f;先不着急写代码&#xff0c;先想想哪些地方是要可以动态配置的。首先第一个&#xff0c;进度条的形状是不是要可以换&am…

【图解IO与Netty系列】Reactor模型

Reactor模型 Reactor模型简介三类事件与三类角色Reactor模型整体流程 各种Reactor模型单Reactor单线程模型单Reactor多线程模型主从Reactor模型 Reactor模型简介 Reactor模型是服务器端用于处理高并发网络IO请求的编程模型&#xff0c;与传统的一请求一线程的同步式编程模型不…