1.前言

  • H5可以获取视频流,并通过video元素进行播放
  • 可以canvas对视频进行定时截图,然后使用插件对图片进行二维码解析
  • 也可以直接对视频进行二维码解析(推荐)
  • 解析二维码的插件为qr-scanner

2.注意事项

  • 网站只有https协议才能开启视频流
  • http协议的页面(局域网)需要手动进行配置
  • 地址栏输入 chrome://flags/#unsafely-treat-insecure-origin-as-secure,进行跳转
  • 将当前域名填入,切换为Enabled,重启,如图

3.具体步骤

  • 准备video元素,后面用来展示视频
  • 获取视频流,并实时展示到video元素中
  • 使用qr-scanner插件对视频流进行扫描
  • 扫描成功则进行解析,并停止扫描
  • 也可以开启图片识别,识别图片中的二维码
  • 使用qr-scanner需引入两个文件(qr-scanner.min.js,qr-scanner-worker.min.js),在ES6中,引入qr-scanner.min.js时会自动引入qr-scanner-worker.min.js,请将其放在同一目录

4.核心代码

  • video元素占满屏幕
<video style="width: 100%; height: 100%; object-fit: fill;"></video>
  • 获取视频流(需要授权)
//视频流宽高(宽高反着写),使用后置摄像头
var constraints = {
video:{facingMode:"environment",width:this.height,height:this.width}
}
if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
try{
//开启视频流
const stream = await navigator.mediaDevices.getUserMedia(constraints)
//获取视频元素
var video = document.getElementById("video")
//将视频流实时播放在video
video.srcObject = stream
//等待加载
video.onloadedmetadata = function () {
//开始播放
video.play()
//初始化视频流扫描
initQrScanner()
}
}catch(error){
//没有权限进入这里
console.log(error.message)
}
}
  • 使用qr-scanner插件对视频流进行扫描
var video = document.getElementById("h5-scan-video")
//创建实例
var qrScanner = new QrScanner(
video,
function(result){
//处理二维码
console.log(result.data)
},
{
onDecodeError: error => {
console.log('未发现',error)
},
highlightScanRegion: true,
highlightCodeOutline: true,
}
)
//开始扫描视频流
qrScanner.start()
  • 也可以解析图片中的二维码(使用文件域获取图片)
async parseImage(file){
try{
//解析图片
const result = await QrScanner.scanImage(file, { returnDetailedScanResult: true })
//扫描到二维码往后走 //处理二维码
console.log(result.data)
}catch(error){
//图片未包含二维码
} }

H5扫码的更多相关文章

  1. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...

  2. C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存.代码在文章结尾处,有需要的 ...

  3. asp.net core 微信公众号支付(扫码支付,H5支付,公众号支付,app支付)之3

    在微信公众号中访问手机网站,当需要调用支付时候无法使用H5支付,只有使用微信公众号支付,使用公众号支付用户必须关注该公众号同时该公众号必须开通公众号支付功能. 1.获取用户的OpenId ,参考之前写 ...

  4. asp.net core 微信H5支付(扫码支付,H5支付,公众号支付,app支付)之2

    上一篇说到微信扫码支付,今天来分享下微信H5支付,适用场景为手机端非微信浏览器调用微信H5支付惊醒网站支付业务处理.申请开通微信H5支付工作不多做介绍,直接上代码. 首先是微信支付业务类(WxPayS ...

  5. asp.net core 微信扫码支付(扫码支付,H5支付,公众号支付,app支付)之1

    2018-08-13更新生成二维码的方法 在做微信支付前,首先要了解你需要什么方式的微信支付,目前本人做过的支付包含扫码支付.H5支付.公众号支付.App支付等,本人使用的是asp.net mvc c ...

  6. 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付

    在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...

  7. PC、h5项目接入第三方支付宝扫码登录、扫码付款

    首先介绍一下pc项目接入支付宝扫码支付. 1.pc.移动接入支付宝扫码支付. 其实这个逻辑很简单,前端所需要处理的不是很多,后台会给一个连接,前端只需要将要支付的订单id拼接在这个连接上,然后打开跳转 ...

  8. 支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结

    前言 在上一篇文章<微信支付之扫码支付.公众号支付.H5支付.小程序支付相关业务流程分析总结>中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付 ...

  9. 微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结

    前言 很久以来,一直想写一篇微信支付有关的总结文档:一方面是总结自己的一些心得,另一方面也可以帮助别人,但是因种种原因未能完全理解透彻微信支付的几大支付方式,今天有幸做一些总结上的文章,也趁此机会,将 ...

  10. 微信支付(PC扫码支付和H5公众号支付)

    最近在做微信支付,微信支付比较坑,官方居然只有.NET.C#.PHP的demo居然没有java的demo.然后微信支付是不提供测试账号的需要直接用正式的公众号.首先来介绍下微信扫码支付吧,微信扫码有两 ...

随机推荐

  1. Angular 18+ 高级教程 – Angular 的局限和 Github Issues

    前言 Angular 绝对有很多缺陷,Issue 非常多,workaround 非常多. 我以前至少有 subscribe 超过 20 个 Issues,几年都没有 right way 处理的. An ...

  2. CSS – Selector

    前言 这篇记入一些我常用到. 以前写的笔记 css 选择器 (学习笔记) Whatever (*) * {} By Id (#) #id {} By Class (.) .class-name {} ...

  3. MyBatisPlus——DQL编程控制——条件查询

    DQL编程控制 条件查询--设置查询条件 格式一:常规格式 //方式一:按条件查询 QueryWrapper qw = new QueryWrapper(); // 10岁到30岁之间的用户 qw.g ...

  4. SpringMVC —— RESTful入门

    RESTful入门案例   1.设定http请求动作(动词) @RequestMapping(value = "/users",method = RequestMethod.POS ...

  5. SuperMap iServer数据动态更新刷新地图与数据服务

    更新:2022年6月27日 SuperMap iServer 11i 底层修改逻辑,增加智能指针.11i版本不需要以下操作即可实现 一.使用背景 有这么一个需求,后端也就通过SuperMap iDes ...

  6. Linux系统启动速度优化工具systemd-analyze

    systemd-analyze简介 systemd-analyze是Linux自带的分析系统启动性能的工具. systemd-analyze可使用的命令: systemd-analyze [OPTIO ...

  7. 高通ADSP USB流程

    在高通平台上,ADSP(Audio Digital Signal Processor,音频数字信号处理器)可以通过 USB 接口与主机进行数据传输,以下是大致的 ADSP USB 流程: 主机发起 U ...

  8. iOSwkwebView 打开 TXT/PDF 文件乱码的问题

    最近做资料文件下载下来并查看的时候,用 WKWebView 打开office 类型的文件的时候是没问题的,但是打开测试人员上传的一个 TXT/PDF 文件就出现了乱码问题,经过查看,应该是文件的编码问 ...

  9. grafana配置告警

    首先,进入grafana控制面板,选择需要监控指标的区域,然后点击编辑 此时进入Alert页面会发现提示 Template variables are not supported in alert q ...

  10. k8s的pod的理解

    pod共享相同的IP地址和端口空间. 这意味着在同一 pod中的容器运行的 多个进程需要注意不能绑定到相同的端口号, 否则会导致端口冲突, 但这只涉及同一pod中的容器. 由于每个pod都有独立的端口 ...