人脸识别、活体检测(眨眼、摇头、张嘴动作)clmtrackr
2024-08-28 02:26:55
人脸识别、活体检测(眨眼、摇头、张嘴动作)项目总结
项目需求 / 步骤实现描述:
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();
...
...
})
最新文章
- 申请Google API Key
- 百度地图API 海量点 自定义添加信息
- UIMenuController的使用
- MATLAB连接MySQL数据库
- hdu 3480
- HDU 4627 The Unsolvable Problem(简单题)
- php数组array,知道键名如何提取键值
- HDU 5729 Rigid Frameworks(连通性DP)
- UITableView控制头部View
- zabbix监控docker
- 在.NET Core中使用Irony实现自己的查询语言语法解析器
- 将 MacOS 默认的 PHP 版本升级到 7.*
- Thinkphp高仿陌陌网页直播
- GDAL打开mdb文件失败解决方法
- MT7688交叉编译环境配置
- 7#Java基本语句语法
- liunx驱动----异步通知
- mysql8:caching-sha2-password问题
- GPUImage API 文档之GPUImageFilter类
- FPGA内部动态可重置PLL讲解(一)
热门文章
- 使用 Cheat Engine 修改 Kingdom Rush 中的金钱、生命、星
- 【ArcGIS教程】专题图制作-人口密度分布图——人口密度分析
- day04 Java_分支_循环
- Solution -「HNOI」EVACUATE
- Java核心知识体系2:注解机制详解
- jdbc 04: 配置连接信息
- day01--MarkDown语法格式
- ExceptionLess的安装、配置、使用
- CF222C Reducing Fractions
- 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)