H5扫码
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扫码的更多相关文章
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...
- C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存.代码在文章结尾处,有需要的 ...
- asp.net core 微信公众号支付(扫码支付,H5支付,公众号支付,app支付)之3
在微信公众号中访问手机网站,当需要调用支付时候无法使用H5支付,只有使用微信公众号支付,使用公众号支付用户必须关注该公众号同时该公众号必须开通公众号支付功能. 1.获取用户的OpenId ,参考之前写 ...
- asp.net core 微信H5支付(扫码支付,H5支付,公众号支付,app支付)之2
上一篇说到微信扫码支付,今天来分享下微信H5支付,适用场景为手机端非微信浏览器调用微信H5支付惊醒网站支付业务处理.申请开通微信H5支付工作不多做介绍,直接上代码. 首先是微信支付业务类(WxPayS ...
- asp.net core 微信扫码支付(扫码支付,H5支付,公众号支付,app支付)之1
2018-08-13更新生成二维码的方法 在做微信支付前,首先要了解你需要什么方式的微信支付,目前本人做过的支付包含扫码支付.H5支付.公众号支付.App支付等,本人使用的是asp.net mvc c ...
- 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...
- PC、h5项目接入第三方支付宝扫码登录、扫码付款
首先介绍一下pc项目接入支付宝扫码支付. 1.pc.移动接入支付宝扫码支付. 其实这个逻辑很简单,前端所需要处理的不是很多,后台会给一个连接,前端只需要将要支付的订单id拼接在这个连接上,然后打开跳转 ...
- 支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结
前言 在上一篇文章<微信支付之扫码支付.公众号支付.H5支付.小程序支付相关业务流程分析总结>中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付 ...
- 微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结
前言 很久以来,一直想写一篇微信支付有关的总结文档:一方面是总结自己的一些心得,另一方面也可以帮助别人,但是因种种原因未能完全理解透彻微信支付的几大支付方式,今天有幸做一些总结上的文章,也趁此机会,将 ...
- 微信支付(PC扫码支付和H5公众号支付)
最近在做微信支付,微信支付比较坑,官方居然只有.NET.C#.PHP的demo居然没有java的demo.然后微信支付是不提供测试账号的需要直接用正式的公众号.首先来介绍下微信扫码支付吧,微信扫码有两 ...
随机推荐
- axios使用备忘录
安装使用 使用npm安装: $ npm install axios 使用CDN: <script src="https://unpkg.com/axios/dist/axios.min ...
- Identity – user login, forgot & reset password, 2fa, external login, logout 实战篇
前言 之前写过一篇 Identity – User Login, Forgot Password, Reset Password, Logout, 当时写的比较简陋, 今天有机会就写多一篇实战版. 建 ...
- 深入理解Android MTP之存储映射分析
深入理解Android MTP之UsbService启动分析 分析了MTP的服务端的启动,本文来分析切换MTP模式后,存储中的数据(文件.目录)是如何映射到PC端的. 首先你得知道如何切换MTP模式. ...
- 【01】DataFrame的创建和属性
DataFrame是一个表格型的数据结构,可以看成就是excel中的表格. 官方文档:https://pandas.pydata.org/docs/reference/frame.html DataF ...
- 轨道控制器 threejs
就是一个可以360转动的相机,通过不断的改变相机的参数 然后渲染达到效果. // 引入相机控件 -- 轨道控制器 // console.log('OrbitControls',OrbitContro ...
- .Net Core 的 using 作用
// using 的使用 // 1. 引用命名空间 using namespace // 2. 自动释放资源 执行结束自动调用 IDispose 接口释放资源 // using (var contex ...
- 64.element表单校验注意点
<!-- 表单验证三要素: --> <!-- ① el-form需要有 model属性[表单数据对象].rules属性[验证规则对象].ref属性[引用字符串] --> < ...
- 38. data为什么是一个函数
vue中的data为什么是返回对象的函数,而不是直接使用对象形式 : 我们复用组件的时候,要求每一份data数据之间是独立的,不能互相影响,如果写成对象的形式所有的组件使用一份data数据 ,如果使用 ...
- 卧槽,WebStorm现在免费啦!
前言 就在昨天1024程序员节,JetBrains突然宣布WebStorm现在对非商业用途免费啦.以后大家再也不用费尽心思的去找破解方法了,并且公告中的关于非商业用途定义也很有意思. 关注公众号:[前 ...
- python语言中三个奇妙的返回值
从公众号看到的,记录下 d = {} d[5] = "test1" d[5.0] = "test2" d["5"] = "test ...