0

我正在尝试通过服务器共享屏幕。我正在通过 webRTC 捕获屏幕内容并将其放入视频中。

<video id="live" width="1280" height="960" autoplay></video>

然后我在画布内绘制它,

<canvas width="1280" id="canvas" height="960" style="display:none" ></canvas>

javascript

var liveVideo = $("#live").get()[0];    
var canvas = $("#canvas");
var ctx = canvas.get()[0].getContext('2d');
ctx.drawImage(liveVideo, 0, 0, 1280,960);

在一段时间内,我通过 socket.io 将该画布的 base64 字符串发送到服务器,然后从服务器将它发送到所有连接的客户端。

问题是,这个过程很慢,我不能用 WebRTC 点对点来做,因为主机会与很多客户端共享屏幕。在这种情况下,我们计划建立一个大容量的流媒体服务器。我需要改进这一点,并且需要知道适当和更好的方法来做到这一点。

4

1 回答 1

2

使用 webRTC 将屏幕共享发送到服务器。然后,一旦在您的客户端应用程序和服务器之间建立了 webRTC 通信,就将其多播/广播到其余客户端。为此,您将需要一个 MCU - 多点控制单元 -。

Kurento是服务器端最好的免费源代码替代品之一:

从概念上讲,WebRTC 媒体服务器只是一种“多媒体中间件”(它位于通信对等方的中间),媒体流量在从源移动到目的地时通过它。媒体服务器能够处理媒体流并提供不同的类型,包括组通信(将一个对等方生成的媒体流分配给多个接收器,即充当多会议单元,MCU),混合(将多个传入流转换为单个复合流) 、转码(在不兼容的客户端之间调整编解码器和格式)、录制(以持久的方式存储对等方之间交换的媒体)等。

于 2015-10-31T23:20:46.440 回答