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引用指针使用介绍
Nov 07 Javascript
js图片自动切换效果处理代码
May 07 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
javascript页面倒计时实例
Jul 25 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
AngularJS 2.0新特性有哪些
Feb 18 Javascript
canvas实现爱心和彩虹雨效果
Mar 09 Javascript
Javascript网页抢红包外挂实现分享
Jan 11 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 Javascript
Vue项目实现简单的权限控制管理功能
Jul 17 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php array的学习笔记
2012/05/10 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python机器学习之决策树算法
2017/12/22 Python
Python中的TCP socket写法示例
2018/05/11 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
工商管理应届生求职信
2013/10/07 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
团队精神的演讲稿
2014/05/14 职场文书
工商干部先进事迹
2014/05/14 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
本科应届生自荐信
2014/06/29 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
公司介绍信范文
2015/01/31 职场文书
小学生家长意见
2015/06/03 职场文书
六年级作文之预言作文
2019/10/25 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Node与Python 双向通信的实现代码
2021/07/16 Javascript