摄像头模拟器是一种虚拟摄像头,它把一段已知的视频、一张图片或你的屏幕当作真实摄像头的画面送进任意应用,让你每次都能用完全相同的输入来测试摄像头功能。在 Windows 上,FakeCam 可以免费做到这一点:加载一段测试片段或一张测试图案,按下播放,然后在被测应用里把 FakeCam 选为摄像头。不用打光,没有镜头,没有意外,每次运行都是一模一样的帧。
为什么要模拟摄像头,而不用真实摄像头?
真实摄像头是最糟糕的测试夹具。它的画面随光线、一天中的时段、坐在前面的人,以及镜头盖有没有盖上而变化。测试需要的恰恰相反:一个确定性(每次运行的帧完全一致)、可重复(换测试人员、换电脑,结果不变)、可控(分辨率、运动、宽高比,甚至一个黑帧,都由你决定)的输入。摄像头模拟器给你的正是这个:
- 视频功能的 QA。摄像头预览、拍照、录制、背景虚化、人脸检测、二维码扫描、视频通话:每一项都用一段你逐帧了解的片段来跑。
- 复现 bug。客户说“摄像头显示一片黑”,只要你能有意输入一个黑帧,就能复现。
- 按需制造边界情况。竖屏视频、16:9 预览里的 4:3 输入、剧烈运动、永远不变的静止帧、640 x 480 的来源:每一种都是一个你留着的文件。
- 演示和培训。不管房间什么样,演示用的摄像头在每一场里都显示同一段精修的片段。
- 没有摄像头的机器。台式机、有人手动在上面测试的构建机、虚拟机:虚拟摄像头给它们一个摄像头。

你需要什么
- 一台 Windows 10 或 11 电脑(物理机,或有桌面会话的虚拟机)。
- FakeCam,免费。它会注册一个名为“FakeCam”的虚拟摄像头。
- 你的测试输入:一个视频文件(MP4、MOV、AVI、WMV、MKV)、一张图片(PNG、JPG、GIF、BMP),或者屏幕本身。
四步设置摄像头模拟器
- 安装 FakeCam,点一次启用,让 Windows 添加这个摄像头(一次管理员提示,之后不再询问)。
- 在设置里,把摄像头分辨率设为被测应用应当收到的值:640 x 480、1280 x 720 或 1920 x 1080。这就是应用枚举到的格式。
- 把测试片段或测试图案拖进 FakeCam,按下播放。如果片段必须贯穿整个测试会话,打开循环。
- 在被测应用里把 FakeCam 选为摄像头。先启动 FakeCam 再打开应用:大多数应用只在启动时读取摄像头列表。

要在测试中途切换输入,把另一个文件拖进 FakeCam 即可:应用保持同一个摄像头,只是收到新的帧。要测试“没有摄像头”或“摄像头被拔出”的路径,按下停止,或者取消注册摄像头。
一套值得留着的测试素材
四种输入就能覆盖大多数摄像头测试用例。把它们放在测试计划旁边的文件夹里。

| 输入 | 能发现什么 |
|---|---|
| 测试图案(彩条、圆形、网格) | 裁剪、拉伸、宽高比错误、偏色、镜像:圆变成了椭圆,或者彩条被截掉一段,一眼就能看出来 |
| 高速运动片段(快速摇镜、移动的细节) | 掉帧、编码器画质、通话中的延迟、比摄像头慢半拍的预览 |
| 人像片段(一个人,光线稳定) | 人脸检测、背景虚化和替换、自动取景,以及你自己产品里的身份验证流程 |
| 黑帧或一张静态图片 | “摄像头不工作”的支持路径、无运动检测、截图和拍照功能 |
把下面这张图案保存下来,用 FakeCam 播放;它特意画成不含文字,测试团队用哪种语言都能用。

摄像头模拟器与 Chrome 假摄像头参数的对比
如果你只在自动化浏览器里测试网页应用,Chrome 和 Edge 内置了一个假摄像头:用 --use-fake-device-for-media-stream 启动浏览器,要输入你自己的文件,再加上 --use-file-for-fake-video-capture=clip.y4m。Playwright 和 Puppeteer 会帮你配好这些参数。在 CI 里这是正确的工具。不过它止步于浏览器:那个浏览器进程之外的任何东西都看不到摄像头。
像 FakeCam 这样的虚拟摄像头工作在 Windows 层面,所以每个应用都能看到它:桌面应用、Electron 应用、Windows 的“相机”应用、真实 Zoom 客户端里的视频通话,以及测试人员亲手打开的普通浏览器会话。坦诚的对比:

| Chrome 假设备参数 | FakeCam 虚拟摄像头 | |
|---|---|---|
| 摄像头存在于哪里 | 仅在那个浏览器进程内 | Windows 全局,任意应用 |
| 输入格式 | Y4M / MJPEG 文件 | MP4、MOV、AVI、WMV、MKV、图片、屏幕 |
| 自动化测试(CI) | 是,为此而生 | 否:FakeCam 靠手动操作 |
| 桌面应用的手动 QA | 否 | 是 |
| 真实会议客户端(Zoom、Teams、Discord) | 否 | 是 |
| 测试中途更换输入 | 重启浏览器 | 拖入新文件 |
| 费用 | 免费 | 免费(可选一次性 PRO) |
两者都用:流水线里用参数,探索性测试、桌面应用、支持问题复现和演示用虚拟摄像头。
让结果可靠的技巧
- 有意匹配分辨率。通过修改 FakeCam 的分辨率设置,再重启应用,逐一测试应用支持的每种分辨率:很多应用只枚举一次格式。
- 长会话用循环。循环播放的片段让摄像头在整个测试期间保持“活着”;播完就停的片段会把最后一帧留在屏幕上。
- 镜像也是一个测试用例。会议应用会镜像自视画面,但不会镜像别人看到的画面。FakeCam 的镜像开关让你两种都能检查。
- 屏幕作为输入。选择屏幕标签页,把一个正在运行的应用窗口(计时器、二维码页面)送进摄像头,对扫描类功能很有用。详见把屏幕当作摄像头。
- 一次一个应用。摄像头同一时间只能被一个应用打开。开始下一个测试之前,先关掉上一个应用的预览。
摄像头模拟器不能做什么
- 没有脚本,也没有命令行。FakeCam 是手动工具:文件由你手动加载。脚本化的浏览器测试请用上面的 Chrome 参数。
- 没有音频。虚拟摄像头只替换摄像头画面。麦克风路径需要单独测试。
- 不是移动端的虚拟摄像头。它运行在 Windows 上。Android 的话,模拟器的虚拟场景摄像头能覆盖类似的需求。
- 不是用来骗过验证的。摄像头模拟器是测试和演示工具。用它绕过别人的身份验证不是它的用途,而且不少服务明令禁止。