前端如何利用js开启摄像头和关闭摄像头以及他的指示灯

这篇具有很好参考价值的文章主要介绍了前端如何利用js开启摄像头和关闭摄像头以及他的指示灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

其实本文章主要想要讲解的就是如何关闭摄像头以及他的指示灯,因为这个事真的很让我苦恼,而开启摄像头其实并没有那么难,只需调用navigator.mediaDevices.getUserMedia方法就行,具体就不细讲了,直接上代码(HTML结构就是一个video标签和两个button按钮,所以就只上js部分了)

 const video = document.querySelector('#video')
//开启摄像头按钮
 const btn1 = document.querySelector('#btn1')
//关闭摄像头按钮
const btn2 = document.querySelector('#btn2')
let mediaStreamTrack = null

btn1.addEventListener('click', async () => {
                await navigator.mediaDevices.getUserMedia({ video: true })
                    .then((staream) => {
//这里保存下来stream对象只是为了后续关闭摄像头的时候使用
                        mediaStreamTrack = stream
                        video.srcObject = staream
                    })
        })

开启摄像头之后,重点来了,我该如何关闭摄像头以及他的指示灯呢!!!!

关闭摄像头其实要用到我们之前保存的stream流对象,循环stream流对象的getVideoTracks()方法然后对里面每个内容调用stop()方法就行,可能有人会疑惑,这里为什么要循环呢?循环的目的其实是为了把视频和音频一起停止,如果你没有开启音频的话那就无需循环也可以,我这里是只开启了视频

btn2.addEventListener('click',() => {
            mediaStreamTrack.getVideoTracks().forEach(track => {
            track.stop()
        })
      })

写完这个代码你会发现video标签里面的内容没有了,是一个黑屏状态,但是你摄像头旁边的指示灯依然是亮着的,这是因为你关了摄像头,但没有完全关,虽然内容没了,其实还是一直在推送黑帧,初步判断是因为mediaStreamTrack.getVideoTracks()返回的是一个新流(如果判断错误大家可以及时纠正),这个时候你可以加一串代码,让video的srcObject=null,这样指示灯就关掉了

btn2.addEventListener('click',() => {
            mediaStreamTrack.getVideoTracks().forEach(track => {
            track.stop()
        })
        video.value.srcObject = null
      })

这是因为强大的垃圾回收机制,哈哈哈,最后到这里结束文章来源地址https://www.toymoban.com/news/detail-645833.html

到了这里,关于前端如何利用js开启摄像头和关闭摄像头以及他的指示灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JetsonNano学习(四)OPENCV开启CSI摄像头

    网上非常多的代码打不开CSI摄像头,但是使用 Python2 可以解决,根本原因在于OpenCV版本,Python2库中的CV2版本高于Python3导致,通过更新Python3库中的OpenCV即可解决该问题。 断电安装CSI摄像头,注意排线线缆的方向和正反,安装完成后上电开机。 如果是USB摄像头,安装有手就行

    2024年02月15日
    浏览(44)
  • 震撼来袭!(USB Camera,支持同时开启多路摄像头,支持旋转、镜像)

    Android灵活实用的Android平台UVC摄像头实例,无需任何系统权限即可轻松打开您的uvc摄像头( 支持多路摄像头 )。 Feature 支持开启多路摄像头; 支持在Android 4.4~11开启camera1、camera2和uvc camera; 支持预览480p、720p、1080p等; 支持抓图(.jpg)、视频(.mp4/.h264/yuv)和音频(pcm/mp3/aac) 支持旋

    2024年02月11日
    浏览(47)
  • 前端调用电脑摄像头

    项目中需要前端调用,所以做了如下操作 先看一下效果吧 主要是基于vue3,通过canvas把画面转成base64的形式,然后是把base64转成 file文件,最后调用了一下上传接口 但是这个得开启浏览器的摄像头权限,不然会报错 以下是代码 进入页面先调用一下摄像头 拍照 转base64 完整代

    2024年02月10日
    浏览(48)
  • js摄像头动态检测

    利用摄像头每一秒截图一次图像。然后计算2次图像之间的相似度。 如果相似度低于98%就会报警。 原理是看了有一篇文章 首先降低图片分辨率 然后使用指纹提取 在“平均哈希算法”中,若灰度图的某个像素的灰度值大于平均值,则视为1,否则为0。把这部分信息组合起来就

    2024年02月09日
    浏览(37)
  • ubuntu利用usb_cam打开摄像头

    想要标定多个相机,首先得把相机打开吧,usb_cam是针对usb摄像头的ros驱动包,简单来说就是得有这个功能包,才能在ros中把摄像头打开。 首先打开终端,输入: 这里melodic应该根据自己Ubuntu系统进行灵活变换,例如我使用的Ubuntu18.04,那么我对应的就是melodic版本。 驱动安装

    2024年02月03日
    浏览(44)
  • windows利用ffmpeg采集摄像头画面,支持服务启动,支持一键启动

    1. 我们在windows 系统下采用ffmpeg去采集笔记本电脑摄像头和麦克风的时候需要先获取摄像头和麦克风的信息 2. 因为每台电脑摄像头和麦克风的信息不一样,如果名称不对会导致不能采集  bat脚本实现,先去获取摄像头信息,筛选出摄像头的信息,作为变量传入到ffmpeg采集命令

    2024年02月13日
    浏览(42)
  • 海康摄像头web3.3前端实现

     上篇我发布了一篇文章,有一个刷新页面摄像头就消失的bug,这个代码就是我改过以后得。 直接就放到组件里就行。要是不出来的话,可能是你们插件有问题。可以重新安装一次插件。 template     div class=\\\"chart-box\\\" ref=\\\"chartBox\\\"         div class=\\\"chart-body\\\" ref=\\\"divPlugin\\\" id=\\\"divPlu

    2024年02月20日
    浏览(40)
  • 移动端利用 input 标签调用手机摄像头拍照,实现人脸验证的功能

    近期在做项目时,有一个需求需要实现人脸识别功能,该功能的底层原理就是利用手机的拍照功能,获取用户的人脸图片,然后调用公安部的图像库进行逐一比对。实现这个功能只需要两步,第一步就是获取用户人脸图片;第二步就是将图片传给后端进行人脸比对。由于现在

    2024年02月16日
    浏览(41)
  • c 摄像头利用v4l2直接生成avi视频(不利用ffmpeg)

    自定义avi结构头文件。现在不能实时显示摄像头画面,准备参照fim(终端中显示图片),直接对显示framebuffer操作,显示视频。不用qt等。 生成的视频根据机子的性能不同,诂计要手动调一下生成视频的帧率。 播放: $ aplay  musicdemo.wmv 录音: $ arecord -c 2 -r 44100 -f S16_LE musicd

    2024年02月08日
    浏览(40)
  • SpringBoot+海康威视摄像头实现在前端的预览

    本文是之前文章的一篇完善文,如果你是才接触海康威视摄像头的二次开发请先阅读入门篇 在实现摄像头的预览的时候需要搞懂什么是rtsp。 rtsp是一种实时流传输协议(Real Time Streaming Protocol,RTSP),主要使用TCP和UDP完成数据的传输。 1.1 了解海康威视rtsp的url规范 【老版本】

    2023年04月08日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包