张大胖最近很苦恼, 隔壁同事赵胖子最近写了个web访问控制 的模块,深受领导姚无发的器重。每天都在自己面前洋洋得意,这让张大胖看在眼里,急在心里,很是无奈。
为了证明自己,也为了不让赵胖子有意无意地来挖苦自己。张大胖向领导姚无发毛遂自荐,担任起了在线考试实时拍照系统模块的开发。领导姚无发把这一切都看在眼里,心里却开心的不得了。
“不管是这赵胖子厉害,还是那张胖子更胜一筹,这样的竞争对于公司而言,都是一件好事。更何况,最终的功劳还不都是我老姚滴嘛,嘿嘿嘿…”
虽然张大胖把这个活给接了下来,但是具体要怎么做,却还是毫无头绪,这让张大胖很是苦恼,乃至于平日里要吃4个馒头,3碗米饭的他连一碗汤都喝不下了。或许这倒是一件好事,最起码体重不是个问题了。
苦恼规苦恼,生活还得继续不是。张大胖左思右想,没想到这充满油脂的大脑袋还真想出了一个好点子。实时拍照,其实分开来讲就是调用客户端的摄像头,然后再视频流中抓几张图片嘛,图片有了,用下人脸识别与检测,这不就成了吗。哈哈哈哈哈哈哈哈哈,想到这里。张大胖的嘴角不禁也向上弯了几分。
然而,思路是有了。到底怎么做咧。张大胖突然想到,隔壁赵胖子总是喜欢科学上网,那里也许会有答案。于是张大胖熟练地打开自己的浏览器,找到了传说中的谷哥。谷哥可是一个好老师,来者不拒,解疑答惑,公平公正,童叟无欺。张大胖根据谷哥给出的解决方案,开始了自己的编码之路。
“好多轮子啊”,张大胖盯着自己的浏览器,不禁长叹一声。于是找到了下面的“直播”代码。
function show() {
var promisifiedOldGUM = function(constraints) {
// 第一个拿到getUserMedia,如果存在 var getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia); // 有些浏览器只是不实现它-返回一个不被拒绝的承诺与一个错误保持一致的接口 if (!getUserMedia) { return Promise.reject(new Error('getUserMedia is not implemented in this browser-getUserMedia是不是在这个浏览器实现')); } // 否则,调用包在一个旧navigator.getusermedia承诺 return new Promise(function(resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject); }); } // 旧的浏览器可能无法实现mediadevices可言,所以我们设置一个空的对象第一 if (navigator.mediaDevices === undefined) { navigator.mediaDevices = {}; } // 一些浏览器部分实现mediadevices。我们不能只指定一个对象 // 随着它将覆盖现有的性能getUserMedia。. // 在这里,我们就要错过添加getUserMedia财产。. if (navigator.mediaDevices.getUserMedia === undefined) { navigator.mediaDevices.getUserMedia = promisifiedOldGUM; } // Prefer camera resolution nearest to 1280x720.