You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iPhone浏览器从主页恢复后摄像头宽高比异常变更问题

iPhone浏览器从主页恢复后摄像头宽高比异常变更问题

问题场景

  • 我开发了一个网页应用,能够调用前置摄像头并实时显示画面
  • 摄像头处于激活状态时,用户返回iPhone主屏幕(此时浏览器被后台挂起,页面变为不可见)
  • 当用户重新打开浏览器回到应用时,摄像头画面的宽高比发生了变化——看起来像是在横屏和竖屏模式之间切换了

已尝试的解决方案(均无效)

  • 调用摄像头时指定特定的宽高比约束
  • 调用摄像头时不设置任何约束
  • 调用摄像头时设置固定的宽高比约束

示例代码

我制作了一个简单的摄像头测试应用来复现这个问题(因为JSFiddle无法调用摄像头,所以需要你在本地或者HTTPS环境下的iPhone上运行)。启动摄像头后观察宽高比,返回主屏幕再切回应用,注意摄像头画面和控制台打印的宽高比变化:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Camera Aspect Ratio Test</title>
    <style>
        video {
            max-width: 100%;
            height: auto;
        }
    </style>
</head>
<body>
    <video id="cameraFeed" autoplay playsinline></video>
    <script>
        const video = document.getElementById('cameraFeed');
        
        async function startCamera() {
            try {
                const stream = await navigator.mediaDevices.getUserMedia({
                    video: { facingMode: 'user' }
                });
                video.srcObject = stream;
                
                // 监听视频轨道的变化
                stream.getVideoTracks()[0].addEventListener('ended', () => {
                    console.log('Camera track ended');
                });
                
                // 打印初始宽高比
                video.onloadedmetadata = () => {
                    console.log('Initial aspect ratio:', video.videoWidth / video.videoHeight);
                };
            } catch (err) {
                console.error('Error accessing camera:', err);
            }
        }

        // 监听页面可见性变化
        document.addEventListener('visibilitychange', () => {
            if (!document.hidden) {
                // 页面重新可见时,检查当前摄像头宽高比
                if (video.srcObject) {
                    const track = video.srcObject.getVideoTracks()[0];
                    const settings = track.getSettings();
                    console.log('Resumed aspect ratio:', settings.width / settings.height);
                }
            }
        });

        startCamera();
    </script>
</body>
</html>

备注:内容来源于stack exchange,提问作者Ulhas Pawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:10:28