freeswitch的mod_xml_curl模块

 

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

随着fs服务的增多,每一台fs都需要在后台单独配置,耗时耗力,心力憔悴。

如果有一个集中管理配置的配置中心,统一管理所有fs的配置,并可以实现动态的修改配置就好了。

于是就发现了mod_xml_curl模块。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

模块介绍

mod_xml_curl模块默认不编译安装。

进入“freeswitch/src/mod/xml_int/mod_xml_curl”目录,执行如下命令

sudo make install

检查模块安装情况。

cd /usr/local/freeswitch/mod

ll

-rwxr-xr-x. 1 root root  104456 Jul 28 10:47 mod_xml_curl.so

-rwxr-xr-x. 1 root root    1316 Jul 28 10:47 mod_xml_curl.la

检查conf/autoload_configs/modules.conf.xml文件,mod_xml_curl模块要放在配置的顶部。

    <load module="mod_console"/>

<load module="mod_logfile"/>

<load module="mod_xml_curl"/>

检查conf/autoload_configs/xml_curl.conf.xml文件。

mod_xml_curl模块的主要使用场景。

运行多个FreeSWITCH实例而不必维护多个服务器配置。

集中的配置管理。

从连接到数据库的web应用程序动态填充配置。

提供了一种自动化FreeSWITCH配置部署的简单方法(例如,托管VoIP平台)。

mod_xml_curl的工作原理与典型的API一样,向web应用程序发送POST请求,获取XML格式的响应消息并刷新本地配置。

mod_xml_curl从web接口获取到有效响应则直接加载配置,如果收到无效响应或404则尝试从本地磁盘查找配置文件。

mod_xml_curl模块可以分为4个不同的绑定章节,基本可以覆盖全部的xml配置项。

configuration,配置项,比如mod_sofia的配置。

directory,用户鉴权目录。

dialplan,拨号计划。

phrases,语音短语管理。

测试

修改conf/autoload_configs/xml_curl.conf.xml文件。

<configuration name="xml_curl.conf" description="cURL XML Gateway">

  <bindings>

    <binding name="dialplan">

      <param name="gateway-url" value="http://10.55.55.137:8080/fs/dialplan" bindings="dialplan"/>

    </binding>

  </bindings>

</configuration>

启动fs,检查启动日志,如下。

2023-07-28 11:56:24.029966 [NOTICE] mod_xml_curl.c:543 Binding [dialplan] XML Fetch Function [http://10.55.55.137:8080/fs/dialplan] [dialplan]

2023-07-28 11:56:24.029979 [ERR] mod_xml_curl.c:459 Binding has no url!

2023-07-28 11:56:24.029994 [CONSOLE] switch_loadable_module.c:1540 Successfully Loaded [mod_xml_curl]

2023-07-28 11:56:24.030003 [NOTICE] switch_loadable_module.c:338 Adding API Function 'xml_curl'

发起呼叫,使用10011呼叫13712345678,日志如下。

2023-07-28 15:22:15.918548 [INFO] mod_dialplan_xml.c:637 Processing 10011 <10011>->13712345678 in context public

2023-07-28 15:22:15.918548 [ERR] mod_xml_curl.c:315 Received HTTP error 403 trying to fetch http://10.55.55.137:8080/fs/dialplan

data: [hostname=localhost.localdomain&section=dialplan&tag_name=&key_name=&key_value=&Event-Name=REQUEST_PARAMS&Core-UUID=54544416-2d17-11ee-87f0-0d9ab89b9404&FreeSWITCH-Hostname=localhost.localdomain…

Dialplan: sofia/external/10011@10.55.55.138 parsing [public->test] continue=false

Dialplan: sofia/external/10011@10.55.55.138 Regex (PASS) [test] destination_number(13712345678) =~ /^(\d+)$/ break=on-false

Dialplan: sofia/external/10011@10.55.55.138 Action answer()

从日志可以看出,呼叫流程中,首先使用“mod_xml_curl”模块获取“http://10.55.55.137:8080/fs/dialplan”的值,获取失败则使用本地dialplan继续呼叫流程。

总结

mod_xml_curl模块功能较复杂,涉及流程较多,同时需要web服务器提供数据接口配合。

后续尝试使用接口返回dialplan数据,动态控制呼叫流程。

空空如常

求真得真

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: freeswitch是一款流媒体通讯服务器,其中包含了很多方便实用的模块mod_av是其中之一,它提供了音视频媒体的处理能力。RTMP协议是一种用于流媒体传输的协议。因此,freeswitch中的mod_av模块可以用来录制RTMP流。 在使用freeswitch录制RTMP流的过程中,需要先安装并配置好mod_av模块。然后,通过freeswitch提供的API接口,指定要录制的RTMP流地址、录制文件的保存路径、录制时长等信息。使用指定的录制参数启动录制后,freeswitch会自动将指定的RTMP流数据进行录制,并将录制的数据保存到指定的路径中。 需要注意的是,在使用freeswitch录制RTMP流的过程中,需要保证录制环境的稳定性和流畅性。特别是在网络条件不好的情况下,可能会影响到录制效果。因此需要根据实际情况进行有针对性的配置和优化。 总之,freeswitch mod_av模块能够方便地实现RTMP流的录制,是在流媒体应用中的一项重要功能。 ### 回答2: Freeswitch是一款开源的电话软交换平台。它提供了丰富的语音通信功能,包括SIP和其他语音协议的呼叫管理、音频编解码和流处理、媒体转码和路由等功能。Mod_av是Freeswitch提供的一个模块,它提供了一系列的媒体功能,包括音频流的录制、转码和回放等。 RTMP是一种流媒体协议,它主要用于在线视频直播和点播。RTMP通过一组可靠的传输协议,在网络上传输视频和音频流。RTMP支持低延迟、多路复用、流控和安全传输等功能,在在线视频直播和点播中得到广泛应用。 Freeswitch mod_av支持通过RTMP协议录制音频和视频流。使用mod_av录制RTMP流需要在Freeswitch中配置一个录制计划。可以通过Freeswitch提供的命令行工具路由呼叫到这个计划,实现录制功能。录制计划中需要指定录制格式、音频编解码、视频编解码、录制文件名等参数。 通过Freeswitch mod_av录制RTMP流可以实现实时录制音视频直播,并将录制文件保存到本地或远程服务器。录制文件可以用于后续处理、回放和存档等用途。同时,通过Freeswitch的扩展性,可以将录制功能与其他语音通信功能结合使用,实现更为丰富的语音应用场景。 综上所述,Freeswitch mod_av支持通过RTMP协议录制音视频流,为在线视频直播和点播提供了可靠的录制功能。它的使用需要一定的配置和命令行操作,但是具备良好的扩展性和丰富的媒体功能,可以满足不同应用场景的需求。 ### 回答3: freeswitch是一个功能强大的开源通信软件,支持视频会议和流媒体通信等多种功能。而mod_av是freeswitch中的模块之一,它可以用来录制音频和视频。而在录制音频和视频时,我们可能会需要使用到rtmp协议。那么,如何使用freeswitch mod_av录制rtmp呢? 首先,要使用freeswitch mod_av录制rtmp,我们需要在mod_av模块中设置相关参数。具体来说,我们需要设置以下参数: 1. av_format:指定录制的文件格式,通常为mp4或flv格式。 2. av_mode:指定录制的模式,可以是in、out或all。其中,in表示只录制输入流,out表示只录制输出流,all表示录制所有流。 3. av_codec:指定录制的编码格式。通常可以选择h.264或AAC。 接下来,我们需要将mod_av模块与rtmp绑定。具体来说,我们可以在freeswitch的配置文件中,将rtmp的地址和mod_av的相关参数加入到录制规则中。 例如,在录制出站呼叫的过程中,我们可以将rtmp的地址和mod_av的参数设置如下: <record name="outcall" max-size="100M" format="$${av_format}" mode="$${av_mode}" codec="$${av_codec}"> <param name="path" value="$${base_dir}/recordings/${caller_id_number}_${strftime(%Y%m%d%H%M%S)}.mp4"/> <param name="rtmp_url" value="rtmp://127.0.0.1/recordings/${caller_id_number}_${strftime(%Y%m%d%H%M%S)}.mp4"/> </record> 其中,rtmp_url参数指定了rtmp的地址,用于将录制的音视频数据实时传输到指定的地址。 最后,启动freeswitch并测试录制功能。如果一切正常,我们就可以在指定的rtmp地址上看到实时录制的音视频数据了。 综上所述,使用freeswitch mod_av录制rtmp需要设置相关的参数,并将mod_av模块与rtmp绑定。只有这样,我们才能实现高效、可靠的音视频录制功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值