srs webrtc推拉流环境搭建(公网)

本地环境搭建
官方代码https://github.com/ossrs/srs
拉取代码:

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

srs在公网上,由于srs是lite-ice端,导致他不会主动到srs获取自己的公网ip,因此需要在这里帮他指定 ,他才会把这个ip放到sdp中,发给full-ice的浏览器客户端。
切记不可以写为127.0.0.1。
本地环境搭建参考另一篇:srs webrtc推拉流环境搭建(本地)

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

也可以在外部给变量赋值:CANDIDATE=“139.169.8.2”

运行起来以后,打开firefox或者chrome浏览器,打开:
https://118.190.201.242:8088/players/rtc_publisher.html?autostart=false&stream=livestream&api=1990&schema=https
注意这里与本地部署srs相比,http改为https,端口号改为8088,新增api端口1990。
在这里插入图片描述

如果srs在公网的话需要改称https和对应IPhttps://118.190.201.242:8088/players/rtc_player.html?autostart=false&stream=livestream&api=1990&schema=https
在这里插入图片描述

其中的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在线人数
在这里插入图片描述
docker启动

sudo docker run --rm --env CANDIDATE=$CANDIDATE   -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp   registry.cn-hangzhou.aliyuncs.com/ossrs/srs:6.0-d2

进入docker不启动,加-it和bash

sudo docker run --rm -it --env CANDIDATE=$CANDIDATE   -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp   registry.cn-hangzhou.aliyuncs.com/ossrs/srs:6.0-d2   bash

srs在线whip/whep客户端:
在以上环境中点击,whip按钮,点击推流 / 点击whep按钮,点击拉流,即可使用whip协议进行webrtc通话,obs最新版也支持了whip,它将成功webrtc的默认主流信令交互协议,上文的测试环境中,webrtc的信令是srs自定义的。
srs在线rtc播放器
https://ossrs.net/players/rtc_publisher.html

webrtc是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入webrtc微信群讨论。但记得备注:webrtc爱好者

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七天.NET 8操作SQLite入门到实战 - SQLite 简介

什么是SQLite? SQLite是一个轻量级的嵌入式关系型数据库,它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几…

《崩坏:星穹铁道》1.5仙舟罗浮-绥园全宝箱攻略

大家好,我是闲游盒小盒子,本篇来说下崩铁1.5版本仙舟罗浮-绥园的全宝箱攻略,共有19个宝箱加1个扑满;做完间章可获取前14个普通宝箱加2个精英怪宝箱,以及1个扑满;完成《狐斋志异》全任务可获得另外3个宝箱。…

Visio免费版!Visio国产平替软件,终于被我找到啦!

作为一个职场人士,我经常需要绘制各种流程图和图表,而Visio一直是我使用的首选工具。但是,随着公司的发展和工作的需要,我逐渐发现了Visio的优点和不足。 首先,让我们来看看Visio的优点。Visio是一个专业的流程图和图…

pytho你-opencv划痕检测

pytho你-opencv划痕检测 这次实验,我们将对如下图片进行划痕检测,其实这个比较有难度,因为清晰度太差了。 我们做法如下: (1)读取图像为灰度图像,进行自适应直方图均衡化处理,增强…

使ros1和ros2的bag一直互通

很多文章都是先source ros1 然后source ros2,再play bag source /opt/ros/noetic/setup.bash source /opt/ros/foxy/setup.bash ros2 bag play -s rosbag_v2 kitti_raw00.bag 但实测会出问题: 为使ros1和ros2的bag一直互通 sudo apt update sudo apt install ros-foxy-ro…

从0开始学习JavaScript--JavaScript使用Promise

JavaScript中的异步编程一直是开发中的重要话题。传统的回调函数带来了回调地狱和代码可读性的问题。为了解决这些问题,ES6引入了Promise,一种更现代、更灵活的异步编程解决方案。本文将深入探讨JavaScript中如何使用Promise,通过丰富的示例代…

Django 路由配置(二)

一、路由 就是根据用户请求的URL链接来判断对应的出来程序,并返回处理结果,也是就是URL和django的视图建立映射关系. 二、Django请求页面的步骤 1、首先Django确定要使用的根URLconf模块,通过ROOT_URLCONF来设置,在settings.py配置…

flink的window和windowAll的区别

背景 在flink的窗口函数运用中,window和windowAll方法总是会引起混淆,特别是结合上GlobalWindow的组合时,更是如此,本文就来梳理下他们的区别和常见用法 window和windowAll的区别 window是KeyStream数据流的方法,其…

科大讯飞 vue.js 语音听写流式实现 全网首发

组件下载 还是最近的需求,页面表单输入元素过多,需要实现语音识别来由用户通过朗读的方式向表单中填写数据,尽量快的、高效的完成表单数据采集及输入。 国内科大讯飞在语音识别方面的建树还是有目共睹,于是还是选择了科大讯飞的平…

IP地理位置定位技术:保护网络安全的新利器

随着互联网的普及和网络活动的日益频繁,网络安全问题越来越受到人们的关注。恶意流量攻击、网络欺诈等网络安全威胁层出不穷,如何准确识别和定位网络攻击者成为一项重要任务。在这个背景下,IP地理位置定位技术应运而生,为网络安全…

机器人制作开源方案 | 钻孔植树一体化沙漠车

作者:徐邦国、张博宇、刘露、李晶晶、吕洁秀单位:天津职业技术师范大学 机械工程学院指导老师:何永利 摘要:本项目旨在设计一种专用于沙漠植树的植树车,以沙漠自动化植树为研究对象,提出一种创新式钻…

[uni-app]记录APP端跳转页面自动滚动到底部的bug

文章目录 bug描述原因分析: 处理方案 bug描述 1.点击的A页面, 跳转到了B页面, 第一次页面正常显示 2.从B页面返回A页面 3.A页面不进行任何操作,再次点击A页面进入B页面 4.B页面自动滚动到底部. 原因 看一段A页面代码 let that thisthis.defaultScrollTop uni.getStorageSy…

[github初学者教程] 分支管理-以及问题解决

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于新西兰奥克兰大学攻读IT硕士学位。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域…

Unity--互动组件(Scrollbar)||Unity--互动组件(DropDown )

此组件中的,交互,过渡,导航与文章(Unity--互动组件(Button))中的介绍如同; handle rect:(父节点矩形) 用于控件的滑动“句柄”部分的图形&#xf…

什么是RS485通信

RS-485是一种通讯接口标准,RS就是Recommended Standard的缩写(推荐标准的意思)485是标识号。 RS485采用总线的接线方式,广泛应用于数据采集和控制,它的主要优点之一是它允许将多个RS485设备放在同一条总线上。 多设备…

苹果CMS首涂第30套可装修DIY主题模板免授权版

这是一款可以装修的主题,类似淘宝店装修一样,可以针对首页、栏目页、详情页、播放页进行自定义装修,内置10个模块自由选择、添加、修改、删除、排序操作,后续升级还会增加更多实用和个性模块供选择,主题内包含的导航、…

OpenVPN Connect使用连接公网VPN服务器实现内网穿透

安装并运行OpenVPN Connect 点击AGREE 添加配置.OVPN文件 点击连接 连接成功 两个内网主机通过公网VPN穿透

类与对象(上篇)

前言 在之前我们学的C入门主要是为现在学习类与对象打基础,今天我们才算真正开始学习C了。因为类与对象的知识点比较多,所以我们将它分为三部分讲解,今天我们学习类与对象的上篇。 一、面向过程和面向对象的初步认识 1、面向过程 面向过程顾…

工作记录---为什么双11当天不能申请退款?(有趣~)

为什么? 服务降级了 服务降级: 当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。 分布式系统的降级…

OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建

目录 一、OpenCV 二、OpenCvSharp 三、OpenCvSharp开发环境搭建 四、下载 五、其他 一、OpenCV OpenCV是基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习函数库,支持Windows、Linux、Android和Mac OS操作系统。OpenCV由一系…