基于C++音视频高手课-WebRTC远程桌面后台服务实战
“夏のke”》3w ukoou com
WebRTC介绍
WebRTC(Web Real-Time Communication)是一种用于浏览器之间实时通信的开放源代码项目。虽然它最初设计用于实现音频和视频通话,但它也可以用于实现远程桌面控制,尽管这不是其最常见的用途之一。
远程桌面控制是一种技术,允许用户从一个地点控制另一个地点的计算机桌面。使用WebRTC实现远程桌面控制可以提供以下优势:
-
实时性: WebRTC提供了实时通信的能力,使得远程桌面控制的操作几乎即时生效。
-
跨平台性: 由于WebRTC是基于Web的技术,它可以在几乎所有现代浏览器和操作系统上运行,包括Windows、macOS、Linux等。
-
安全性: WebRTC通常使用加密协议(如DTLS和SRTP)来保护通信内容的安全性,确保数据在传输过程中是加密的。
WebRTC远程桌面远程控实现制机与原理
-
获取桌面图像: 首先,需要捕获远程计算机的桌面图像。这可以通过桌面捕获技术来实现,通常使用屏幕截图或屏幕录制来获取当前屏幕上的图像。
-
编码图像数据: 捕获到的桌面图像需要被编码成一种能够在网络上传输的格式。常见的图像编码格式包括JPEG、H.264等。编码后的图像数据可以被传输给远程客户端。
-
传输图像数据: 使用WebRTC的数据通道,将编码后的图像数据传输给远程客户端。WebRTC提供了用于在浏览器之间建立点对点连接的API,这使得数据可以直接从发送方发送到接收方,而无需通过服务器中转。
-
解码图像数据: 在接收端,接收到的图像数据需要被解码成可视的图像。这通常涉及将接收到的数据解码成原始图像格式,以便在本地显示。
-
显示远程桌面: 解码后的图像数据可以被渲染到远程客户端的屏幕上,从而显示远程计算机的桌面内容。这样,用户就可以在本地控制远程计算机的桌面了。
基于C++音视频高手课-WebRTC远程桌面后台服务实战 - WebRTC远程桌面实战
主要分为三部分:web端(控制端)
、中继服务端
、被控端
,各部分的工作内容如下
web端
- 建立
Websocket
与服务端
通信 - 建立
Webrct
通道与被控端
通信 - 远程桌面
视频流的渲染
- 反向控制(
键、鼠
:按比例将数据下发)
被控端
- 建立
Websocket
与服务端
通信 - 建立
Webrct
通道与控制端
通信 - 设备屏幕截图、截屏压缩处理、将截取的图片转成流推送【屏幕截图、截屏压缩处理耗时处理】
- 解析和响应控制(键、鼠:按比例将数据解析后模拟鼠标事件)
中继服务端
它是在建立连接之前交换信息的任何一种通信渠道,
turn服务
的搭建- 开发websocket服务、账号管理、消息转发
Websocket 与服务端通信
websocket
的连接是为了后续建立p2p连接
做的前置工作。websocket
的通信比较简单,soket连接直接使用new WebSocket(地址)
可以实例化sokcet对象
,sokcet对象
的回调函数有onopen
/onerror
/onclose
/onmessage
等,可以在对应的回调里执行相关操作
this.socket = new WebSocket(this.socketUrl)
this.socket.onopen = () => {}
this.socket.onerror = (error) => {}
this.socket.onclose = (error) => {}
this.socket.onmessage = (Message
Webrct 通道建立
基于C++音视频高手课-WebRTC远程桌面后台服务实战 ,Webrct
通道建立也就是我们常提到的p2p连接
,第一步控制端
和被控端
都与中继服务
建立了websoket
连接后,可以借用中继服务交换Offer
和 Answer
,成功建立p2p连接
。对应的是流程图中的这部分
websocket
连接成功后,中继服务器转发给控制端connected
指令,控制端onmessage
接收到指令connected
后,控制端要做的事情有:
-
- 执行
初始化peer
的操作
- 执行
-
创建数据通道
-
-
给中继服务
发送ready
消息
-