摄像头测试

打开摄像头看实时画面,同时读出它真正给出的分辨率、帧率和宽高比。画面能被截下来,说明从传感器到页面这条链路是通的。

选择设备与分辨率

分辨率是「期望值」,浏览器会挑最接近的档位,所以实际读数可能和这里选的不一样——以结果区的读数为准。镜像只影响预览,不影响截图。

读到的数字从哪来

分辨率来自视频轨道的 settings,也就是浏览器和驱动协商之后真正生效的那一档,不是页面上选的期望值。摄像头驱动往往只暴露有限几档格式,比如 640 × 480、1280 × 720、1920 × 1080,你请求 1000 × 800 它也只会挑最接近的一档,所以两边对不上是正常的。真正值得关心的是有没有拿到设备该有的那一档:如果一台 1080p 摄像头怎么切都只有 640 × 480,问题在驱动或接口,不在浏览器。

帧率有两个来源,含义不一样。设备报告帧率是驱动声明的上限,实测帧率是浏览器真的把帧交给页面的频率。低光下摄像头会自动降低帧率换取更长的曝光时间,白天 30 fps 的摄像头到了晚上可能只有 15 fps;USB 2.0 的带宽也只够 1080p 跑到十几帧。页面统计的是后者,因为它才是你实际看到的流畅度。

掉帧的判定用中位数而不是平均数。帧间隔大部分时候是 33 毫秒左右(30 fps),偶尔一次 500 毫秒的长间隔会把平均数拉得很低,但它通常只是页面刚切到前台,不代表摄像头在卡。以中位数为基准,超过 1.5 倍才算一次异常,这样能把「启动时的抖动」和「持续的掉帧」区分开。

画面冻结的检测靠「多久没收到新帧」。只要流还在播放,摄像头每一帧都会触发一次回调,三秒收不到就说明链路断了。要注意静止场景也可能让人误以为卡住,所以页面给的是提示而不是结论——看画面里的人动一下有没有反应,是最快的验证方法。

如果问题不在画面而在声音,去麦克风测试看输入电平;想确认显示器本身的色彩和坏点,用屏幕测试;拍出来的照片偏色、想读拍摄参数,可以用图片信息与 EXIF。

常见问题

为什么摄像头标称 1080p,这里只显示 640 × 480?

常见原因有三个:驱动只暴露了低分辨率档位、浏览器为了省资源默认取了最低档、或者这台设备正被另一个程序以低分辨率占用。先在分辨率下拉框里手动选 1920 × 1080 再点「应用」,如果仍然不变,去系统的摄像头设置里看它给出的格式列表。

测出来的帧率和标称的 30 fps 差很多,正常吗?

低光环境下摄像头会自动降帧来换取曝光时间,15 fps 甚至 10 fps 都很常见;USB 2.0 接口接 1080p 以上也会因为带宽不足掉帧。另外这里统计的是浏览器把帧交给页面的频率,页面在后台标签页时浏览器会主动限流,切回前台再看一次才准。

打开时提示摄像头被占用怎么办?

摄像头一般只能被一个程序独占。先关掉会议软件、直播软件、录屏软件,以及别的正在预览摄像头的浏览器标签,然后再点开始。Windows 上还要留意「相机」应用有没有在后台常驻,macOS 上可以看菜单栏有没有绿点或录屏指示。

镜像开关会影响截图吗?

不会。镜像只是给预览画面加了一层水平翻转,截图画的是未经翻转的原始帧。前置摄像头的预览默认做成镜像,是因为人照镜子时的习惯;但如果要截图给别人看文字,建议先关掉镜像再截。

画面看起来卡住不动,但时间还在走?

页面会在三秒收不到新帧时给出「画面冻结」的提示。如果场景本来就在动却收不到新帧,说明取流链路断了:可能是摄像头被系统挂起、USB 供电不足,或者驱动崩溃。把设备拔插一次、换一个 USB 口,通常能恢复。

为什么授权前设备列表是空白的?

这是浏览器的隐私设计:没有授权时不允许读出设备名称,否则任何网页都能靠设备列表给用户打指纹。点一次开始、允许权限之后,名称和数量才会显示出来,之后再刷新页面也会直接可见。

虚拟摄像头能用这个页面测吗?

能,但读到的数字描述的是虚拟设备而不是真实摄像头。OBS、Snap Camera 这类软件会自己设定输出分辨率和帧率,所以画面可能看起来很清楚,实际分辨率却只有 1280 × 720。要判断真实摄像头的能力,得先停掉虚拟设备再测。