Skip to content

ongwu/Camera-Mock-Injector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Camera Mock Injector (摄像头模拟注入工具,可绕过人脸识别/视频通话功能)

这是一个用于在浏览器环境中模拟或劫持摄像头输入的技术工具。它能够将本地视频文件伪装成实时摄像头流,从而绕过真实的硬件调用。

image image

项目背景

在进行 Web 端摄像头相关功能的自动化测试、远程调试或在特定环境下测试人脸识别/视频通话流程时,往往受限于真实的硬件设备。本项目旨在提供一个轻量级的注入方案,通过纯前端技术实现摄像头流的劫持与自定义视频替换。

实现步骤

  1. 接口劫持:通过 JavaScript 对 navigator.mediaDevices.getUserMedianavigator.getUserMedia 等原生 API 进行猴子补丁(Monkey Patching)。
  2. 合成器构建:在内存中创建一个 Canvas 元素作为主合成器,负责处理视频帧的缩放、镜像和绘制。
  3. 流转换:利用 canvas.captureStream() 方法,将 Canvas 的实时绘图过程转换为标准的 MediaStream 媒体流。
  4. UI 注入:向目标页面注入一个半透明的控制面板,提供视频文件上传、模式切换和状态监控功能。
  5. 动态同步:通过定时器巡检页面内的 <video> 元素,并强制将其 srcObject 重定向至模拟流,确保全局生效。

技术原理

  • 猴子补丁 (Monkey Patching):拦截浏览器底层的多媒体请求,根据当前模式决定返回真实的设备流还是自定义的 Canvas 流。
  • 帧绘制循环 (Frame Blitting):使用 requestAnimationFrame 驱动,在极低延迟下将选中的 <video> 标签帧数据绘制到主 Canvas 上。
  • 流分发:所有的劫持请求共享同一个输出 Canvas,通过单向数据流减少内存占用和 CPU 消耗。

使用说明

  1. 注入脚本
    • camera-mock.js 中的代码作为浏览器书签(Bookmarklet)保存。
    • 在需要模拟摄像头的页面点击该书签,或直接在开发者控制台(Console)中粘贴运行。
  2. 加载视频
    • 在弹出的控制面板中,分别为“正面”、“向左”、“向右”三个位置选择对应的本地视频文件(支持 mp4, webm 等)。
  3. 切换模式
    • 将模式从“真实”切换为“注入”。
    • 点击“切到此”按钮激活对应的视频流。
  4. 辅助控制
    • 水平镜像:模拟前置摄像头效果。
    • 后置优先:强制模拟移动端后置摄像头参数。
    • 暂停/黑屏:实时控制流的输出状态。
    • 预览流:在面板内查看当前正在输出的模拟画面。

注意事项

  • 本工具仅供本地学习、开发测试及合规的自动化调试使用。
  • 建议使用最新版本的 Chrome 或 Safari 浏览器以获得最佳的 captureStream 支持。

开发者:ongwu

电子邮箱:ongwu007@gmail.com

GitHub: https://github.com/ongwu

官方网站:https://www.262944.xyz

About

用于在浏览器环境中模拟或劫持摄像头输入的技术工具。它能够将本地视频文件伪装成实时摄像头流,从而绕过真实的硬件调用。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors