freeswitch编译mod_av支持webrtc MCU通话
系统环境
一、FS相关网站
二、第三方库安装
1.apt安装
2.指定版本sofia-sip安装
3.指定版本spandsp安装
4.指定版本libks安装
5.指定版本openssl安装
三、指定版本FS安装
1.CPPFLAGS配置
2.编译器版本
3.FS配置编译
四、FS,fs_cli运行,模块加载
附录
1.安装包,FS,编译好的两个浏览器客户端压缩包
2.video-demo和Verto Communicator的github地址
3.demo相关WIKI
4.freeswitch微信交流群
扉页
系统环境
lsb_release -a
No LSB modules are available. Distributor ID: Ubuntu
Description: Ubuntu 22.10 Release: 22.10 Codename: kinetic
uname -a
Linux yqw-Lenovo-XiaoXinPro-13ARE-2020 6.2.0-37-generic
#38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
一、FS相关网站
FS中文社区http://freeswitch.org.cn/blog/2023/08/use_srs/
FS官网https://signalwire.com/freeswitch
FS官方WIKI:https://developer.signalwire.com/freeswitch/
FS官方github:https://github.com/signalwire/freeswitch
二、第三方库安装
1.apt安装
sudo apt install libtool-bin
sudo aptitude install libtiff-dev
sudo aptitude install libsqlite3-dev sqlite3
sudo aptitude install libpcre3-dev
sudo aptitude install libspeexdsp-dev
sudo apt install libldns-dev
sudo apt-get install libedit-dev
sudo apt-get install -y yasm nasm libavformat-dev libswscale-dev
2.安装sofia-sip
git clone https://github.com/freeswitch/sofia-sip.git
cd sofia-sip
git rest --hard 6198851a610b7889c17e2d98fb84617bc1dd7aec
./bootstrap.sh -j
./configure
make
make install
3.安装spandsp
git clone https://github.com/freeswitch/spandsp.git
cd spandsp
git reset --hard 0d2e6ac65e0e8f53d652665a743015a88bf048d4
./bootstrap.sh -j
./configure
make
sudo make install
ldconfig
4.libks安装
git clone https://github.com/signalwire/libks.git
git reset --hard 940d659c583b255a96cac77e7e9fe62195c40e0b
cmake
make
sudo make install
5.openssl安装
需要先卸载本身的openssl
openssl-1.1.1v,官方下载地址,版本3会有问题。
https://www.openssl.org/source/
//https://github.com/signalwire/signalwire-c.git
//applications/mod_signalwire前的#删除
不需要装libav,因为已经执行如下命令
sudo apt-get install -y yasm nasm libavformat-dev libswscale-dev
三、FS安装
1.CPPFLAGS配置
export CPPFLAGS="-Wno-array-parameter -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=maybe-uninitialized -Wno-error=switch -Wno-error=format-overflow -Wno-error=address -Wno-error=stringop-truncation"
2.编译器版本
gcc/g++ version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
3.FS配置编译
git clone https://github.com/signalwire/freeswitch.git
git reset --hard 4cb05e7f4a23645ec387f3b5391194128be7d193
//或者在github,tag里下载freeswitch-1.10.10,以上master提交版本也属于1.10.10
sudo vim modules.conf
//applications/mod_av前的#删除
./bootstrap.sh && ./configure && make -j20
sudo make install
//sudo make sounds-install sudo make moh-install
//sudo make hd-sounds-install sudo make hd-moh-install
//cd src/mod/applications/mod_av && make && make install
四、FS,fs_cli运行,模块加载
sudo ./freeswitch -nc -nonat //如果想看日志不加后面两个参数
sudo ./fs_cli
load mod_av
load mod_verto
附录:
1.安装包,FS,编译好的两个浏览器客户端压缩包
2.video-demo和Verto Communicator两个demo github
3.demo相关WIKI
编译参考1
编译2和打电话慢配置
编译参考3
Verto Communicator-WIKI
mod_verto-WIKI
mod_conference(conference.conf.xml–WIKI)
如何在FreeSWITCH中对接SRS
Verto Documentation
FS各种库集合
FS增加h264
扉页
sudo apt-get install gcc-10
sudo apt-get install g+±10
sudo ln -sf /usr/bin/gcc-10 /usr/bin/gcc
sudo ln -sf /usr/bin/g+±10 /usr/bin/g++
freeswitch-1.8.7自带的sip库不匹配源码
v1.10(git clone拉)和libav都是最新的,依然有codecpar和codec问题
git clone https://freeswitch.org/stash/scm/sd/libav.git
v1.10.0/1.8.7配libav11.12有以下问题,但实际libks已装
You must install libks to build mod_signalwire。 停止。
wget -c http://files.freeswitch.org/downloads/libs/libav-12.tar.bz2
freeSWITCH自1.6之后,支持视频MCU了
笔者下载的linphone4.3版本,注册终端(注意使用h264编码) 呼叫 3500 ,再使用不同的账号注册后呼叫3500,这样视频会议就开始了。
相关文章:
freeswitch编译mod_av支持webrtc MCU通话
系统环境 一、FS相关网站 二、第三方库安装 1.apt安装 2.指定版本sofia-sip安装 3.指定版本spandsp安装 4.指定版本libks安装 5.指定版本openssl安装 三、指定版本FS安装 1.CPPFLAGS配置 2.编译器版本 3.FS配置编译 四、FS,fs_cli运行,模块加载 附录 1.安…...
K8s 入门指南(一):单节点集群环境搭建
前言 官方文档:Kubernetes 文档 | Kubernetes 系统配置 CentOS 7.9(2 核 2 G) 本文为 k8s 入门指南专栏,将会使用 kubeadm 搭建单节点 k8s 集群,详细讲解环境搭建部署的细节,专栏后面章节会以实战代码介绍…...
python socket编程6 - 使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的例子
使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的示例。 一、PyQt6 实现的界面 二、TCP server代码的修改示意 界面提供网络参数的配置,以及提供人机交互过程中的数据获取和显示。 1、把上面的server代码封装成两个部分 A、class Server 负责接受UI界面…...
centos上安装并持久化配置LVS
1 实验背景 1)系统版本:centos7.8 2)虚拟机:3个centos虚拟机,(其中一个做Director Server,另外两个做Real Server) 3) LVS大致有NAT ,DR ,Tun这三种模式,这里搭建一个典型的DR模式的LVS Direc…...
多线程并发Ping脚本
1. 前言 最近需要ping地址,还是挺多的,就使用python搞一个ping脚本,记录一下,以免丢失了。 2. 脚本介绍 首先检查是否存在True.txt或False.txt文件,并在用户确认后进行删除,然后从IP.txt的文件中读取IP地…...
SpringBoot Seata 死锁问题排查
现象描述:Spring Boot项目,启动的时候卡住了,一直卡在那里不动,没有报错,也没有日志输出 但是,奇怪的是,本地可以正常启动 好吧,姑且先不深究为什么本地可以启动而部署到服务器上就无…...
文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑两阶段鲁棒优化配置的多微网合作博弈》
这个标题涉及到多个概念,让我们逐步解读: 考虑两阶段鲁棒优化配置: 两阶段: 指的是在解决问题或进行优化时,可能存在两个不同的阶段或步骤。这表明问题的解决不是一步完成的,而是需要经过多个步骤或阶段。鲁…...
Redis常见类型
常用类型String字符串类型Hash字典类型List列表类型Set集合类型ZSet有序集合类型 Java程序操作Redis类型代码操作Redis 常用类型 String字符串类型 使用方式: 使用场景: Hash字典类型 字典类型(Hash) 又被成为散列类型或者是哈希表类型࿰…...
深入了解数据库锁:类型、应用和最佳实践
目录 1. 引言 2. 数据库锁的基本概念 2.1 悲观锁和乐观锁 2.2 排他锁和共享锁 3. 悲观锁的应用场景 3.1 长事务和大事务 3.2 并发修改 3.3 数据库死锁 4. 悲观锁的最佳实践 4.1 精细控制锁的粒度 4.2 避免死锁 4.3 考虑乐观锁 5. 案例分析 5.1 银行系统的转账操作…...
python3.5安装教程及环境配置,python3.7.2安装与配置
大家好,小编来为大家解答以下问题,python3.5安装教程及环境配置,python3.7.2安装与配置,现在让我们一起来看看吧! python 从爬虫开始(一) Python 简介 首先简介一下Python和爬虫的关系与概念&am…...
ubuntu安装tomcat并配置前端项目
1.1查找 # 先更新 sudo apt update # 查找 apt search jdk1.2安装 sudo apt install openjdk-8-jdk1.3验证 java -version 2.安装tomcat 下载链接:Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi下载这个&…...
GeoPandas初体验:它是什么,我用它展示一下shp矢量数据
GeoPandas 是一个开源的 Python 库,用于处理地理空间数据。它扩展了 Pandas 这个流行的 Python 数据操作库,增加了对地理数据类型和操作的支持。GeoPandas 结合了 Pandas、Matplotlib 和 Shapely 的功能,提供了一个易于使用且高效的工具&…...
Python-滑雪大冒险【附源码】
滑雪大冒险 《滑雪大冒险》是一款充满趣味性和挑战性的休闲竞技游戏,在游戏中,玩家将扮演一位勇敢的滑雪者,在雪山上展示他们的滑雪技巧,游戏采用2D图形界面,以第三人称视角呈现 运行效果:用方向键及方向键…...
Linux---日志管理
本章主要介绍Linux中的日志管理 了解rsyslog是如何管理日志的查看日志的方法 日志管理简介 工作当中的日志,特指硬件和软件的日志,管理员可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志管理包括管理系统日志、应…...
Java高级技术-单元测试
单元测试 Junit单元测试框架 Junit单元测试-快速入门 方法类 测试类 Junit框架的基本注解...
springboot集成邮箱验证功能
准备工作 开启SMTP服务 前往你的邮箱网站,以网易邮箱为例,打开网易邮箱地址,登录你的邮箱,进入邮箱管理后台界面。点击“设置”》》“POP3/SMTP/IMAP”后,点击开启SMTP服务即可。 技术实现 Spring Boot 发送邮件验证…...
HarmonyOS应用程序框架——UIAbility实操
UIAbility概述 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。 每一个UIAbility实例,都对应于一个最近任务列表中的任务。 一个应用可以有一个UIAbility&…...
数实融合!低代码推动工业数字化转型走“深”向“实”
当下,“数字化、智能化”已经不再是新鲜词。毕竟,在早几年前就已经有企业喊出大举进军数字化的口号,轰轰烈烈的数字化转型运动也持续了很长一段时间,有一些业内人士甚至判断“如今的企业数字化已经走过了成熟期,来到了…...
OpenGL学习资料
1.学习网站 Song Ho Ahn LearnOpenGL GAMES101:现代计算机图形学入门 OpenGL 官网 2.书籍 Fundamentals of computer graphics OpenGL ES 3.0编程指南 计算机图形学(OpenGL版)第3版 3.参考的一些文章 颜色缓冲区 深度缓冲 VBO,VAO和EBO详解 深入探索透视投影变…...
字符串指令集
字符串指令的格式 例子1就成功发送了指令 例子2就是发送的字符串有误 查询当前位置就会在附加信息中返回当前座位的坐标 第一个指令的参数就是闪灯的两个参数 如第一个示例就是10ms On Time 第二个就是Off Time 使用标准库来接收字符串命令 字符串指令的接收 因为一个指令就是…...
线程池:Java 并发编程的核心武器
线程池:Java 并发编程的"核心武器" 线程池是管理和复用线程的高级工具,它能显著提高程序性能,避免频繁创建和销毁线程的开销。 为什么需要线程池? 没有线程池的问题 // 传统方式:来一个任务创建一个线程 pub…...
macOS高效录屏工具实战指南:从入门到专业的QuickRecorder应用技巧
macOS高效录屏工具实战指南:从入门到专业的QuickRecorder应用技巧 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com…...
Java 从入门到精通(八):抽象类和接口到底怎么选?看懂之后,面向对象才算真的入门
Java 从入门到精通(八):抽象类和接口到底怎么选?看懂之后,面向对象才算真的入门 学到封装、继承、多态之后,很多人会有一种“好像差不多懂了”的感觉。 会定义类,会 new 对象,也知道…...
Qwen3-VL-8B数据库课程设计:构建一个多模态商品智能检索系统
Qwen3-VL-8B数据库课程设计:构建一个多模态商品智能检索系统 最近有个学弟跑来问我,说数据库课程设计不知道做什么好,想做个有技术含量又能拿高分的项目。我给他提了个建议,用现在很火的多模态大模型,结合传统的数据库…...
MATLAB图像处理实战:用imfindcircles快速定位硬币边缘(附完整代码)
MATLAB图像处理实战:用imfindcircles快速定位硬币边缘(附完整代码) 在工业检测和医学影像分析中,圆形物体的精准定位往往是关键的第一步。无论是生产线上的硬币质量检查,还是显微镜下的细胞计数,快速准确地…...
Ubuntu 18.04双网卡实战:5分钟搞定内网穿透+NAT转发(含DHCP自动分配)
Ubuntu 18.04双网卡配置全指南:从内网穿透到自动化管理 在实验室环境或小型办公网络中,经常需要一台主机同时连接内外网。Ubuntu 18.04作为长期支持版本,其网络功能稳定可靠,特别适合作为网关设备。本文将手把手教你如何配置双网卡…...
告别手动建模!用Blender GIS插件5分钟搞定CARLA地图(附OSM数据源)
告别手动建模!用Blender GIS插件5分钟搞定CARLA地图(附OSM数据源) 在自动驾驶仿真领域,快速构建高精度地图一直是开发者的痛点。传统手动建模方式不仅耗时费力,还难以保证道路网络的拓扑准确性。现在,通过…...
深入FFmpeg解码器:从avcodec_send_packet看硬解与软解的实现差异
深入FFmpeg解码器:从avcodec_send_packet看硬解与软解的实现差异 在多媒体处理领域,FFmpeg无疑是开发者最常接触的开源框架之一。其强大的编解码能力支撑着从视频播放器到直播系统的各类应用,而解码器作为其中的核心组件,其性能直…...
实测有效方案:星图平台一键部署Qwen3-VL:30B,接入飞书提升办公效率
实测有效方案:星图平台一键部署Qwen3-VL:30B,接入飞书提升办公效率 1. 为什么选择Qwen3-VL:30B作为办公助手 1.1 办公场景中的图文处理痛点 在日常办公中,我们经常遇到需要同时处理图片和文字的场景。比如会议结束后,群里堆满了…...
CANoe实战:手把手教你用J1939.dbc发送超8字节长帧报文(附完整CAPL代码)
CANoe实战:J1939长帧报文分包发送全解析与CAPL代码优化 在汽车电子开发领域,J1939协议作为商用车通信标准,其长帧报文处理一直是工程师面临的典型挑战。当数据长度超过CAN总线单帧8字节限制时,如何高效实现分包传输?本…...
