srs webrtc推拉流环境搭建

news2024/10/5 21:25:12

官方代码https://github.com/ossrs/srs
拉取代码:

git clone https://github.com/ossrs/srs.git
cd  ./configure
make
./objs/srs -c conf/rtc.conf

conf/rtc.conf中,当推拉流浏览器在本地时,如果srs也在本地,那么可以使用官网默认。如果srs在公网上,由于srs是lite-ice端,导致他不会主动到srs获取自己的公网ip,因此需要在这里帮他指定 ,他才会把这个ip放到sdp中,发给full-ice的浏览器客户端。
切记不可以写为127.0.0.1,也会报上述错误,如果浏览器和srs都在一个pc上,也可以使用 “*” 如"candidate *;"

rtc_server {
    enabled on;
    listen 8000; # UDP port
    # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
    candidate $CANDIDATE; #如139.169.8.2;
}

运行起来以后,打开firefox或者chrome浏览器,打开:
推流地址:http://localhost:8080/players/rtc_publisher.html?stream=show&autostart=true
如果srs在公网的话需要改成https和对应的IP:
https://yourIP:8080/players/rtc_publisher.html?stream=show&autostart=true

在这里插入图片描述
拉流地址:http://localhost:8080/players/rtc_player.html?stream=show&autostart=true

如果srs在公网的话需要改称https和对应IPhttps://yourIP:8080/players/rtc_player.html?stream=show&autostart=true
在这里插入图片描述
这两个均为官网给定的地址,如果你的srs和浏览器不在同一个pc的话,那么不管是推拉流的网页地址还是界面里的URL地址中的localhost都要改称srs所在的ip地址。

其中的URL为:webrtc://localhost/live/show,这其中的live/show是可以自定义的,只要推拉流保持一致即可,当一个客户端向上推流,可以多个客户端拉流。那么其实我们可以把live看成房间名字,show看成成员id,那么成员show2可以向live中的webrtc://localhost/live/show2推流,其他客户端拉这个地址也能拉到。

关于信令的交互:我们打开这个推拉流连接,那么浏览器就去所在的ip地址去寻找srs服务,然后与其中的https服务器交互,下载页面,当我们填好URL地址,点击开始推流或播放视频按钮时,我们的浏览器客户端先与https交互信令,比如推流和拉流信令等,具体可以参考如下连接,然后进行sdp交互,之后是stun bind request/response交互,之后是DTLS握手,然后开始建立好webrtc传输通道,正式传输音视频流。

http-api 信令https://ossrs.net/lts/zh-cn/docs/v4/doc/http-api
可以看关于webrtc只有推流和拉流的信令,因为信令非常业务性的,这里只给个demo,关于房间管理之类的的信令,要根据自己的需要自己实现信令服务器。

其实webrtc有自己的房间管理sfu如下连接,但这里的信令也只有推流,拉流,房间号,个人号。其实跟这个差不多,只是把自己的推拉和对其他成员的拉流放在一个界面里,在信令处理上,相当于每多一个客户推流,就会通知其他客户多拉一路流,并且自身拉已经存在的正在推流的客户,相当户多经营了这么一个信令。如果我们准备自己开发信令服务器,我建议还是在这篇环境的基础上开发,较为灵活。
srs one2one,one2many通话环境搭建

参考:
官方RTC TO RTC

B站官方教学视频

chrome的webrtc控制台,包含码率帧率,sdp交互信息等:chrome://webrtc-internals/
firefox也开发了这样的控制台:about:webrtc

srs控制台可以实时查看webrtc在线人数
在这里插入图片描述webrtc是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入webrtc微信群讨论。但记得备注:webrtc爱好者

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

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

相关文章

C++ STL - map 与 multimap用法和区别

目录 一、概述 二、用法 2.1、插入 2.2、拷贝与赋值 2.3、查找 2.4、删除 2.5、完整代码 三、其他成员类型 一、概述 map 与 multimap是存储key-value(键-值 对)类型的容器。不同之处在于:map只允许key与 value一一对应;…

在医疗影像领域,生成式模型可以做些什么?用什么平台快速实现?使用MONAI框架进行生成式模型开发

生成模型具有巨大的潜力,不仅有助于通过合成数据集安全地共享医疗数据,还可以执行一系列逆向应用,如异常检测、图像到图像翻译、去噪和MRI重建。然而,由于这些模型的复杂性,它们的实现和再现性可能很困难。 对于我这种…

图像分割项目中损失函数的选择

文章目录 前言场景:实际项目中,通常会有一个常见的问题:样本不均衡一、focal loss思考 二、Dice loss三、二分类未完待续 前言 在图像分割领域,最基础、最常见的损失当然是交叉熵损失 —— Cross entropy。随着不断的研究&#x…

一个java文件的JVM之旅

准备 我是小C同学编写得一个java文件,如何实现我的功能呢?需要去JVM(Java Virtual Machine)这个地方旅行。 变身 我高高兴兴的来到JVM,想要开始JVM之旅,它确说:“现在的我还不能进去,需要做一次转换&#x…

OceanBase 如何通过日志观测冻结转储流程?

本文旨在通过日志解析 OceanBase 的冻结转储流程,以其冻结检查线程为切入点,以租户(1002)的线程名为例。 作者:陈慧明,爱可生测试工程师,主要参与 DMP 和 DBLE 自动化测试项目。 爱可生开源社区…

2258. 逃离火灾 : 详解如何从「二分」到「分类讨论」(图解过程)

题目描述 这是 LeetCode 上的 「2258. 逃离火灾」 ,难度为 「困难」。 Tag : 「多源 BFS」、「二分」、「预处理」 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid,它表示一个网格图。 每个格子为下面 个值之一: 0 表示草地。 1 表…

【狂神说Java】SpringSecurity+shiro

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :【狂神说Java】 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台&#xff0c…

ShuffleNet系列 网络结构

文章目录 ShuffleNet V1Channel Shuffle:通道打散SuffleNet UnitModel Architecture实验结果 ShuffleNet V2Guideline 1Guideline 2Guideline 3Guideline 4模型结构代码 论文:ShuffleNet: ShuffleNet: An Extremely Efficient Convolutional Neural Netw…

2023年的低代码:数字化、人工智能、趋势及未来展望

本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 正如许多专家预测的那样,低代码平台在2023年将展现更加强劲的势头。越来越多的企业正在纷纷转向低代…

ArcGIS 气象风场等示例 数据制作、服务发布及前端加载

1. 原始数据为多维数据 以nc数据为例。 首先在pro中需要以多维数据的方式去添加多维数据,这里的数据包含uv方向: 加载进pro的效果: 这里注意 数据属性需要为矢量uv: 如果要发布为服务,需要导出存储为tif格式&…

spring 中 @Validated/@Valid

超级好的链接 添加链接描述

Vue实现面经基础版案例(路由+组件缓存)

一、面经基础版-案例效果分析 1.面经效果演示 2.功能分析 通过演示效果发现,主要的功能页面有两个,一个是列表页,一个是详情页,并且在列表页点击时可以跳转到详情页底部导航可以来回切换,并且切换时,只有…

AI:69-基于深度学习的音乐推荐

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

JavaScript脚本操作CSS

脚本化CSS就是使用JavaScript脚本操作CSS,配合HTML5、Ajax、jQuery等技术,可以设计出细腻、逼真的页面特效和交互行为,提升用户体验,如网页对象的显示/隐藏、定位、变形、运动等动态样式。 1、CSS脚本化基础 CSS样式有两种形式&…

OpenCV 在ImShow窗体上选择感兴趣的区域

窗体上选择感兴趣ROI区域 在计算机视觉处理中, 通常是针对图像中的一个特定区域进行处理, 有时候这个特定区域需要人来选择, OpenCV 也提供了窗口选择ROI机制. 窗体支持两种选择ROI区域的方法, 一个是单选, 一个是多选, 操作方法如下: 单选: 通过鼠标在屏幕上选择区域, 然后通过…

【Linux系统编程十六】:(基础IO3)--用户级缓冲区

【Linux系统编程十六】:基础IO3--用户级缓冲区 一.用户级缓冲区二.缓冲区刷新策略1.验证: 三.缓冲区意义 一.用户级缓冲区 我们首先理解上面的代码,分别使用printf和fprintf,fwrite往1号文件描述符里输出,也就是往显示…

论文阅读——InternImage(cvpr2023)

arxiv:https://arxiv.org/abs/2211.05778 github:https://github.com/OpenGVLab/InternImage 一、介绍 大部分大模型都是基于transformer的,本文是一个基于CNN的视觉基础模型。使用可变性卷积deformable convolution作为核心操作&…

docker复制镜像文件

一、复制镜像 #1. 查找本机已有的镜像docker images |grep xxxx#2. 将镜像复制出来指向到xxxx.tar的文件中 docker save 343cca04e31d > xxxx.tareg: 二、加载镜像 直接将拷贝好的镜像包直接加载即可 docker load < myimage.tar

【C++】一文简练总结【多态】及其底层原理&具体应用(21)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.多态的概念二.多态的实现1&#xff…