Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)

news2024/11/28 0:55:22

前言

若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。

这个开源项目资料比较全,笔者仅在此记录下搭建过程

一、准备

1.操作系统ubuntu22.04 64位 x86架构(建议更新到最新)

2.安装编译器相关,执行如下命令

sudo apt-get install build-essential

二、获取源码并编译

源码下载

git clone -b develop https://gitee.com/ossrs/srs.git

注意: 建议使用国内的代码库,下载速度快一些

切换到srs/trunk目录,并编译

cd srs/trunk
./configure --ffmpeg-opus=on
make

 注:音频编码需要支持opus,所以记得需要添加ffmpeg-opus选项

若是需要播放网络摄像头的画面,建议使用如下编译选项

cd srs/trunk
./configure --gb28181=on --ffmpeg-opus=on
make

注:摄像头推流建议使用gb28181,视频选择x264编码,音频选择AAC编译 

三、 设置配置文件,并启动服务

编译完成后,在conf目录下有多个配置文件,即可以直接使用,也可以修改或创建新的配置文件

笔者为方便测试,参考https.rtc.conf和push.gb28181.conf两个配置,合并成https.push.gb28181.conf,以方便测试

说明:

1.使用SRS的web端推流,需要使用https协助的接口,相关配置在https.rtc.conf中

2.播放网络摄像头的视频流,相关配置在push.gb28181.conf中

准备好配置文件后,就可以启动SRS服务器了,执行如下命令

CANDIDATE="192.168.1.10"
./objs/srs -c conf/https.push.gb28181.conf

若是在公网测试,CANDIDATE的地址设置成公网IP

若是在本地测试,CANDIDATE的地址设置成服务器网卡的IP 

检查SRS是否成功启动,可以打开 http://192.168.1.10:8080,或者执行命令:

# 查看SRS的状态
./etc/init.d/srs status

# 或者看SRS的日志
tail -n 30 -f ./objs/srs.log

四、推拉流测试

访问http://192.168.1.0:8080或https://192.168.1.0:8088

如下所示

 可以通过SRS控制台,查看相关流信息

 进行SRS播放器,可以查看流信息

 需要注意的是,若使用非默认端口的,需要手工修改下对应的端口,如下图所示

 注:若需要web推流测试,且SRS没有安装在本地,需要使用https协议的接口

 笔者测试项目如下

1.web推流,web拉流播放

2.gb28181推流,web拉流播放

3.webrtc native推流,web拉流播放

4.web推流,webrtc native拉流播放

5.gb28181推流,webrtc native拉流播放

6.webrtc native推流,webrtc native拉流播放

目前各测试项目工作正常

后记

本文档记录的是笔者的测试过程,有几点问题,笔者强调下

1.webrtc native默认推流使用opus音频编码,SRS默认使用AAC音频编码,建议在SRS中启用opus音频编码

注:每路音频编码AAC转opus都会消耗服务器资源的,不要开太多

2.webrtc native默认本地不启用h264编码的,需要自己打开相关编译选项;部分支持硬件加速的Android设备会启用h264,需要在编译时开户软解码。否则SRS默认默认不支持的,接口上会返回400错误

3.webrtc默认使用udp传输数据的,不建议修改成tcp

4.为测试方便,建议关闭浏览器的跨域限制

以谷歌浏览器为例:

在浏览器地址栏输入

chrome://flags/#block-insecure-private-network-requests

Block insecure private network requests.项的Default改为Disabled即可。

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

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

相关文章

移远通信率先完成多场5G NTN技术外场验证,为卫星物联网应用落地提速

近日,由中国电信卫星公司牵头,移远通信联合紫光展锐、鹏鹄物宇等行业上下游合作伙伴,针对现有蜂窝通信在信号覆盖盲区,信息监测数据无法实时回传等痛点问题,以领先行业的速度开展了一系列的5G NTN(non-terr…

Unity入门7——物理系统之碰撞检测

一、刚体 Rigid Body ​ 刚体利用体积(碰撞器 Collider)进行碰撞计算,模拟真实的碰撞效果,产生力的作用 ​ 碰撞产生的必要条件: 两个物体都有碰撞器 Collider至少一个物体有刚体 Mass:质量 默认为千克&a…

postman自动化实战总结

Postman实战总结 简介 本次实战内容主要包括如下几点: l 背景介绍 l Postman使用,侧重于自动化实现,基础使用不做介绍 l 可视化Newman介绍 l 框架特色 l 实战中的坑 背景 随着国内软件技术的高速发展,越来越多的手工测试…

Qgis2threejs

three.js是JavaScript编写的一个开源的3D图形库,它可以用于创建各种各样的交互式3D应用程序和动画。该库提供了一系列的工具和功能,使得在Web浏览器中创建高质量的3D图形变得更加容易。 使用three.js,您可以轻松地创建3D场景,包括…

GoogleNet

Introduction 得益于深度学习的优势和更强大的卷积神经网络的出现,图像分类和目标检测的准确率发生了令人意想不到的进步。在2014年的ILSVRC比赛中,GoogLeNet取得了第一名的成绩,所用模型参数不足AlexNet(2012年冠军)…

基于Java医院住院管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

记录使用gswin64.exe合并多个pdf为一个pdf

目录 下载gs920w64.exe 安装 配置相关信息 验证是否安装配置成功 合并多个pdf文件 下载gs920w64.exe https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs920 ​ 安装 正常安装,记住自己的安装目录: ​ 配置相关信息 安装…

限流与令牌桶

一、概述 令牌桶是一种常用的流量控制技术。令牌桶本身没有丢弃和优先级策略。 原理 1.令牌以一定的速率放入桶中。 2.每个令牌允许源发送一定数量的比特。 3.发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。 4…

跟着《代码随想录刷题》(六)—— 二叉树

6.1 二叉树的前、中、后序遍历 144.、二叉树的前序遍历&#xff08;中左右&#xff09; LeetCode&#xff1a;114、二叉树的前序遍历 &#xff08;1&#xff09;递归法 class Solution { public:void traversal(TreeNode* cur, vector<int>& vec) {if (cur N…

eslint + prettier如何搭配使用

简介 eslintprettier写代码爽到飞起&#xff0c;既规范了代码的格式&#xff0c;同时也让你的代码美观易读。本文介绍如何在项目中使用eslint搭配prettier来规范你的代码 1.eslint 和 prettier区别 先来回答一个问题&#xff0c;eslint和prettier这二者有啥区别&#xff0c;es…

【后端面经-数据库】MySQL的事务隔离级别简介

【后端面经-数据库】MySQL的事务隔离级别简介 0. 事务的概念1. 三类问题2. 事务隔离级别3. 操作指令4. 总结5. 参考博文 0. 事务的概念 事务指的是一连串的集中操作指令&#xff0c;一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点&#xff0c;简记作A…

表示学习(Representation Learning) Part2--Auto-Encoders、VAEs、GANs

文章目录 Compression:Auto-EncodersCapture parameter distribution (variance): Variational Auto-Encoders原理介绍数学推导生成数据diffusion modelsPros&Cons Train using a second network: GANs 来自Manolis Kellis教授&#xff08;MIT计算生物学主任&#xff09;的…

spark_idea

spark_idea 3、打jar包运行2、code1、pom_xml0、创建数据、模型、预测表0、Windows配置scala环境 3、打jar包运行 ./bin/spark-submit \--class spark02 \--master spark://hadoop102:7077 \--deploy-mode client \/home/gpb/scala_spark2.jar打jar包、存储到虚拟机中 编写执行…

什么是布隆过滤器?如何解决高并发缓存穿透问题?

日常开发中&#xff0c;大家经常使用缓存&#xff0c;但是你知道大型的互联网公司面对高并发流量&#xff0c;要注意缓存穿透问题吗!!! 本文会介绍布隆过滤器&#xff0c;空间换时间&#xff0c;以较低的内存空间、高效解决这个问题。 本篇文章的目录&#xff1a; 1、性能不…

IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一. SPI 实验 SPI实验&#xff1a;学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608&#xff0c;读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中&#xff0c;涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写&#xff0c;如下所示&#xff1a; IMX6ULL…

【ROS】RViz使用详解

1、安装 1.1 ROS1-RVIZ RVIZ的ROS1各个ubuntu版本中的安装命令 ubuntu14.04&#xff1a; sudo apt install ros-indigo-rvizubuntu16.04&#xff1a; sudo apt install ros-kinetic-rvizubuntu18.04&#xff1a; sudo apt install ros-melodic-rvizubuntu20.04&#xff1a…

Java厘米级高精准定位系统源码(支持UWB、蓝牙、WIFI定位)

高精准定位系统支持10厘米工业级高精准定位&#xff0c;同时支持UWB&#xff0c;蓝牙&#xff0c;WIFI定位。 ♦高精准定位系统首页为数据统计页面&#xff0c;统计的信息可以分为数量统计、区域告警人数统计、工牌使用量的统计、区域报警率统计以及告警消息的展示。 系统首页…

Pytest教程__常用执行参数详解(3)

前面讲了测试用例的执行方式&#xff0c;也认识了 -v -s 这些参数&#xff0c;那么还有没有其它参数呢&#xff1f;答案肯定是有的&#xff0c;我们可以通过 pytest -h来查看所有可用参数。 从图中可以看出&#xff0c;pytest的参数有很多&#xff0c;但并不是每一个参数都需要…

fiddler高级工具栏中的statistics数据分析工具

Fiddler statistics 板块会统计一个请求开始发出到最终接收并转发的数据&#xff0c;统计和响应的一些信息&#xff1a; 可以使用statistics分页&#xff0c;完成简单的性能测试&#xff0c;查看其接口的响应时间 如图展示&#xff1a; 如图详细解释下每一项的含义&#xff…

grep(General Regular Expression Parser)命令

基本用法 本篇介绍非常有用的命令是grep&#xff0c;这个不寻常的名字代表的是通用正则表达式解析器&#xff08;General Regular Expression Parser&#xff0c;简写为grep&#xff09;。你使用find命令在系统中搜索文件&#xff0c;而使用grep命令在文件中搜索字符串。事实上…