0

如果我只是发送 getDisplayMedia 流,则按原样传输分辨率。

但是,当我使用 canvas.captureMedia 发送它时,分辨率首先以较低的质量传输并变得更大。

有没有办法像发送 getDisplayMedia 流一样以该分辨率发送它?

case1 : 发送 getDisplayMedia 流 在此处输入图像描述

case2 : 发送画布捕获 MediaStream 在此处输入图像描述

4

1 回答 1

0

它可能与您使用的画布大小有关。您可能需要更改正在使用的画布的大小。检查您获得的视频的大小,例如 1280 * 680,然后设置相同大小的画布。这样它可能是相同的分辨率。

要在此处设置正确的画布尺寸结帐:https ://en.wikipedia.org/wiki/Canvas_element#Canvas_element_size_versus_drawing_surface_size

正如它所暗示的,我了解您至少需要将绘图表面更改为所需的值,可能与您的视频流视频轨道大小相同。

width您可以在事先调用时使用和height选项请求视频流getUserMedia。或者在稍后阶段,您可以使用或方法在媒体流中获取曲目。然后按方法获取设置。然后检查视频轨道的设置,,甚至等等。然后,您可以使用视频轨道的大小值并将其应用于您创建的画布元素,方法是设置其和属性以更改其绘图表面大小。如果您想显示较小的画布元素,请在 CSS 中设置这些元素,而不是绘制表面尺寸。getTracksgetVideoTracksMediaStreamTrack.getSettingswidthheightaspectRatiowidthheight

于 2020-07-28T11:32:44.460 回答