人脸识别、活体检测(眨眼、摇头、张嘴动作)项目总结

项目需求 / 步骤实现描述:

1、申请摄像头权限,开始识别面部信息、同时开始录像 ;

2、随机顺序生成面部检验动作;

3、并开始倒计时,需10s内完成该组检验动作;

4、完成动作通过后,停止录像。

5、截取一张图片;并将录像和图片、检验动作、检验结果上传后台保存;

6、上传成功根据返回结果登录系统页面。

一、遇到的问题及解决方案

问题1、ios苹果系统在微信中允许摄像头权限后,页面无人像并一片空白问题。或是有些苹果机需要手动点击页面的视频播放才能出现视频人像;

  因为微信浏览器没有开启ios摄像头的权限,所以才会出现有些需要手动再次点击播放才能出现。 (ios系统安全机制,需使用自带的safari浏览器才可以有权限)

问题2、ios或是部分手机的视频录制格式 MediaRecorder-MIME 格式被客户端录制;

问题1解决方案:

创建页面监听(WeixinJSBridgeReady)
        原理:对页面加载进行监听,等待微信客户端页面加载完毕后,自动触发音频播放

<video id="Video" preload autoplay loop muted webkit-playsinline="true" playsinline="true"></video>
<script> // 使用微信自带的WeixinJSBridgeReady事件 document.addEventListener('WeixinJSBridgeReady', function() {     document.getElementById('Video').play() })
</script>

问题2解决方案:

增加类型的判断

var p = navigator.mediaDevices.getUserMedia({ audio: true, video: true });
p.then(function(stream) {
var _this = this;
console.log('stream.id----', stream.id);
var options = {
mimeType: 'video/webm;codecs=vp9' // '默认'
}; if (!MediaRecorder.isTypeSupported(options.mimeType)) {
logger('ondataavailable', 'MIME 格式无法被客户端录制');
var types = [
'video/webm\;codecs=vp8',
'audio/mp4',
'video/mp4',
'video/webm',
'audio/webm',
'video/webm\;codecs=daala',
'video/webm\;codecs=h264',
'audio/webm\;codecs=opus',
'video/mpeg'
]; for (var i in types) {
logger('判断类型: ', types[i]);
if (MediaRecorder.isTypeSupported(types[i])) {
options.mimeType = types[i]
logger('MediaRecorder-MIME 录制类型: Maybe!', types[i]);
break
}
}
} if (!MediaRecorder.isTypeSupported) {
options.mimeType = 'audio/mp4'
}
_this.recoder = new MediaRecorder(stream, options);
console.log('stream', stream)
_this.recoder.ondataavailable = function (e) {
recodedBuffer.push(e.data);
logger('ondataavailable', '录制数据有效', e, e.data, e.data.size);
}
       ...
               _this.recoder.start();
               ...
})

最新文章

  1. 申请Google API Key
  2. 百度地图API 海量点 自定义添加信息
  3. UIMenuController的使用
  4. MATLAB连接MySQL数据库
  5. hdu 3480
  6. HDU 4627 The Unsolvable Problem(简单题)
  7. php数组array,知道键名如何提取键值
  8. HDU 5729 Rigid Frameworks(连通性DP)
  9. UITableView控制头部View
  10. zabbix监控docker
  11. 在.NET Core中使用Irony实现自己的查询语言语法解析器
  12. 将 MacOS 默认的 PHP 版本升级到 7.*
  13. Thinkphp高仿陌陌网页直播
  14. GDAL打开mdb文件失败解决方法
  15. MT7688交叉编译环境配置
  16. 7#Java基本语句语法
  17. liunx驱动----异步通知
  18. mysql8:caching-sha2-password问题
  19. GPUImage API 文档之GPUImageFilter类
  20. FPGA内部动态可重置PLL讲解(一)

热门文章

  1. 使用 Cheat Engine 修改 Kingdom Rush 中的金钱、生命、星
  2. 【ArcGIS教程】专题图制作-人口密度分布图——人口密度分析
  3. day04 Java_分支_循环
  4. Solution -「HNOI」EVACUATE
  5. Java核心知识体系2:注解机制详解
  6. jdbc 04: 配置连接信息
  7. day01--MarkDown语法格式
  8. ExceptionLess的安装、配置、使用
  9. CF222C Reducing Fractions
  10. 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)