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 switch case 另类写法
Mar 14 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
js实现动态显示时间效果
Mar 06 Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
React-Native 组件之 Modal的使用详解
Aug 08 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
js实现简易计算器小功能
Nov 18 Javascript
原生JavaScript实现幻灯片效果
Feb 19 Javascript
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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php中数组最简单的使用方法
2020/12/27 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
jquery text()要注意啦
2009/10/30 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
JS实现随机点名器
2020/04/12 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
python使用配置文件过程详解
2019/12/28 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
清华大学自主招生自荐信
2014/01/29 职场文书
出纳会计岗位职责
2014/03/12 职场文书
元旦联欢会主持词
2014/03/26 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
毕业实习计划书
2015/01/16 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
教师廉政准则心得体会
2016/01/20 职场文书