在 Blazor Web Assembly 应用中显示本地计算机摄像头源

2023-12-22

我已将问题简化为样板 Blazor Web Assembly 应用程序。

该项目直接来自向导,添加了以下代码。

  1. 我已将 Index.razor 页面更改为:
@page "/"
@inject IJSRuntime JSRuntime;
@using System.Drawing;
@using System.IO;

<div>
    <h1>Video Test</h1>
</div>

<video id="video" width="640" height="480" autoplay></video>

<div>
    <button type="button" class="btn btn-primary" @onclick="StartVideo">Click Me</button>
</div>


@code {

    async Task StartVideo()
    {
        await JSRuntime.InvokeVoidAsync("startVideo");
    }

}

我附加了一个 JavaScript 页面,如下所示:

function startVideo() {
    alert("Test Alert!");

    var video = document.getElementById('video');

    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({ video: true }).then(function (stream) {
            video.src = window.URL.createObjectURL(stream);
            video.srcObject = stream;
            video.play();
        });
    }
}

该应用程序编译没有问题。当我运行它并单击按钮时,我收到警报。我添加了警报以确认 Java 脚本确实正在运行。

Chrome 浏览器请求使用我的网络摄像头的权限,我同意了。

我的网络摄像头已激活(当摄像头处于活动状态时,我的计算机上会显示一个指示灯)。

但是,页面上没有显示任何内容。我猜想将我的相机流绑定到标签是很简单的事情。在下一次迭代中,我将拍摄视频源的快照。目前,我只希望页面上显示提要。

我是否必须通过 C# 代码块路由绑定,或者可以像我在这里所做的那样吗?将 Javascript 直接绑定到 HTML 元素?


我相信您在基于 chromium 的浏览器中遇到问题,因为 createObjectURL 已被弃用。对于 Chrome 和新的 MS Edge 浏览器(使用 chromium),您所需要的只是包含 srcObject 和 play 的行。我在 Chrome、Firefox 和新 Edge 中测试了以下代码。

function startVideo() {
    alert("Test Alert!");

    var video = document.getElementById('video');

    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({ video: true }).then(function (stream) {
            try {
                video.srcObject = stream;
            } catch (error) {
                video.src = window.URL.createObjectURL(stream);
            }
            video.play();
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Blazor Web Assembly 应用中显示本地计算机摄像头源 的相关文章

随机推荐

  • C、套接字:连接被拒绝错误

    我有一个数据采集模块 我想从中收集以太网端口的数据 我正在一步步到达那里 目前我只想connect从客户端到服务器 我使用 Beej 的指南来获取基本的 C 代码 但我不断收到此连接错误connect Connection refused
  • 以编程方式更改 WPF TextBox 中的验证规则

    我有一个如下定义的文本输入区域
  • 如何创建虚拟 Windows 驱动器

    我正在尝试创建一个 Windows 虚拟驱动器 如 c 来映射远程存储 主要目的是以用户清楚的方式做到这一点 因此 用户不会知道他正在从另一个站点写入 读取 我正在寻找可用的产品 我发现FUSE在Windows中不是一个选项 而WebDAV
  • 如何为 hadoop 2.0 编译/使用 mahout?

    最新版本的 Mahout 0 9 仅基于 hadoop 1 x 构建 mvn 干净安装 如何为 hadoop 2 0 x 编译 mahout 因为当我运行命令时 hadoop jar mahout examples 0 9 SNAPSHOT
  • 如何使用可变大小的缓冲区获取c类型结构中字段的值?

    import readboard import struct import ctypes as c def readbuffer data size struct unpack
  • 碰撞检测/从 ArrayList 中删除对象

    我目前正在尝试测试下落物体和盒子之间的碰撞 我了解基本的碰撞检测 但我的问题是我必须测试它是否有无限数量的下落物体 当这些对象 blossoms 被创建时 它们被存储在一个ArrayList中 ArrayList 处理画布上对象的绘制 使用
  • 通过ilasm更改可执行图标

    我有一个安装程序应用程序 其中嵌入了 resx 文件 其中包含一些信息 例如服务器名称 端口 密码等 我必须生成这个安装程序 这个过程是自动化的 并通过我们的网站完成 对于每个客户 这工作正常 我用ildasm用于反汇编程序并替换 resx
  • 来自浏览器的过时加密警告

    我已经启动了带有 Apache 2 4 和 SSL 的 Windows Server 当我连接时https www example com https www example com然后点击绿色锁 我有消息 您与网站的连接已使用过时的加密技
  • 使用 Python 将整个 JSON 转换为一个 SQLite 字段

    我有一个可能很简单的问题 我正在尝试从在线源中提取 JSON 并将其存储在 SQLite 表中 除了将数据存储在丰富的表中 对应于 JSON 中的许多字段 之外 我还想在每次拉取时将整个 JSON 转储到表中 该表看起来像 CREATE T
  • 实现接口的类列表

    有没有办法实现类似的东西 List
  • 在jquery中获取外部url的html

    如何使用 jquery 获取外部 URL 的 HTML 简短的回答是你不能 因为 AJAX 请求被限制在相同的 子 域和端口上 同源政策 https developer mozilla org En Same origin policy f
  • Robocopy 后,复制的目录和文件在目标驱动器上不可见

    我很高兴使用 robocopy 将我的计算机备份到外部 USB 驱动器 这很棒 因为它只复制已更改 更新 新的文件 我可以将外部驱动器带到任何机器上并查看它 就像它是计算机上的另一个驱动器一样 我最近购买了一个 750g 和另一个 1tb
  • CoreMotion 在后台状态更新

    借助最新 iOS 设备中的 M7 芯片 当用户使用 CMMotionActivityManager 从静止状态变为跑步 行走等时 可以通过编程方式获得通知 Stava 和 Runkeeper 都用过这个自动暂停 GPS 轮询 http gi
  • 如何从另一个页面控制viewPages页面

    我有一个ViewPager共 3 页listView在每个页面中 我想要动画listView以某种方式 当用户水平滑动下一页时 listView应该根据下一页的宽度来 即第一个项目应该完全推入 第二个应该是可见的一半 口渴应该是第二个可见的
  • 如何在 Material UI 5 中使用 useTheme?

    我刚刚开始使用 Material UI 5 0 4 带有styled components 我想访问组件中的主题 我在网上查了一下 看到useTheme 所以我检查了文档并found it https mui com styles adva
  • 自动实例化会话bean?

    我有一个会话 bean
  • 是否可以通过电子邮件地址进行 XSS 攻击?

    我想知道电子 邮件地址是否可以用于XSS攻击 假设有一个网站 人们可以在其中注册并提供他的电子邮件地址 如果有人想要攻击给定的网站 他或她可能会创建一个电子邮件地址 例如 stmpname com 然后使用该电子邮件地址攻击该网站 电子邮件
  • 编写 lisp emacs 键绑定并且无法指定 字符

    由于某种原因 我将向后杀字的默认 M del 键绑定映射到匹配括号的扫描 并且重置不起作用 所以我尝试在 lisp 中设置全局键绑定 所以我在 emacs d init el 中编写了 lisp 命令 全局设置键 kbd M h 向后杀字
  • XSD 和 WSDL 位于不同的目录中

    在我的工作中使用 jaxws maven plugin 进行代码生成 我有两个项目分别是 common 和 client 结构大致如下 app common resource some xsd client resource some ws
  • 在 Blazor Web Assembly 应用中显示本地计算机摄像头源

    我已将问题简化为样板 Blazor Web Assembly 应用程序 该项目直接来自向导 添加了以下代码 我已将 Index razor 页面更改为 page inject IJSRuntime JSRuntime using Syste