gpt4 book ai didi

google-chrome - Chrome 上的 getUserMedia 经常无法返回最佳分辨率

转载 作者:行者123 更新时间:2023-12-05 00:46:20 25 4
gpt4 key购买 nike

我在 Linux 上的 Chrome 80 上使用 navigator.mediaDevices.getUserMedia()。为了获得最高质量,我运行了一系列约束,检查错误或流实际上不是所需的大小。对于我的至少一台相机,它通常只能获得 640x480 尺寸,而不是它能够达到的 1280x720。如果我为不同的设备调用 getUserMedia() 然后返回并为原始设备调用它,它通常但并非总是会获得 1280x720 版本。我不确定如何强制 Chrome 使用正确的尺寸。

这些是我让它使用的约束(按顺序):

// OverconstrainedError (deviceId)
{"audio":false,"video":{"deviceId":{"exact":"cd059d931e1c4554faee7a5722ab8db810cec27316cc085512fcf5815dac3a98"},"frameRate":30,"width":{"min":1920,"ideal":1920,"max":1920},"height":{"min":1080,"ideal":1080,"max":1080}}}

// succeeds, but returns 640x480
{"audio":false,"video":{"deviceId":{"exact":"cd059d931e1c4554faee7a5722ab8db810cec27316cc085512fcf5815dac3a98"},"frameRate":30,"width":{"ideal":1920},"height":{"ideal":1080}}}

// OverconstrainedError (deviceId)
{"audio":false,"video":{"deviceId":{"exact":"cd059d931e1c4554faee7a5722ab8db810cec27316cc085512fcf5815dac3a98"},"frameRate":30,"width":{"min":1920},"height":{"min":1080}}}

// OverconstrainedError (deviceId)
{"audio":false,"video":{"deviceId":{"exact":"cd059d931e1c4554faee7a5722ab8db810cec27316cc085512fcf5815dac3a98"},"frameRate":30,"width":{"exact":1920},"height":{"exact":1080}}}

// succeeds, but returns 640x480
{"audio":false,"video":{"deviceId":{"exact":"cd059d931e1c4554faee7a5722ab8db810cec27316cc085512fcf5815dac3a98"},"frameRate":30,"width":1920,"height":1080}}

然后是 1600x1200、1280x720、800x600 和 640x480 的相同模式。最后一个最终成功了,因为它匹配从 getUserMedia() 返回的唯一维度。

这在 Firefox 上运行良好。它适用于某些设备。如果我在第一个设备加载了低尺寸后选择其他设备,它有时会起作用。

OverconstrainedError 表示违规约束是 deviceId 的事实有点令人担忧,但根据我所读到的内容,它只返回第一个约束,而不是一定是失败的那个。无论如何,当其他变体没有失败时,很难看出设备 ID 会如何导致它失败。

我需要做什么才能完成这项工作?

最佳答案

我在调用 enumerateDevices() 之前调用了 getUserMedia(),以便获得查看设备名称的权限。该调用使用约束 {video:true, audio:true}。至少在 Chrome 中,这获得了最低的分辨率。对同一设备的进一步调用将始终返回其显示的相同分辨率。为了解决这个问题,我将 true 替换为适当大的宽度和高度 {video:{width:4096,height:2160}} 现在 Chrome 获得了最高分辨率后续调用!

关于google-chrome - Chrome 上的 getUserMedia 经常无法返回最佳分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61130224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com