自从Apple的iOS 11 webRTC
和getUserMedia
引入以来,我能够将相机的输入获取到<video>
元素,但不能使用常规方法设置其尺寸(height
和width
)。
这个方法的作用是:
var constraints = {
audio: false,
video: { facingMode: 'user' }
};
navigator.mediaDevices.getUserMedia(constraints).then(
function success(stream) {
video.srcObject = stream;
}
);
这不起作用(仅在iOS上),并且不显示图像:
var constraints = {
audio: false,
video: { facingMode: 'user', width: 306, height: 180 }
};
navigator.mediaDevices.getUserMedia(constraints).then(
function success(stream) {
video.srcObject = stream;
}
);
来自catch
的错误消息:
无效约束
**失败尝试:**设置mandatory
、ideal
、minHeight
等
这是一个bug吗?是否有已知的替代方案?
1条答案
按热度按时间j8yoct9x1#
这看起来像是Safari中的一个bug。像
width: 306
这样的裸值应该表示ideal
,但Safari似乎将它们视为exact
,并且失败并显示错误,除非它与用户相机提供的驱动程序分辨率完全匹配。除此之外,Safari似乎与Firefox和Edge等其他浏览器一样工作,其目标是找到相机提供的最佳匹配的原生分辨率。
所以坚持使用范围,直到Safari修复这个问题。
...或使用通用值与后备策略: