操作系统 :CentOS 7.6_x64
FreeSWITCH版本 :1.10.9
之前写过FreeSWITCH安装的文章,今天整理下moh使用过程中遇到的问题及解决方案,并提供moh音频下载途径。FreeSWITCH安装的文章可参考如下链接:
docker构建FreeSWITCH编译环境及打包
使用docker构建可动态启动的FreeSWITCH实例
CentOS7环境源码安装freeswitch1.10
一、问题描述
FreeSWITCH有hold_music功能,在hold时会触发,体现在sdp里面就是a头里面是 sendonly 属性:
如果没有启用local_stream模块,触发moh时会报如下错误:
[ERR] switch_core_file.c:346 Invalid file format [local_stream] for [moh]!
如果没有下载moh音频,触发moh时会报如下错误:
[ERR] mod_local_stream.c:883 Unknown source default
二、安装moh
1、安装local_stream模块
文件:freeswitch-1.10.9.-release/modules.conf
模块名称:formats/mod_local_stream
2、安装moh音频
-
安装8k音频
make moh-install
下载文件路径:
https://files.freeswitch.org/releases/sounds/freeswitch-sounds-music-8000-1.0.52.tar.gz
-
安装16k音频
make hd-moh-install
下载文件路径:
https://files.freeswitch.org/releases/sounds/freeswitch-sounds-music-16000-1.0.52.tar.gz
-
安装32k音频
make uhd-moh-install
下载文件路径:
https://files.freeswitch.org/releases/sounds/freeswitch-sounds-music-32000-1.0.52.tar.gz
-
安装48k音频
make 服务器托管网cd-moh-install
下载文件路径:
https://files.freeswitch.org/releases/sounds/freeswitch-sounds-music-48000-1.0.52.tar.gz
安装完毕的目录结构:
/usr/local/freeswitch/sounds/music
如果下载过慢,可以从如下渠道获取:
三、使用moh
1、启用local_stream模块
文件:/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
模块名称:mod_local_stream
2、配置local_stream模块
配置文件路径:conf/autoload_configs/local_stream.conf.xml
配置文件内容:
configura服务器托管网tion name="local_stream.conf" description="stream files from local dir">
directory name="default" path="$${sounds_dir}/music/8000">
param name="rate" value="8000"/>
param name="shuffle" value="true"/>
param name="channels" value="1"/>
param name="interval" value="20"/>
param name="timer-name" value="soft"/>
directory>
directory name="moh/8000" path="$${sounds_dir}/music/8000">
param name="rate" value="8000"/>
param name="shuffle" value="true"/>
param name="channels" value="1"/>
param name="interval" value="20"/>
param name="timer-name" value="soft"/>
directory>
directory name="moh/16000" path="$${sounds_dir}/music/16000">
param name="rate" value="16000"/>
param name="shuffle" value="true"/>
param name="channels" value="1"/>
param name="interval" value="20"/>
param name="timer-name" value="soft"/>
directory>
directory name="moh/32000" path="$${sounds_dir}/music/32000">
param name="rate" value="32000"/>
param name="shuffle" value="true"/>
param name="channels" value="1"/>
param name="interval" value="20"/>
param name="timer-name" value="soft"/>
directory>
directory name="moh/48000" path="$${sounds_dir}/music/48000">
param name="rate" value="48000"/>
param name="shuffle" value="true"/>
param name="channels" value="1"/>
param name="interval" value="10"/>
param name="timer-name" value="soft"/>
directory>
configuration>
3、配置hold_music
文件:/usr/local/freeswitch/conf/vars.xml
配置内容:
X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
四、资源下载
本文涉及的音频文件,可以从如下途径获取:
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
常量
常用方法
介绍 InputStream是Java中一个抽象类,用于从不同类型的数据源中读取字节数据流,如文件,网络连接,内存缓冲区等等。它包含了一系列方法来读取不同类型的数据,例如read()方法用于读取下一个字节,read(byte[] b)方法用于读取一定数量的字节…