我已经为使用getUserMedia的iPad构建了这个Web应用程序,并将生成的视频流式传输到网站上的视频元素.我正在使用的型号是iPad Air,后置摄像头分辨率为1936x2592.目前,getUserMedia方法的约束是:
video: {
facingMode: 'environment',
width: { ideal: 1936 },
height: { ideal: 2592 }
}
Run Code Online (Sandbox Code Playgroud)
然而,当我拉入视频时,它看起来相当颗粒感.通过控制台日志挖掘以获取流,视频轨道以及该轨道的设置,看起来视频的分辨率已缩小到720x1280.这有什么特别的原因吗?webRTC/getUserMedia可以处理的最大分辨率是多少?
我需要通过 webrtc 流式传输视频并在网页上播放它,它在所有桌面浏览器窗口和 mac 操作系统上都能正常工作。它也适用于 Android 浏览器。但在 Safari iOS 上,视频会横向旋转。它在两者上旋转(当使用 iOS safari 捕获视频时以及在 chrome 或 safari 桌面上接收流时)。我使用 safari iOS 的 webrtc 网站上的默认基本 getUserMedia 示例演示对其进行了测试,并且存在同样的问题。如何解决它或者是否还有其他解决方案?
我和我的朋友正在构建一个需要相机访问权限的应用程序,我们在让相机与 iOS 一起工作时遇到了一些问题(我们使用的是 iOS13):
Safari 在获取相机内容后立即冻结,chrome 和 edge 根本无法访问相机。我们的代码如下:
let windowWidth=window.innerWidth;
let windowHeight=window.innerHeight;
function isMobile() {
const isAndroid = /Android/i.test(navigator.userAgent);
const isiOS = /iPhone|iPad|iPod/i.test(navigator.userAgent);
return isAndroid || isiOS;
}
async function setupCamera() {
video = document.getElementById('video');
console.log("a")
video.setAttribute('autoplay', '');
video.setAttribute('muted', '');
video.setAttribute('playsinline', '');
const stream = await navigator.mediaDevices.getUserMedia({
'audio': false,
'video': {
facingMode: 'user',
width: mobile ? undefined : windowWidth,
height: mobile ? undefined : windowHeight
},
});
console.log("b")
video.srcObject = stream;
return new Promise((resolve) => {
video.onloadedmetadata = () …Run Code Online (Sandbox Code Playgroud)