捕获单个网络摄像头帧。在 PHP 中使用

2024-04-12

有没有办法从用户网络摄像头捕获单个帧并将其传递到服务器端?

我尝试使用navigator.getUserMedia,它允许我创建一个 LocalMediaStream 对象,我可以将其传递给视频元素,但似乎没有可以理解的方法来获取视频本身用于其他用途。

有人有什么想法吗?


这是一项稍微复杂的任务。您需要将流中的数据放入video元素,然后将其从那里放入canvas元素,它允许您创建一个数据 URL,然后可以在服务器端将其转换为图像。 (深呼吸)

您的代码可能看起来有点像这样:

var stream, video, canvas, data;
navigator.getUserMedia({video: true}, function(s) {
    stream = s;
});

video = document.createElement('video');
video.src = window.URL.createObjectURL(stream);
video.play();

canvas = document.createElement('canvas');
canvas.getContext('2d').drawImage(video, 0, 0, 240, 150);

data = canvas.toDataURL();

data现在将是一个数据 URL,看起来有点像这样:"data:image/png;base64,iVBORw0KGgoA...(最后还有更多字符!)。然后您可以使用 AJAX 将其发送到您的服务器。

许多语言都有一种从数据 URL 获取信息的方法。我从来没有使用过它,但是 PHP 看起来特别好。你应该能够这样做:

$image = imagecreatefrompng(substr($data, 22));

where $data是从浏览器发送的数据。请注意,我还没有测试过这个 PHP 代码。


为了改善用户体验,您可以显示视频元素:然后用户将能够看到拍摄的镜头。此外,您可以执行以下操作drawImage调用作为对事件的响应,例如用户单击按钮。另请注意,getUserMedia该功能尚不支持跨浏览器,因此您可能需要进行一些编辑才能使其在所有浏览器中运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获单个网络摄像头帧。在 PHP 中使用 的相关文章

随机推荐

  • 获取父类中子类的名称(静态上下文)

    我正在构建一个 ORM 库 考虑到重用性和简单性 一切都很顺利 除了我被一个愚蠢的继承限制所困扰 请考虑下面的代码 class BaseModel Return an instance of a Model from the databas
  • 目标的事件委托

    在下面的代码中 我的click事件代表和所有三个 click 我的视图层次结构中的处理程序被解雇 不过我也想火 edit 在我的整个视图层次结构中 edit 只是我的元素的目标 child view Template
  • Mac 上的 python xgboost 安装

    我正在尝试在 Mac 上安装 xgboost for Python 3 4 但之后出现以下错误pip3 setup py install File
  • 在 openMP C++ 中并行化许多嵌套 for 循环

    你好 我是 C 新手 我编写了一个可以运行的代码 但是由于许多嵌套的 for 循环 它很慢 我想通过 openmp 来加速它 任何可以指导我的人 我尝试使用 pragma omp 并行 前ip循环并在这个循环中我使用了 pragma omp
  • 如何使用 Html.EditorFor 和 MVC3 设置 id

    我试图设置一个字段 id 如下所示 Html EditorFor x gt x Order new id string Format Order 0 Model Row 但这会导致以下结果 并且似乎我的 id 没有被设置
  • 在 Spring 3 控制器中返回字符串时设置重定向的 HTTP 状态代码

    有没有办法在返回时指定HTTP状态码 redirect new url 春季3 没试过 不过看看源码org springframework web servlet view RedirectView it has getHttp11Stat
  • 直线和绘图之间的阴影区域

    我已经彻底搜索了网络 但仍然没有找到确切的解决方案 我需要在 MATLAB 中对直线上方和绘图下方的相交区域进行着色 我需要对阈值 110 以上和绘图下方的区域进行着色 这是一种使用方法area generate data x 1 100
  • mysql从具有不同键的同一列进行多个连接

    我需要一些帮助来与下表进行第二次连接 我之前从这里得到了一些帮助 建议我需要添加第二个 JOIN 但是 这就是我陷入困境并需要一些帮助的地方 wp posts id Post Title 01 Event 1 02 Event 2 wp 后
  • Go:如何接收整个 UDP 数据报

    我的问题 使用 net Read 方法仅复制给定字节数组或切片大小的字节数 当然 我不想每次都分配最大 64 kB 的 UDP 数据报 有没有go如何确定数据报的大小 位于数据报头中 或再次读取直到数据报完全读取 Try 从UDP读取 ht
  • jenkins android找不到sdkmanager.jar

    我在 Mac 操作系统上运行 Jenkins 我有一个尝试执行的 ant 构建文件
  • 使用 Drupal 中的外部身份存储库验证注册数据

    当我的用户尝试注册时 我想通过检查外部身份存储库 例如调用 Web 服务或查找目录服务器 来确保他的信息有效 任何现有模块都可以实现这一点吗 如果没有 开发此功能的最佳方法是什么 我不知道现有模块允许添加自定义验证 但使用 验证 操作来实现
  • 如何在flutter中为android和iOS进行face id身份验证

    您好 我尝试寻找有关在 flutter 中使用面部 ID 进行身份验证的资源 该资源适用于 Android 和 iOS 我尝试搜索一些资源 但大多数人都说face id仅在iOS中可用 有没有任何指南或资源可供我阅读以在 Android 和
  • javascript将元素推入数组的开头[重复]

    这个问题在这里已经有答案了 我有一个对象数组 我想将一个元素推入数组的开头 我有这个 var TheArray TheObjects Array TheArray push TheNewObject 正在添加TheNewObject在最后
  • 在基于mysql中的选择的插入期间增加非自动增量字段

    我使用 select 语句将一个表中的记录插入到另一个表中 插入的表有一个新字段 该字段应在每次更新时递增 1 但不应是自动递增字段 因为每次更新每组记录的数字都需要重新开始 如果使用的 select 语句选择 42 条记录 则新表将具有一
  • AngularJS Protractor - 使用 Ng-Click 绑定查找页面上的元素

    我的页面上有一个按钮 如下所示
  • Bootstrap 3 导航丸不起作用

    我已遵循文档 但我不确定为什么我的pills不工作 HTML
  • gremlin 查询中的类型转换

    如何使用 AWS Neptune GDB 在 gremlin 控制台中将字符串值转换为整数类型 我的属性 age 带有字符串值 需要将其转换为整数类型以进行查询中的数学运算 感谢所有建议 我尝试了以下 kelvin 建议的查询 但遇到了这些
  • 如何使用 Ninject 设置可选方法拦截?

    假设我有一个类 我有时想 但现在总是 拦截一些 但不是全部 方法 据我了解 这可以通过以下方式完成 InterceptAround 在我的 Ninject 模块中 在更高级别的代码中 或者在这些方法上使用 InterceptAttribut
  • C# COM 跨线程

    我们正在开发一种软 件来控制科学测量设备 它提供了一个 COM 接口 定义了几个函数来设置测量参数并在测量数据时触发事件 为了测试我们的软件 我正在实现该设备的模拟 com 对象运行一个循环 定期触发事件 客户端应用程序中的另一个循环现在应
  • 捕获单个网络摄像头帧。在 PHP 中使用

    有没有办法从用户网络摄像头捕获单个帧并将其传递到服务器端 我尝试使用navigator getUserMedia 它允许我创建一个 LocalMediaStream 对象 我可以将其传递给视频元素 但似乎没有可以理解的方法来获取视频本身用于