微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Angular 访问网络摄像头

如何解决使用 Angular 访问网络摄像头

我使用了这个代码示例:

<video autoplay playsinline style="width: 100vw; height: 100vh;"></video>
<script>
    navigator.mediaDevices.getUserMedia({ video: { facingMode: 'user' } })
        .then(stream => document.querySelector('video').srcObject = stream);
</script>

我想通过使用 Angular 的 Web 应用程序通过我的网络摄像头访问。我将代码更改为 Typescript,例如:

@ViewChild('myVideo') myVideo: any;

public takePicture(event?: any): void {
navigator.mediaDevices.getUserMedia({ video: { facingMode: 'user' } })
.then(stream => this.myVideo.srcObject = stream);
}

在 .ts 和

        <button (click)="takePicture($event)"></button>
        <video #myVideo autoplay playsinline style="width: 100px; height: 100px;"></video>

在 html 中。无论如何,示例代码在用浏览器打开的普通文件中工作。但我无法翻译 Angular 的代码。我没有收到任何错误消息。浏览器要求我提供摄像头权限,但我看不到网络摄像头的输入。

来自德国的问候!

解决方法

您没有得到任何输出的原因是,在使用 viewchild 时,您必须通过

访问 srcObject
this.myVideo.nativeElement.srcObject

您可以按照上述方式或使用旧的 javascript document.getElement 之类的

public takePicture(event?: any): void {
const vid = document.getElementById("videoelementId")
navigator.mediaDevices.getUserMedia({ video: { facingMode: 'user' } })
.then(stream => vid.srcObject = stream);
}

我在此基础上开发了一个插件,

https://www.npmjs.com/package/get-my-photo

https://github.com/Faiz-exe/get-my-photo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。