使用WebRTC流式传输HTML5画布活动
Stream HTML5 canvas activity using WebRTC
我想使用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/
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 活动选项卡's源代码-获取变量s值
- 在Angular 2中布线期间保持零部件处于活动状态
- 在ajax成功后,cluetip不适用于首次点击活动元素
- 如何使bxslider仅在移动视图中处于活动状态
- JQuery中的活动搜索栏
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 将js添加到wordpress中以突出显示css活动菜单
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 手动创建旋转活动指示器
- 打开网页后立即获取网页的活动javascript函数
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- 菜单栏class=活动引导程序主题无法正常工作
- 如何在完整日历中的当天点击时显示活动详细信息
- 从Bootstrap获取活动选项卡ID并将其传递给PHP
- 是否可以在调用时动态设置Jquery Accordion的活动面板
- 如何在不活动5分钟后更改页面位置
- 使用 AngularJS 设置活动选项卡样式
- 为非活动/活动状态切换图像类