使用WebRTC流式传输HTML5画布活动

Stream HTML5 canvas activity using WebRTC

本文关键字:布活动 活动 HTML5 WebRTC 传输 使用      更新时间:2023-10-19

我想使用WebRTC流式传输HTML5画布的活动。一个用户广播他的画布,连接的对等体看到远程对等体在他的画布上做什么,如果他在画一条线或其他什么,我希望连接的对等方看到他自己画布上的变化。

我的问题是,这可能是WebRTC的开箱即用吗?经过我的搜索,我会说事实并非如此。

如果没有,你将如何处理这样一个系统?

谢谢。

有;CANVAS元素附带了一个captureStream方法,该方法允许您将画布捕获为与RTC对等频道兼容的MediaStream。就像你将相机流发送给另一个对等端一样,你也可以将捕捉到的流发送给该对等端以使其工作。

参考编号:https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/captureStream

诚然,并非所有浏览器都支持它;但这是一项有用的技术,因为它可以按照您提到的方式用于CANVAS流。

我很惊讶地看到,2015年的一个答案说这是不可能的——画布上的captureStream方法自2014-2015年以来就一直存在……今天它上有很多演示,也许这会帮助你开始。

不幸的是,这不能开箱即用,因为画布不能用作视频源。

这必须在每个客户端上本地解决,方法是安装一个伪摄像头(模拟摄像头的驱动程序)来记录屏幕。然后可以将其用作WebRTC的源。

您可以使用类似WebSocket的东西来模拟流媒体,方法是通过服务器发送draw命令并在接收端重播,但它当然不会是WebRTC的集成部分(或使用其数据通道)。

更新
这个答案是1.5多年前写的,尽管有captureStream()接口的初稿,但它还处于萌芽状态。从那时起,这项技术已经成熟,可以用于实验用途。

然而,请注意,页面上还注明:

这是一种实验技术

以及

还要注意,随着规范的变化,实验技术的语法和行为在未来版本的浏览器中可能会发生变化。

该功能仅在Chrome(因此在新的Opera中也支持)和Firefox中受支持,并且当前必须通过标志启用。

换言之,这还不是生产中需要考虑的问题。

WebRTC很少有"开箱即用"的东西;你想做的事情也不例外。然而,它是可以实现的,这一切都取决于画布应用程序的复杂性。

一种想法可以是渲染表示远程画布的本地画布。一旦对等端连接,远程对等端就可以发送您自己复制远程画布内容所需的信息。

如果可能的话,那么发送这些信息的一种方式是通过WebRTC的DataChannel,它公开了一个类似于WebSockets的API。它肯定比WebSockets更快,这是因为对等连接的性质,以及发送数据包的能力,其中包括无序交付和可变数量的重新传输。

此处的相关信息:http://www.html5rocks.com/en/tutorials/webrtc/datachannels/