JavaScript 如何在浏览器中使用摄像头


Posted in Javascript onDecember 02, 2020

1.获得摄像头权限(本文使用chrome)

首先确保你运行以下js所在的url是https协议的或者localhost的:

const constrains = {
   video: true,
   audio: true
  }
 navigator.mediaDevices.getUserMedia(constrains)
  .then(stream => {
   console.log('得到stream的类型是MediaStream')
  })
  // 在一些老的浏览器上的话:
  // navigator.webkitGetUserMedia
  // navigator.mozGetUserMedia

之后你的浏览器会有弹出框,告诉你你的浏览器想要访问camera,问你是否允许。
此外,这里的constrains可以设置分辨率的最小、理想和最大值,还可以在手机端通过设置facingMode来控制摄像头的方向等。

2.将得到的stream:MediaStream给video, camera实现直播效果

const video = document.createElement('video');
 //document.body.appendChild(video)
 const constrains = {
   video: true,
   audio: true
  }
 navigator.mediaDevices.getUserMedia(constrains)
  .then(stream => {
  video.srcObject = stream;
  video.play();
  })

此时video将播放camera实时录制下来的内容

3.照相

// 展示相片的image标签
 const image = document.createElement('image')
 // canvas会读取video中的内容,然后输出(有点类似于给video截图)
 const canvas = document.createElement('canvas')
 const video = document.getElementById('video');
 const context = canvas.getContext('2d')
 context.drawImage(video, 0, 0, canvas.height, canvas.width)
 // 此时将canvas生成的图片转换成一个data url
 const url = canvas.toDataURL()
 image.src = url

4.录像

需要在2.MediaStream给video的基础上做些修改

const constrains = {
   video: true,
   audio: true
  }
 let mediaRecorder
 navigator.mediaDevices.getUserMedia(constrains)
  .then(stream => {
  mediaRecorder = new MediaRecorder(stream)
  })
 
 startRecord() {
  mediaRecorder.start()
  mediaRecorder.ondataavailable = e => {
   chunks.push(e.data)
  }
 }

 stopRecord() {
  mediaRecorder.stop()
  return new Promise(resolve => {
   mediaRecorder.onstop = e => {
    const blob = new Blob(chunks, { type: 'video/ogg; codecs=opus' })
    const audioURL = window.URL.createObjectURL(blob)
    resolve(audioURL)
   }
  })
 }

 // video标签用来展示录制下来的内容
 const video = document.createElement('video');
 //document.body.appendChild(video)

 // 开始录像
 startRecord()

 // do something....,比方说这里搞两个button、一个开始录影,一个结束录影

 // 结束录影
 stopRecord().then(videoUrl => {
  video.src = videoUrl
 })
 // 此时video标签的内容就是你录制下来的内容。

以上就是JavaScript 如何在浏览器中使用摄像头的详细内容,更多关于JavaScript 浏览器使用摄像头的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
JavaScript 组件之旅(一)分析和设计
Oct 28 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
深入研究React中setState源码
Nov 17 Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
Vue使用axios出现options请求方法
May 30 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
May 22 jQuery
Vue实现简易购物车页面
Dec 30 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 #Vue.js
JavaScript实现简单动态表格
Dec 02 #Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 #Javascript
JavaScript实现网页跨年倒计时
Dec 02 #Javascript
JavaScript async/await原理及实例解析
Dec 02 #Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 #Javascript
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 #Vue.js
You might like
随机广告显示(PHP函数)
2006/10/09 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
python对json的相关操作实例详解
2017/01/04 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
pycharm修改file type方式
2019/11/19 Python
python中with用法讲解
2020/02/07 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
Keras自定义IOU方式
2020/06/10 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
英文自荐信格式
2013/11/28 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
党员承诺书内容
2014/03/26 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
项目合作意向书
2015/05/08 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers