|
@@ -6,17 +6,17 @@
|
|
|
<span>{{media.duration|useTime}}</span>
|
|
|
</h2>
|
|
|
<el-row style="width: 900px;">
|
|
|
- <el-col :span="8" style="width: 250px;">
|
|
|
- <video ref="video" v-show="isnotbtn" width="240" height="180" autoplay></video>
|
|
|
- <canvas ref="canvas" v-show="ontakebtn" width="240" height="180"></canvas>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="8" style="width: 250px;">
|
|
|
+ <video ref="video" v-show="isnotbtn" width="240" height="180" autoplay></video>
|
|
|
+ <canvas ref="canvas" v-show="ontakebtn" width="240" height="180"></canvas>
|
|
|
+ </el-col>
|
|
|
|
|
|
- <el-col :span="16" style="width: 640px;">
|
|
|
- <video-player id="myVideo" class="video-player-box" ref="videoPlayer" :playsinline="true" @pause="onPlayerPause($event)"
|
|
|
- @play="onPlayerStart($event)" @ready="playerReadied" @timeupdate="onPlayerTimeupdate($event)" @ended="onPlayerEnded($event)"
|
|
|
- :globalOptions="{controls:true}" :options="options">
|
|
|
- </video-player>
|
|
|
- </el-col>
|
|
|
+ <el-col :span="16" style="width: 640px;">
|
|
|
+ <video-player id="myVideo" class="video-player-box" ref="videoPlayer" :playsinline="true" @pause="onPlayerPause($event)"
|
|
|
+ @play="onPlayerStart($event)" @ready="playerReadied" @timeupdate="onPlayerTimeupdate($event)" @ended="onPlayerEnded($event)"
|
|
|
+ :globalOptions="{controls:true}" :options="options">
|
|
|
+ </video-player>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
|
|
|
</div>
|
|
@@ -46,7 +46,7 @@
|
|
|
isnotbtn: false,
|
|
|
ontakebtn: false,
|
|
|
curTimes: 0,
|
|
|
- errMsg:'',
|
|
|
+ errMsg: '',
|
|
|
errCount: 0,
|
|
|
onPlay: false
|
|
|
}
|
|
@@ -101,9 +101,10 @@
|
|
|
return this.$refs.videoPlayer.player
|
|
|
}
|
|
|
},
|
|
|
- destroyed(){
|
|
|
- this.closeCamera()
|
|
|
- },
|
|
|
+ beforeDestroy() {
|
|
|
+ this.destroyTimer()
|
|
|
+ this.closeCamera()
|
|
|
+ },
|
|
|
created() {
|
|
|
this.startTick()
|
|
|
this.startMonitor();
|
|
@@ -118,22 +119,28 @@
|
|
|
let imgBase64 = this.$refs["canvas"].toDataURL("image/jpeg", 1); // 由字节转换为KB 判断大小
|
|
|
this.ontakebtn = false
|
|
|
let str = imgBase64.replace("data:image/jpeg;base64,", "");
|
|
|
- let param ={id:this.media.id, image: str}
|
|
|
+ let param = {
|
|
|
+ id: this.media.id,
|
|
|
+ image: str
|
|
|
+ }
|
|
|
httpServer("course.collect", param).then(res => {
|
|
|
- let {msg, pause} = res.data
|
|
|
- if ( msg ) this.$message.errorMsg(msg, 10);
|
|
|
- this.errMsg = msg||'';
|
|
|
- if( msg ){
|
|
|
- this.errCount ++
|
|
|
- }else{
|
|
|
- this.errCount = 0;
|
|
|
- }
|
|
|
- if( this.errCount >=2){
|
|
|
- this.doPause();
|
|
|
- }
|
|
|
+ let {
|
|
|
+ msg,
|
|
|
+ pause
|
|
|
+ } = res.data
|
|
|
+ if (msg) this.$message.errorMsg(msg, 10);
|
|
|
+ this.errMsg = msg || '';
|
|
|
+ if (msg) {
|
|
|
+ this.errCount++
|
|
|
+ } else {
|
|
|
+ this.errCount = 0;
|
|
|
+ }
|
|
|
+ if (this.errCount >= 2) {
|
|
|
+ this.doPause();
|
|
|
+ }
|
|
|
})
|
|
|
},
|
|
|
- destroyTimer(){
|
|
|
+ destroyTimer() {
|
|
|
if (this.timer) clearInterval(this.timer);
|
|
|
},
|
|
|
callCamera() {
|
|
@@ -143,7 +150,7 @@
|
|
|
video: true,
|
|
|
})
|
|
|
.then((success) => {
|
|
|
- this.isnotbtn=true
|
|
|
+ this.isnotbtn = true
|
|
|
// 摄像头开启成功
|
|
|
this.$refs["video"].srcObject = success;
|
|
|
// 实时拍照效果
|
|
@@ -153,12 +160,13 @@
|
|
|
this.$message.error(
|
|
|
"摄像头开启失败,请检查摄像头是否可用!或者打开摄影头"
|
|
|
);
|
|
|
- this.isnotbtn=false
|
|
|
+ this.isnotbtn = false
|
|
|
console.error("摄像头开启失败,请检查摄像头是否可用!");
|
|
|
});
|
|
|
},
|
|
|
closeCamera() {
|
|
|
- if( !this.$refs["video"] ) return;
|
|
|
+ console.log("closeCamera")
|
|
|
+ if (!this.$refs["video"]) return;
|
|
|
if (!this.$refs["video"].srcObject) return;
|
|
|
let stream = this.$refs["video"].srcObject;
|
|
|
let tracks = stream.getTracks();
|
|
@@ -166,7 +174,7 @@
|
|
|
track.stop();
|
|
|
});
|
|
|
this.$refs["video"].srcObject = null;
|
|
|
- this.isnotbtn=false
|
|
|
+ this.isnotbtn = false
|
|
|
},
|
|
|
startTick() {
|
|
|
let tick = this.tryTick;
|
|
@@ -284,25 +292,25 @@
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if( !this.isnotbtn && this.onPlay ){
|
|
|
+ if (!this.isnotbtn && this.onPlay) {
|
|
|
this.$message.errorMsg("需要安装摄像头才能学习", 2);
|
|
|
this.doPause()
|
|
|
return;
|
|
|
}
|
|
|
- if( this.errCount > 3 ){
|
|
|
+ if (this.errCount > 3) {
|
|
|
this.$message.errorMsg("人脸不在摄像头上", 5);
|
|
|
this.destroyTimer()
|
|
|
this.$emit("close");
|
|
|
return;
|
|
|
}
|
|
|
// 异常 10秒检查
|
|
|
- if ( this.errCount > 0 && this.tickNum % 20 == 3){
|
|
|
- this.photograph()
|
|
|
- }else if ( this.tickNum % 60 == 1){
|
|
|
+ if (this.errCount > 0 && this.tickNum % 20 == 3) {
|
|
|
+ this.photograph()
|
|
|
+ } else if (this.tickNum % 60 == 1) {
|
|
|
this.photograph()
|
|
|
}
|
|
|
// 每5秒一次心跳
|
|
|
- if( this.tickNum % 5 != 0){
|
|
|
+ if (this.tickNum % 5 != 0) {
|
|
|
return;
|
|
|
}
|
|
|
// 主动暂停
|