iOS从getusermedia(Safari/webview,ios 18)中的后摄像头镜头之间切换ios

问题描述 投票:0回答:1
{ video: { deviceId: '...', facingMode: { exact: 'environment' }, advanced: [{ zoom: 1.0 }] }, audio: false }

iPhone 15(iOS 18),iOS在测量过程中意外切换在宽,超范围和远摄镜头之间。

这打破了心率检测,它迫使用户在测量的中间移动手指。

问题: 有什么方法是通过getusermedia/webrtc迫使iOS仅使用广角镜头并防止自动透镜开关?
我知道,通过Avoundation(Swift),您可以选择.builtinwideanglecamera,但我希望避免构建自定义的本机层,并希望在可能的情况下坚持使用WebView/JavaScript,以节省时间和复杂性。

任何建议,解决方法或苹果的更新将不胜感激!

非常感谢!

具有多个后置摄像头(如11PEO)的iPhones即使设置了

facingMode: { exact: "environment" }

,也会根据照明条件和聚焦距离在镜头之间自动切换。不幸的是,在使用哪种特定后置摄像头(宽,超宽或远摄)中,

getUserMedia

没有提供完全控制。 您可以依靠

WebView

javascript ios webrtc wkwebview hybrid
1个回答
0
投票
,您可以尝试列出可用的摄像机,并选择与广角镜头匹配的摄像机。 您可以通过以下方式实现这一目标。

async function getWideAngleCamera() { const devices = await navigator.mediaDevices.enumerateDevices(); const backCameras = devices.filter(device => device.kind === "videoinput" && device.label.toLowerCase().includes("back")); //pick the camera that has 'wide' in the label const wideCamera = backCameras.find(device => device.label.toLowerCase().includes("wide")) || backCameras[0]; if (!wideCamera) { console.error("No suitable wide-angle camera found."); return null; } return wideCamera.deviceId; } async function startCamera() { const deviceId = await getWideAngleCamera(); if (!deviceId) return; const stream = await navigator.mediaDevices.getUserMedia({ video: { deviceId: { exact: deviceId }, advanced: [{ zoom: 1.0 }] } }); document.querySelector("video").srcObject = stream; } startCamera();

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.