WebRTC系列<二> 案例与工具

news2024/11/25 4:40:33

 阅读关于webRTC的其他文章:

WebRTC系列<一> 什么是WebRTC?

WebRTC系列<二> 案例与工具

---------------------------------案例---------------------------------

webrtc官网 : 官网示例代码github地址

**Web RTC Full Course & More JS **
https://www.youtube.com/watch?v=QsH8FL0952k&t=1s
github:GitHub - divanov11/WebRTC-Simple-SDP-Handshake-Demo: Simple app to demonstrate how two peers exchange SDP offer and SDP Answer WITHOUT signaling.

Unity WebRTC youtube
https://www.youtube.com/watch?v=WuCnytHZkTM

WebRTC - The technology that powers Google Meet/Hangout, Facebook Messenger and Discord
https://dev.to/calvinqc/webrtc-the-technology-that-powers-google-meet-hangout-facebook-messenger-and-discord-4j67
 WebRTC代表网络实时通信,这是一个网络技术在2011年推出的谷歌,使实时音频、视频和数据传输在网络和本地浏览器。      
“它的使命是使丰富、高质量的RTC应用开发的浏览器,移动平台和物联网设备,并允许他们通过一组通用的交流协议。”      
WebRTC允许web应用程序创建点对点通信。

WebRTCGame
GitHub - wawesomeNOGUI/webrtcGameTemplate: A template for making real-time online games with web browsers as clients and a pion backend as a server.
一个模板进行实时在线游戏于服务器-客户机结构,web浏览器作为客户端和介子后端服务器。      
最大的挑战,使实时在线浏览器游戏(又名.io游戏)是没有办法发送一个浏览器客户机下结论UDP数据包。WebRTC解决这个问题通过允许您浏览器之间的安全连接客户端和一个介子表演就像UDP客户端然后发送数据包。无序的、不可靠的SCTP香草UDP数据包将完全一样,但由于加密。在这个例子中,我们将使用一个不可靠,下令SCTP包。我们将包括命令标签datachannel因为任何收到比最后一个数据包接收数据包将会下降,让每个客户认为收到的每条消息的能力是最近从服务器更新。      
玩家控制我们可靠地向服务器发送什么客户端(SCTP像TCP),所以每一个球员动作可以考虑由服务器没有任何消息。

WebRTC samples
Canvas to peer connection
茶壶是使用WebGL画在画布上的元素。流捕获从画布上使用其captureStream()方法并通过对等连接流视频元素在右边。

---------------------------------工具---------------------------------

 信令服务器Socket.IO
Introduction | Socket.IO
Socket.IO 是一个库,可在客户端和服务器之间实现低延迟、双向和基于事件的通信。

 信令服务器原理:WebRTC信令服务器原理 - 知乎

使用 Nodejs 下的 socket.io 库来实现 WebRTC 信令服务器。socket.io特别适合用来开发WebRTC的信令服务器,通过它来构建信令服务器特别的简单,这主要是因为它内置了**房间** 的概念。

上图是 socket.io 与 Nodejs配合使用的逻辑关系图, 其逻辑非常简单。socket.io 分为服务端和客户端两部分。服务端由 Nodejs加载后侦听某个服务端口,客户端要想与服务端相连,首先要加载 socket.io 的客户端库,然后调用 `io.connect();`就与服务端连上了。

搭建信令服务器

需要特别强调的是 socket.io 消息的发送与接收。socket.io 有很多种发送消息的方式,其中最常见的有下面几种,是我们必须要撑握的:

//-----------------给本次连接发消息
//给本次连接发消息
socket.emit()

//给某个房间内所有人发消息
io.in(room).emit()

//除本连接外,给某个房间内所有人发消息
socket.to(room).emit()

//除本连接外,给所以人发消息
socket.broadcast.emit()

//-----------------消息又该如何接收呢?

//发送 command 命令
S: socket.emit('cmd’);
C: socket.on('cmd',function(){...});

//送了一个 command 命令,带 data 数据
S: socket.emit('action', data);
C: socket.on('action',function(data){...});

//发送了command命令,还有两个数据
S: socket.emit(action,arg1,arg2);
C: socket.on('action',function(arg1,arg2){...});

 摘自:WebRTC 入门教程(一)| 搭建WebRTC信令服务器 | WebRTC中文网-最权威的RTC实时通信平台

node-webrtc
GitHub - node-webrtc/node-webrtc: node-webrtc is a Node.js Native Addon that provides bindings to WebRTC M87
node-webrtc是一个节点。js本机提供绑定WebRTC M87的插件。这个项目的目的是规范的依从性,使用W3C web-platform-tests项目进行了测试。大量非标准api还包括用于测试。

NAT、STUN和ICE
WebRTC笔记(四)NAT、STUN和ICE - jiayayao - 博客园

NAT穿透
NAT穿透(UDP打洞)_Jason snow的博客-CSDN博客_udp打洞

stun/turn服务器部署
stun/turn服务器部署 - led二极管 - 博客园

coturn
GitHub - coturn/coturn: coturn TURN server project
免费的开源实现 TURN 和 STUN 服务,把服务器是一个网络媒体交通NAT遍历服务器和网关。
它可以作为一个通用的网络流量把服务器和网关,。      
在线管理界面(/ telnet或/ HTTPS)将服务器是可用的。      
实现还包括一些额外的实验功能。
coturn项目的stun/turn服务器搭建

ZLMediaKit
流媒体服务器之 ZLMediaKit介绍_音视频开发老舅的博客-CSDN博客_zlm流媒体服务器
• 基于C++ • 支持协议:RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、GB28181、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4、MP4、WebRTC • 基于多路复用/多线程/异步网络IO、并发性能好 • 经过长期的市场验证 • 支持linux、macos、ios、android、windows • 画面延控制在500毫秒内,最低可达100毫秒 • 提供 C API做为SDK,语言也可以直接调用API • 可以直接部署为MediaServer服务器 • 提供restful api、web hook • 支持H265/H264/AAC/G711/OPUS • 支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能 • 单机10W级别播放器,100Gb/s级别io带宽
github

UE5 Pixel Streaming SDK
GitHub - inveta/peer-stream: Lightweight WebRTC SDK for UnrealEngine's PixelStreaming
EpicGame heavily-designed SDK的像素流相比,peer-stream。js是一个轻量级的WebRTC 0依赖的类库,包含一个前端组件(使用WebComponents API),连同一个信令服务器(使用NodeJS)。

Unity and WebRTC
WebRTC | WebRTC | 2.4.0-exp.11
WebRTC for Unity 是一个允许在 Unity 中使用WebRTC的软件包。
首先,请检查要求以确保您期望的平台受支持。
要开始使用,请参阅安装和教程页面。该软件包还提供了许多示例。查看示例页面以了解如何使用它们。此外,Unity 渲染流送还使用此包来提供更高层的 API。

Github repo with STUN servers:
https://gist.github.com/pabloviera15/3720642d93b4841f8283e47587327ee3

ngrok内网穿透
ngrok - Online in One Line
最全ngrok实现内网穿透详细教程(windows linux)

--------------------------WebRTC搭建工具----------------------------

 信令服务器:Socket.IO
Introduction | Socket.IO
Socket.IO 是一个库,可在客户端和服务器之间实现低延迟、双向和基于事件的通信。

 信令服务器原理:WebRTC信令服务器原理 - 知乎

使用 Nodejs 下的 socket.io 库来实现 WebRTC 信令服务器。socket.io特别适合用来开发WebRTC的信令服务器,通过它来构建信令服务器特别的简单,这主要是因为它内置了**房间** 的概念。

Stun和Turn服务器:Coturn

步骤顺序大概是这样的: 

1. 尝试直连.

2. 通过stun服务器进行穿透

3. 无法穿透则通过turn服务器中转. 

stun 服务器比较简单. 网上也有很多公开的stun服务器可以用于测试. 例如 stun.ideasip.com

无法穿透的时候就需要 turn 服务器来保证视频通话的成功率. 

turn 包含了stun的功能. 所以只需要部署turn服务器即可. 

服务器代码可以从这里获取 原文点这里: https://code.google.com/p/coturn/

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

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

相关文章

【Raspberry Pi】搭建NAS流媒体播放器 + ARIA2 + YAAW + 迅雷下载系统

由于种(gu)种(ji)原(cuo)因(wu)新买的Pi并没有用于任何项目上,看着它一天一天的封尘,于心不忍终于让它也做了点事。恰好这几天家里网络晚上有点卡&#xff0c…

数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(二)

文章目录3. 时序电路的设计3.1 触发器3.1.1 最简单的D触发器3.1.2 带复位端的D触发器3.1.3 复杂功能的D触发器(没有太大必要)3.1.4 T触发器3.2 计数器3.2.1 二进制计数器3.2.2 (重要)任意进制计数器3.3 移位寄存器3.4 序列信号发生…

docker命令整理

第一次安装 查看docker是否安装成功 docker version 测试hello-world docker run hello-world –help 帮助 查看详细信息 docker info 搜索docker镜像网址:https://hub.docker.com/search 查看 查看cpu实时内存 docker stats 镜像关键字:images -…

MySQL-Redis进阶生成全局唯一ID

单体全局ID 场景一、随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,所以他们的id是不能一样的, …

阿里最新财报:中国商业分部收入下滑1%,年内股价累计下跌34%

11月17日,阿里巴巴集团(下称“阿里巴巴”,HK:09988、NYSE:BABA)公布2023财年第二季度(对应自然年2022年第三季度)业绩。财报显示,阿里巴巴2022年第三季度的收入为人民币2071.76亿元(…

[附源码]java毕业设计流浪动物领养系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

计算机中的加法器和比较器

本节展示了计算机中的加法器和比较器的底层实现电路设计。 加法器 计算机中加法器的实现依赖门的结构,如果是两个十进制进行加减,则首先把右边的两个0-9之间的数相加,它们的总和在0-18之间,如果答案是0-9之间,则直接写…

Vue--》详解vue组件及其组件化的使用

目录 Vue组件 非单文件组件 单文件组件 组件的组成部分 组件中定义methods方法 vue-cli中组件的使用步骤 vue-cli中注册全局组件 组件的props属性 props中的常用属性 组件间的样式冲突 Vue组件 vue是一个支持组件化开发的前端框架。什么是组件化开发?组件…

那些年我们遇到过的奇葩面试官

做了几年软件开发,我们都或多或少面试过别人,或者被别人面试过。大家最常吐槽的就是面试造火箭,进厂拧螺丝。今天就来吐槽一下那些奇葩(gou)一样的面试官 A 那是在我刚工作1年的时候,出去面试前端开发。 那…

虚拟筛选、高通量实验筛选化合物库

Kynurenine Pathway Library (含12,300种化合物) 靶向犬尿氨酸代谢途径关键酶的新型化合物库 KynureninePathway (犬尿氨酸途径, KP)是色氨酸代谢的主要途径,参与多个病理、生理过程。研究发现阿尔茨海默病、帕金森氏症等多种神经退行性疾病中的 KP 代谢产物水平…

hevc 继续色度半像素差值

1 前面已经讲了亮度的半像素差值,接下来讲一下色度的半像素差值。 亮度分量的运动估计已经精确到了1/4的精度,并且速度分量的分辨率是亮度分量的一般,所以色度插值需要精确到1/8的精度,色度分数像素插值按照基于离散余玄变换的4抽…

写代码有这20个好习惯,可以减少90%非业务的bug

每一个好习惯都是一笔财富,本文整理了写代码的20个好习惯,每个都很经典,养成这些习惯,可以规避多数非业务的bug!希望对大家有帮助哈,谢谢阅读,加油哦~ 修改完代码,记得自测一下 「改…

C++初探 5-2(while循环 do while循环 输入 二维数组)

目录 注 while循环 for 与 while 编写延时循环 do while循环 基于范围的for循环(C11) 循环和文本输入 使用原始的cin进行输入 使用cin.get(char)进行补救 使用不同的cin.get( ) 文件尾条件 另一个cin.get( )版本 嵌套循环和二维数组 初始化…

长视频又添新变数

配图来自Canva可画 互联网广告市场依旧没有等来春天。据QuestMobile数据显示,2021下半年,中国互联网广告市场规模为3578.2亿元,而在2022年上半年这一数值下降至2903.6亿元,且同比增长率为-2.3%。 反应到具体的互联网平台上&…

[附源码]java毕业设计流浪动物救助网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Zookeeper系列——概述

Zookeeper系列——概述Zookeeper官方文档模型结构模型的特点节点的类型持久节点(PERSISTENT)持久顺序节点(PERSISTENT_SEQUENTIAL)临时节点(EPHEMERAL)临时顺序节点(EPHEMERAL_SEQUENTIAL)安装Zookeeper启动进入容器连接zookeeper的cli配置文件(zoo_sample.cfg&…

基于微信小程序的足浴城消费系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…

m基于simulink的WCDMA通信链路仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 W-CDMA由ETSI NTT DoCoMo作为无线介面为他们的3G网路FOMA开发。后来NTTDocomo提交给ITU一个详细规范作为一个象IMT-2000一样作为一个候选的国际3G标准。国际电信联盟(ITU) 最终接受W-CDM…

ESP32-WROOM-32 ESP32 wifi模块基本参数与引脚定义

基本参数: WiFi描述标准FCC/CE/TELEC/KCC/SRRC/NCC协议 802.11 b/g/n/e/i (802.11n,速度高达150Mbps) A-MPDU和A-MSDU聚合,支持0.4μS防护间隔 频率范围2.4GHz~2.5GHz(2400M~2483.5M)蓝牙描述协议符合蓝牙v4.2BR/EDR和BLE标准射频 具有-98dB…

nosql课后答案

文章目录第一章 绪论1. NoSQL和关系型数据库在设计目标上有何主要区别?2. 简要总结一下NoSQL数据库的技术特点。第二章 NoSQL数据库的基本原理1. 描述分布式数据管理的特点。2 什么是CAP原理?CAP原理是否适用于单机环境?3. 简述BASE理论的具体…