【发布时间】:2020-06-23 21:59:15
【问题描述】:
我想使用 MediaRecorder API 制作一个基本的画布记录器来记录 webGL(或其他)画布。
我希望最终视频的大小为 1920x1080(即使实际分辨率较低,我也可以按比例放大)。
问题是,当我尝试加载 1920x1080 的画布并使用 WebGL 进行屏幕录制时,结果非常紧张和不稳定,就像,非常(即使它确实记录了它,但不稳定等等)。 我想要的只是视频的最终 尺寸 为 1920x1080,即使它实际上质量较低,我需要它在浏览器中实时播放,而不是断断续续。所以:
有什么方法可以让 webGL 画布更大,同时保持与更小尺寸相同的性能?
mediarecorder API 是否可以录制比当前捕获的流(在本例中为画布流)分辨率更高的视频?
【问题讨论】:
-
记录图像(甚至是屏幕)是一项非常密集的操作。即使您尝试记录屏幕的一部分,大多数笔记本电脑也会给您不稳定的结果。这真的取决于你的硬件,但我建议缩小画布的大小,然后用插值放大它(这可能在录制后发生)。
-
理想情况下,您希望缩放输出视频流,而不是缩放输入数据
-
@LJᛃ 你是什么意思?如何在不缩放画布的情况下缩放画布流?
-
要清楚,即使是现场动画也是不稳定的还是只有录制的?如果是前者,它在不流式传输时是否运行流畅?画一些不太密集的东西会重现同样的问题吗?所有浏览器+编解码器都会发生这种情况吗?你能设置一个minimal reproducible example吗?
-
@Kaiido 它只是用 1920x1080 制作了一个画布,在上面绘制任何东西,但主要是 wegl。它在录制开始之前运行有点不稳定,虽然可以管理,但是当
canvas.captureStream()被调用时,一切都非常不稳定/难以管理。到目前为止,我只在 chrome 和 firefox 中对此进行了测试,并得到了相同的结果
标签: javascript canvas optimization webgl mediarecorder