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 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.srcObject = stream
video.onloadedmetadata = function () {
video.play()
initQrScanner()
}
}catch(error){
console.log(error.message)
}
}
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){
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2019-10-12 Node.js Web 模块
2019-10-12 Node.js Express 框架(1)