【javascript】浏览器调用摄像头扫二维码踩坑记录

news/2025/1/16 7:50:13/

前言

  • 最近做一个项目需要用浏览器调用摄像头扫二维码,然后就踩了几个坑记录下。

踩坑记录

  • 我一开始发现了zxing这个库,他分为https://www.npmjs.com/package/@zxing/library 与
    https://www.npmjs.com/package/@zxing/browser
  • zxing/browser是最近才建立的,根据我的使用发现zxing/browser有bug,他目前没法像zxing/library一样使用reset来终止摄像头使用。在pc端使用zxing/browser如果未终止或者我还试过使用BrowserQRcodeReader的静态方法去清空流,也不能使得摄像头灯灭了。
	useEffect(() => {async function main() {codeReader = new BrowserQRCodeReader();codeReader.getVideoInputDevices().then(//老版本写法// codeReader = new BrowserQRCodeReader();// BrowserQRCodeReader.listVideoInputDevices().then((videoInputDevices) => {console.log(videoInputDevices);selectedDeviceId = videoInputDevices[0].deviceId;});}main();}, []);
  • zxing/library中使用BrowserQRCodeReader会有明显的废弃提示,但是丝毫不影响其使用,个人用了下没有大的毛病,但是问题就是移动端没法打开摄像头。
  • 然后我就发现了qr-scanner这个库。
  • https://www.npmjs.com/package/qr-scanner
  • 看介绍说它是基于zxing/library做的(所以感觉按道理zxing/library应该能让移动端开摄像头才对)。
  • 这个库有几个坑需要注意下。
  • 第一:必须在https下移动端才可以开启摄像头
  • 第二:除了导入它的库外,还有个workerpath必须设上:
QrScanner.WORKER_PATH = 'path/to/qr-scanner-worker.min.js';
  • 不设置这个是无法工作的,我不知道为啥这个库要做的这么麻烦,不能一次头导入全部。个人觉得比较好方法就是把那文件甩静态里,这样引用的路径就没问题了。它文档上写的方法有点复杂,还各种配置相当麻烦。(并且我照着配了下还失败了,也懒得去找原因)。
  • 设置完毕后就可以正常工作。
  • 这里推荐个https开发神器ngrok
  • https://ngrok.com/
  • 有了它开发https限定的就相当方便了,比如pwa应用之类,非常好用。

http://www.ppmy.cn/news/660347.html

相关文章

原生小程序使用二维码扫码调用接口

1、点击扫码直接打开文件&#xff0c;通过二维码得到了个后台反的url地址(https://....?参数值&参数值)&#xff0c;把地址的参数拿取出来&#xff0c;之后调用接口就完成了&#xff0c;如果是和我一样操作的&#xff0c;建议复制。 //按钮样式跳转扫码 <button class…

iOS开发——扫二维码下载APP

注意&#xff1a;苹果手机只有UDID被加入到开发者的设备中之后才可以扫描二维码安装否则不能安装&#xff0c;如果没有请将UDID加入到开发者设备中重新下载证书点击运行就可以了&#xff08;电脑证书不用动&#xff09;。 查看苹果设备UDID并添加到开发者账号设备目录请查看我这…

微信二维码扫码登录的原理

扫二维码登录现在比较常见&#xff0c;比如微信、支付宝等 PC 端登录&#xff0c;并且越来越多的APP支持扫码登录&#xff0c;其中原理如何呢&#xff1f; PC端Cookie Session 登录 HTTP 是一种无状态的协议&#xff0c;客户端每次发送请求时&#xff0c;首先要和服务器端建立…

扫二维码时判断手机是安卓还是IOS

1.使用情景&#xff0c;有个需要扫描二维码下载的APP&#xff0c;需要区分IOS和安卓&#xff0c;跳转到相应的下载链接去 var browser { versions: function() { var u navigator.userAgent, app navigator.appVersion; return { trident: u.indexOf(Trident) > -1, //I…

如何扫码下载文件?文件转二维码生成在线的方法

现在大多数人喜欢将文件生成二维码图片的方式来分享给他人&#xff0c;有效的提升了他人获取信息的速度&#xff0c;那么文件生成二维码该如何来操作呢&#xff1f;可以使用在线二维码生成器来操作&#xff0c;只需要通过上传文件&#xff0c;一键就可以在线生成二维码图片&…

c#调用摄像头进行二维码扫码

摄像头调用和二维码扫码实际已经是很成熟的技术,不需要我们再去编写轮子,直接使用开源的代码,本文中,我们使用的是AForge.net调用摄像头,使用zxing.net生成二维码及实现二维码读取的功能。 之所以再去写这样一篇可能很多人写过的文章,是因为以上两个dll在提供的官方链接无…

二维码扫码登录原理

简介 二维码扫码登录这个操作&#xff0c;在我们的日常生活和工作中频频出现。 这种操作主要发生于&#xff1a;在手机设备已经登录的情况下&#xff0c;需要在电脑PC端应用或者网页应用也登录&#xff0c;这时&#xff0c;如果该应用支持扫码登录&#xff0c;我们就可以用手机…

电脑通过二维码打开手机链接

自己写的一个电脑端打开手机二维码链接的程序。 小米自带浏览器有将网站弄成二维码的按钮&#xff0c;然后将这个二维码给电脑摄像头看一下&#xff0c;程序识别到是二维码&#xff0c;就通过浏览器打开这个链接。 import cv2 as cv from pyzbar.pyzbar import decode from re…