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入门之对象与JSON详解
Oct 21 Javascript
javascript椭圆旋转相册实现代码
Jan 16 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
js检测浏览器版本、核心、是否移动端示例
Apr 24 Javascript
avalon js实现仿微博拖动图片排序
Aug 14 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
tab栏切换原理
Mar 22 Javascript
分享Bootstrap简单表格、表单、登录页面
Aug 04 Javascript
js代码规范之Eslint安装与配置详解
Sep 08 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
php去除HTML标签实例
2013/11/06 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python采用Django开发自己的博客系统
2020/09/29 Python
分析python请求数据
2018/08/19 Python
python之array赋值技巧分享
2019/11/28 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
大学生写自荐信的技巧
2014/01/08 职场文书
营销团队口号
2014/06/06 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
转让协议书范本
2014/09/13 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
教学反思怎么写
2016/02/24 职场文书
JavaScript中isPrototypeOf函数
2021/11/07 Javascript