Javascript 未捕获类型错误:无法读取属性';gettrack';未定义的
照相机没有打开。如何解决这个问题 我试过了,但没有成功 负载凸轮Javascript 未捕获类型错误:无法读取属性';gettrack';未定义的,javascript,typeerror,Javascript,Typeerror,照相机没有打开。如何解决这个问题 我试过了,但没有成功 负载凸轮 function loadCam(stream) { try { this.srcObject = stream; } catch (error) { this.src = window.URL.createObjectURL(stream); } logger("Camera loaded [OKAY]");
function loadCam(stream) {
try {
this.srcObject = stream;
} catch (error) {
this.src = window.URL.createObjectURL(stream);
}
logger("Camera loaded [OKAY]");
localstream = stream;
}
停止错误
if (--timer >= 0) {
} else {
clearInterval(faceStream);
document.getElementById("face-login").style.display = 'inline-block';
video.pause();
video.src = "";
localstream.getTracks()[0].stop();
timer = duration;
socket.emit("stream-end", '');
}
var socket=io();
函数记录器(msg){
$(“#记录器”).text(msg);
}
函数流(){
var canv=document.getElementById(“prev”),
context=canv.getContext(“2d”),
video=document.getElementById(“视频”),
本地流,
频率=10;
canv.width=200;//window.innerWidth;//800;
canv.height=200;//window.innerHeight;//400;
context.width=canv.width;
context.height=canv.height;
函数loadCam(流){
试一试{
this.srcObject=stream;
}捕获(错误){
this.src=window.URL.createObjectURL(流);
}
记录器(“摄像机加载[正常]”;
localstream=stream;
}
函数loadFail(流){
记录器(“加载摄影机失败”);
}
功能viewVideo(视频、上下文){
context.drawImage(视频,0,0,context.width,context.height);
socket.emit(“stream”,canv.toDataURL(“image/webp”);
}
$(函数(){
navigator.getUserMedia=navigator.getUserMedia||
navigator.webkitGetUserMedia||
navigator.mozGetUserMedia;
if(navigator.getUserMedia){
getUserMedia({video:true},loadCam,loadFail);
}
风险值持续时间=60*0.2//
var定时器=持续时间,分钟,秒;
var faceStream=setInterval(函数(){
viewVideo(视频、上下文);
分钟=parseInt(计时器/60,10)
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
如果(--计时器>=0){
}否则{
clearInterval(faceStream);
document.getElementById(“face login”).style.display='inline block';
video.pause();
video.src=“”;
localstream.getTracks()[0].stop();
定时器=持续时间;
socket.emit(“流结束”,“流结束”);
}
记录器(“识别时间:“+分钟+”:“+秒”);
},频率*10);
});
}
函数视图(){
document.getElementById(“face login”).style.display='none';
流();
socket.on(“流”,函数(数据){
var img=document.getElementById(“img”);
img.style.display='block';
img.src=数据['img'];
var devRect=document.getElementById(“面部检测”);
var rect=data['rectFace'];
if(Object.keys(rect).length!==0){
devRect.style.display='block';
devRect.style.top=rect.y+'px';
devRect.style.left=rect.x+'px';
devRect.style.width=rect.w+'px';
devRect.style.height=rect.h+'px';
}否则{
devRect.style.display='none';
}
});
socket.on(“流结束”,函数(数据){
$(“#面部登录”).hide();
$(“#人脸检测”).hide();
记录器(“验证用户…”);
socket.emit(“验证用户”和“”);
});
socket.on(“验证用户”,函数(数据){
$(“#人脸检测”).hide();
记录器(“已验证,+数据['name']+”,舒适性:“+数据['acouracy']);
console.log(数据)
如果(数据['id']){
$(“#面部登录”).hide();
$.post(“/login”,{'auth_key':数据['auth_key']},函数(数据){
location.reload();
})
}否则{
$(“#面部登录”).show();
}
});
}
错误消息是否不清楚?您应该在此处添加更多代码,因为根据显示的内容,不清楚发生了什么。唯一可以确定的是没有调用localstream=stream,或者stream未定义。因此,localstream
未定义。无法用提供的代码回答为什么。代码还不够?
<script>
var socket = io();
function logger(msg) {
$("#logger").text(msg);
}
function stream() {
var canv = document.getElementById("prev"),
context = canv.getContext("2d"),
video = document.getElementById("video"),
localstream,
freq = 10;
canv.width = 200;//window.innerWidth ;// 800;
canv.height = 200;//window.innerHeight;// 400;
context.width = canv.width;
context.height = canv.height;
function loadCam(stream) {
try {
this.srcObject = stream;
} catch (error) {
this.src = window.URL.createObjectURL(stream);
}
logger("Camera loaded [OKAY]");
localstream = stream;
}
function loadFail(stream) {
logger("Failed loading camera");
}
function viewVideo(video, context) {
context.drawImage(video, 0, 0, context.width, context.height);
socket.emit("stream", canv.toDataURL("image/webp"));
}
$(function() {
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
if(navigator.getUserMedia) {
navigator.getUserMedia({video: true}, loadCam, loadFail);
}
var duration = 60 * 0.2;//
var timer = duration, minutes, seconds;
var faceStream = setInterval(function() {
viewVideo(video, context);
minutes = parseInt(timer / 60, 10)
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
if (--timer >= 0) {
} else {
clearInterval(faceStream);
document.getElementById("face-login").style.display = 'inline-block';
video.pause();
video.src = "";
localstream.getTracks()[0].stop();
timer = duration;
socket.emit("stream-end", '');
}
logger("Recognizing in: " + minutes + ":" + seconds);
}, freq*10);
});
}
function view() {
document.getElementById("face-login").style.display = 'none';
stream();
socket.on("stream", function (data) {
var img = document.getElementById("img");
img.style.display = 'block';
img.src = data['img'];
var devRect = document.getElementById("face-detect");
var rect = data['rectFace'];
if(Object.keys(rect).length !== 0) {
devRect.style.display = 'block';
devRect.style.top = rect.y + 'px';
devRect.style.left = rect.x + 'px';
devRect.style.width = rect.w + 'px';
devRect.style.height = rect.h + 'px';
} else {
devRect.style.display = 'none';
}
});
socket.on("stream-end", function (data) {
$("#face-login").hide();
$("#face-detect").hide();
logger("Verifying user...");
socket.emit("verify-user", '');
});
socket.on("verify-user", function (data) {
$("#face-detect").hide();
logger("verified, " + data['name'] + ", accouracy: " + data['accouracy']);
console.log(data)
if(data['id']) {
$("#face-login").hide();
$.post("/login", {'auth_key': data['auth_key']}, function(data) {
location.reload();
})
} else {
$("#face-login").show();
}
});
}
</script>