WebRTC系列<二> 案例与工具

 阅读关于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/

猜你喜欢

转载自blog.csdn.net/rexfow/article/details/127901844