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

前言

若只是实现一对一通信,仅使用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即可。

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

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

相关文章

这些方法可以手写扫描识别

小伙伴们知道有一项技术是可以将我们手写的东西识别出来吗?这一项创新的技术就是手写识别功能,它能够将手写内容快速转换为数字或文本格式,并提高信息处理和管理的效率。而且相比传统的手工记录方式,手写识别功能具有较高的准确性…

多行文本溢出显示省略号

1.css 实现单行省略 .ellipsis{white-space: nowrap;text-overflow: ellipsis; overflow: hidden;}2.在WebKit浏览器或移动端(绝大部分是WebKit内核的浏览器)的页面,直接使用WebKit的CSS扩展属性(WebKit是私有属性)-webkit-line-clamp 。 -w…

openEuler 开源汇智赢未来|2023开放原子全球开源峰会OpenAtom openEuler 论坛成功召开

6 月 12 日,2023 开放原子全球开源峰会 OpenAtom openEuler 分论坛在北京成功召开。分论坛以“openEuler 汇众智,奔涌向前赢未来”为主题,展示了 openEuler 社区的最新成果,阐述了 openEuler 开源开放的发展模式,介绍了…

在字节跳动和阿里划水4年,过于真实了...

先简单交代一下吧,涛哥是某不知名211的本硕,18年毕业加入阿里,之后跳槽到了头条,一直从事测试开发相关的工作。之前没有实习经历,算是四年半的工作经验吧。 这四年半之间他完成了一次晋升,换了一家公司&am…

移动设备管理:自带设备办公(BYOD)管理

什么是自带设备办公(BYOD) 自带设备办公(BYOD)指一些企业允许员工携带自己的笔记本电脑、平板电脑、智能手机等移动终端设备到办公场所,并可以用这些设备获取公司内部信息、使用企业特许应用的一种政策,企…

【备战秋招】每日一题:4月29日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

继承—JavaSE

文章目录 1.基础知识1.1继承的概念1.2语法 2子类对从父类继承下来的成员的访问2.1对成员变量的访问2.2对成员方法的访问 3.super关键字3.1访问父类的成员变量(super.变量)3.2访问父类的成员方法(super.方法)3.3调用父类的构造方法…

估计一个点云的表面法线

包含相关头文件 #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/features/normal_3d.h> #include <pcl/visualization/pcl_visualizer.h> 定义了两个类型别名 PointT 和 PointNT&#xff0c;用于表示输入点云和输出点云中各…

第14届蓝桥杯国赛真题剖析-2023年5月28日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第149讲。 第14届蓝桥杯Scratch国赛真题&#xff0c;这是2023年5月28日上午举办的全国总决赛&#xff0c;比赛仍然采取…

进程管道:popen函数实例

基础知识 可能最简单的在两个程序之间传递数据的方法就是使用popen和pclose函数了。它们的原型如下所示&#xff1a; #include <stdio.h>FILE *popen(const char *command, const char *type);int pclose(FILE *stream); 1&#xff0e;popen函数 popen函数允许一个程…

FTL没有映射,跟发工资没有钱有什么区别

大家好&#xff0c;我是五月。 前言 FTL&#xff08;Flash Translation Layer&#xff09;&#xff0c;即闪存转换层&#xff0c;是各种存储设备的核心算法&#xff0c;作用是将Host传下来的逻辑地址转换成物理地址&#xff0c;也就是映射。 地址映射是FTL最原始最基本的功能…

苹果手机之间如何互传照片?批量传输操作指南

很多时候&#xff0c;我们用手机拍摄了好看的照片或者收藏了一些有趣的图片&#xff0c;想要分享给朋友&#xff0c;却不知道苹果手机之间如何互传照片&#xff1f;在分享大量照片的时候不清楚如何批量操作&#xff1f;别担心&#xff0c;下面小编就来分享一下苹果手机照片传输…

海思3559万能平台搭建:SPI输出h264码流

前言 面对各种各样的客户需求&#xff0c;spi接口也是一种传码流的形式&#xff0c;spi同步422可以保证抗干扰能力强的同时传输距离也很长&#xff0c;本文会介绍海思平台spi作为主机的发送功能以及发送码流的处理方式 1. 管脚复用&#xff1a; 首先需要配置的肯定是管脚复用&…

Linux进程间通信【共享内存】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、什么是共享内存&#xff1f;2、共享内存的相关知识2.1、共享内存的数据结构…

load_dataset加载huggingface数据集失败

1. 一般的加载方式 from datasets import load_dataset dataset_dict load_dataset(cmrc2018)这种加载方式可能会显示因为连接问题导致失败&#xff0c;此时可以在hugging face里面找到对应的页面下载下来 然后改一下代码&#xff1a; from datasets import load_dataset d…

springmvc整合thymeleaf

概述 Thymeleaf提供了一组Spring集成&#xff0c;使您可以将其用作Spring MVC应用程序中JSP的全功能替代品。 这些集成将使您能够&#xff1a; Controller像使用JSP一样&#xff0c;将Spring MVC 对象中的映射方法转发到Thymeleaf管理的模板。在模板中使用Spring表达式语言&…

罗马不是一天建成的,那为什么建了那么多罗马?

这一个罗马&#xff0c;那一个罗马&#xff0c;东一个罗马&#xff0c;西一个罗马&#xff0c;世界历史的大半部分都在跟罗马打交道。更要命的是四大文明古国还没有古代罗马。 存在感这么强&#xff0c;还不是四大文明古国&#xff0c;名字还难记&#xff0c;公元前居然就有共…

【C++】在线编译器推荐,让你随时随地编写代码

▒ 目录 ▒ &#x1f6eb; 问题描述环境 1️⃣ 支持调试网站Repl.itOnlineGDB 2️⃣ 不支持调试网站Wandboxjson.cnjdoodletutorialspointcppshellideonecoliruonline-ide 3️⃣ 性能分析网站Quick C BenchmarkCompare C Builds 4️⃣ 其它C Insights&#xff08;学习模板、C11…

Hightopo 使用心得(3)- 吸附与锚点

吸附与锚点是 HT for Web 中两个比较重要的概念。这两个概念在执行交互和动画时会经常被用到。 吸附&#xff0c;顾名思义&#xff0c;是一个节点吸附到另一个节点上。就像船底的贝类一样&#xff0c;通过吸附到船身&#xff0c;在船移动的时候自己也会跟着移动&#xff1b;而…

pandas---缺失值的处理

1. 处理缺失值 判断数据中是否包含NaN&#xff1a; pd.isnull(df)&#xff1b;pd.notnull(df) 存在缺失值nan: 删除存在缺失值的:dropna(axisrows) 不会修改原数据&#xff0c;需要接受返回值&#xff1b; 替换缺失值:fillna(value, inplaceTrue) value:替换成的值&#…