程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了合并 2 个 html5 画布的捕获视频流大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到合并 2 个 html5 画布的捕获视频流的问题如何解决?下面主要结合日常开发的经验,给出你关于合并 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 共享或直播。

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

大佬总结

以上是大佬教程为你收集整理的合并 2 个 html5 画布的捕获视频流全部内容,希望文章能够帮你解决合并 2 个 html5 画布的捕获视频流所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。