背景
基于Electron实现的pc端智能验机应用,近期迭代了一个新的功能,需求是通过电脑外接摄像头对手机屏幕进行拍照,拍照后需将照片上传至服务端进行屏幕信息比对,确定被检测屏幕是否为原厂屏。
需求分析
根据上面的需求,分析大概要以下几个步骤。
1.先实现将摄像头的画面实时展示在页面视频采集区域中;
2.将摄像头中的视频画面采集一帧成图片并回显;
3.将生成的图片上传至CDN拿到图片链接;
4.将图片链接上传到后端接口做处理;
确定了需要以上四个步骤后,接下来一步一步实现。
实现
视频采集
由于
Electron内置了Chromium浏览器,该浏览器对各项前端标准都支持得非常好,所以基于 Electron 开发应用不会遇到浏览器兼容性问题。几乎可以在 Electron 中使用所有HTML5、CSS3、ES6标准中定义的API。
所以基于WebRTC提供的API即可获取到摄像头的视频流。
MediaDevices.getUserMedia()
代码如下:
methods: {getUserMedia() {/* 可同时开启video(摄像头)和audio(麦克风) 这里只请求摄像头,所以只设置video为true */navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) {/* 使用这个 stream 传递到成功回调中 */this.success(stream)}).catch(function(err) {/* 处理 error 信息 */this.error(error)});}
}
MediaDevices.getUserMedia()会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道。此流可以包含一个视频轨道(来自硬件或者虚拟视频源,比如相机、视频采集设备和屏幕共享服务等等)、一个音频轨道(同样来自硬件或虚拟音频源,比如麦克风、A/D 转换器等等),也可能是其它轨道类型。
它返回一个 Promise 对象,成功后会resolve回调一个 MediaStream 对象。若找不到满足请求参数的媒体类型,promise会reject回调一个NotFoundError。
现在已经成功获取到视频流,接下来就是将视频流回显到页面。 这里使用video标签完成,代码如下:
<template><div class="video-page"><div class="video-content"><v

本文介绍了在Electron应用中如何实现调用外接摄像头拍照,并将照片上传至CDN的详细步骤,包括视频采集、拍照生成图片、上传图片至CDN的实现方法和相关API的使用。
最低0.47元/天 解锁文章
798

被折叠的 条评论
为什么被折叠?



