微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

合并 2 个 html5 画布的捕获视频流

如何解决合并 2 个 html5 画布的捕获视频流

我正在为网络会议应用程序构建白板应用程序。我调查过的所有库都使用 2 个画布,1 个在顶部用于绘图,1 个在底部用于保存较旧的绘图(为了更好的性能,因为每次绘图时上部画布都会被清除)。

现在我需要流式传输这些画布的内容以用于其他用途,以便他们可以实时查看内容

选项 1:

captureStream 并将视频轨道合并到单个流 new MediaStream([...bottomTracks,...topTracks]) 中,使用 webrtc 传输流,然后从流中提取轨道,为每个轨道创建一个新流 {{1 }} 并在绝对定位的视频元素上播放流。它有效,但我的老板不喜欢它,不知道为什么?还没有!
这有什么缺点吗?

选项 2:

创建第三个屏幕外画布,并定期 new MediaStream([stream.getVideoTracks()[0]]) 在屏幕外画布上的两个画布,然后从该画布drawImage

那么有没有更好的方法或其他方法来实现这一目标?

更新:为什么我要使用 2 个画布?

只有一个原因,如果我想改变已经绘制的东西,不要重新绘制所有东西,你可能会问什么改变?
在我的 2 个场景中:

  1. 平滑已通过鼠标拖动、触摸移动或笔绘制完成的线条(使其感觉更像自然书写,请查看 http://fabricjs.com/freedrawing
  2. 通过鼠标拖动、触摸移动或笔绘制形状

我知道我可以在每次更改时重绘所有内容,但我相信它在低端设备上的性能会很低。

2 个画布绝对位于彼此之上,实际的用户绘图是在上部画布上完成的,当完成并对其应用任何所需的增强后,线条/形状将绘制在底部画布和上部画布上画布被清除。

解决方法

正如 kaiido 的评论中所述,您只需要在屏幕上放置一个画布。

record.a.video 中,我将 2 个视频流(屏幕视频和相机视频)叠加到一个画布上。然后我使用另一个媒体流从画布中提取视频并作为 VOD 共享或直播。

请注意,音频必须以不同的方式处理,因为它是在画布中播放的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。