JS调用本地设备
JS 允许通过 navigator.mediaDevices.getUserMedia(options) 直接调用本地的设备,比如麦克风,摄像头等。因为该操作涉及到用户隐私,所以调用的时候会弹框请求权限。
该操作返回一个 Promise 对象,如果调用成功,会resolve 并返回一个 MediaStream 对象给回调函数:
const options = {
audio: true //调用本地麦克风
video: true //调用本地摄像头
}
navigator.mediaDevices.getUserDevice(options).then(stream => {
audio.srcObject = stream;
audio.onloadedmetadata = () => {
audio.play();
}
})
如果用户拒绝使用麦克风或者摄像头权限,则会reject该请求:
navigator.mediaDevices.getUserDevice(options).then(stream => {
...
}).catch(error => {
// 如果用户拒绝权限请求,或者找不到对应的设备,会被catch到
})
当使用摄像头的时候,还可以自定义相机的分辨率:
const options = {
video: {
width: 1280,
height: 720
}
}
也可以通过指定min、max、ideal 来设置最小、最大以及理想的分辨率,但是需要注意的是如果满足该参数,比如摄像头的最大分辨率是1280*760,但此时设置的height 属性最小分辨率为730,就会抛出 OverconstrainedError ,所以设置自定义参数的时候需要考虑设备是否能满足。
此时有人可能会问,如果我有多个摄像头,对,就是说手机,那调用的是哪一个呢?
当我们指定video的ideal属性的时候,这个优先级最高,系统会默认寻找最接近该值的摄像头。但是我们也可以自己指定手机上是使用前置还是后置的摄像头:
const isUseFront = true;
const options = {
video: {
facingMode: isUseFront ? 'user' : 'environment'
}
}
需要注意的是不是所有的浏览器都支持该API,比如反人类的IE,所以使用的时候还是需要考虑到兼容性的问题。
该API只能通过获取设备使用权,但是无法获取到具体的数据,比如音频数据。当我们需要实时获取到音频输入数据并进行对应操作的时候,这个API还无法满足我们的需求,这时候就需要另一个API:AudioContext 来对音频数据进行操作。对于AudioContext,目前还处于学习阶段,过段时间会有后续更新,敬请期待!
JS调用本地设备的更多相关文章
- js调用本地程序
前几天,做项目时候用到js调用本地的程序,找了好多资料,一种是写入注册表,一种是写一个浏览器插件,相对来说,写一个注册表更简单一点,因为需求很紧.下面就是我的总结,希望可以对你们有所帮助,具体从哪里找 ...
- 【Web前端】---js调用本地应用程序
最近进入了一个项目组,向大牛们一起学习如何搞开发,可谓是边开发边学习.就在前两天,我们的项目被领导们验收了一次,顺便给我们提了点新的需求,要求我们能够使用外在设备拍照上传.君要臣死,臣不能不死.更何况 ...
- PC网页js调用本地应用程序
最近要现实一个在PC网页中实现点击按钮调用本地应用程序的功能 其实实现原理也非常简单, 首先注册一个本地注册表文件,指向本地应用程序路径 其次在网页中用js指向这个注册表文件,就可以实现网页调用本地应 ...
- js调用本地office打开服务器的office文件预览
本来是想做成直接在网页上在线预览office文件的,但是找了好多,要不是收费,要不就是要调用别人的API不安全,所以纠结了好久还是用调用本地的office预览office文件. 废话不多说,那么怎么调 ...
- Js调用本地exe的方式
1. 使用记事本(或其他文本编辑器)创建一个myprotocal.reg文件,并写入以下内容 Windows Registry Editor Version 5.00 [HKEY_CLASSE ...
- js调用本地 exe
js方法 function Run(strPath) //only for ie { try { var objShell = new ActiveXObject("wscript.sh ...
- JS调用本地应用程序
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- 使用JS启动本地应用程序、屏幕键盘
问题描述: 现在希望在Web端使用JS调用本地应用程序 问题解决: (1)使用JS启动本地应用程序 使用上述代码重点是创建了一个ActiveXObject的对象 参考说明: ...
- JS方式调用本地的可执行文件
看到一个方法,有些用,先存下来,有用的时候再用. 前几天,在IE,FIREFOX中实现了用JS方式调用本地的可执行文件.地址:www.yihaomen.com/article/js/211.htm , ...
随机推荐
- vue2 inheritAttrs、attrs和attrs和listeners使用
inheritAttrs.attrs和attrs和listeners使用场景: 组件传值,尤其是祖孙组件有跨度的传值. (1)inheritAttrs 属性说明:https://cn.vuejs.or ...
- Java单例实现及分析
双重检验锁实现方式 public class Singleton { //定义一个私有的空构造方法,防止直接用new实例化 private Singleton() {} private static ...
- java 删除整数元素集合中的元素
1. 简介 对于整数类型的元素集合,例如{1, 2, 3, 4, 5},再进行元素删除时需要注意.在List中删除操作有remove(int index)和remove(Object o), 查看两种 ...
- Python GUI之tkinter
https://blog.csdn.net/yingshukun/article/details/53985080 设置背景图:https://blog.csdn.net/rikkatakanashi ...
- js判断一个字符串是否是回文字符串
回文字符串:即字符串从前往后读和从后往前读字符顺序是一致的. 如:字符串abccba,从前往后读是a-b-c-c-b-a:从后往前读也是a-b-c-c-b-a 方法一 function palindR ...
- 【Monkey】Monkey稳定性测试常用命令
Monkey稳定性测试常用命令: 1.adb shell monkey n 2.adb shell monkey -p com.android.calculator2 1000 3.adb shel ...
- Vue.js学习过程
打开各大论坛,看到好多Vue.js的话题,可以说现在是非常火的框架,看到一个人这样评论Vue:“Vue.js兼容angular.js和 react.js的优点,并剔除他们的缺点.”因为现在公司不用Vu ...
- 将一个js项目改造成vue项目
本地环境:node版本:8.11.4 vue版本:3.4.1; 开发工具vscode 1.创建一个空的vue项目(vue create bigdata_reprot_web) 2.找到项目的空白页,改 ...
- 该 URL“XX”无效。它可能指向不存在的文件或文件夹,或者是指向不在当前网站中的有效文件或文件夹
当使用SharePoint SPWeb.Files.Add()方法往文档库中写入文件时,报 该 URL“XX”无效.它可能指向不存在的文件或文件夹,或者是指向不在当前网站中的有效文件或文件夹, 原因 ...
- Linux c使用gumbo库解析页面表单信息(三)
前面说了那么多,终于说到如何解析html表单信息了. 什么是表单信息呢,这里我们先要有一些概念: 如上图,这是一个QQ注册页面,注册页面当中需要我们填的空其实就是一个表单信息. 具体到html代码当中 ...