|
@@ -9,6 +9,8 @@ import { baseUrlType } from "src/app/type/types";
|
9
|
9
|
import { ToolService } from 'src/app/services/tool.service';
|
10
|
10
|
import { Title } from '@angular/platform-browser';
|
11
|
11
|
import { MarkingService } from 'src/app/services/marking.service';
|
|
12
|
+
|
|
13
|
+declare var MediaRecorder: any;
|
12
|
14
|
@Component({
|
13
|
15
|
selector: "app-login",
|
14
|
16
|
templateUrl: "./login.component.html",
|
|
@@ -301,4 +303,35 @@ export class LoginComponent implements OnInit {
|
301
|
303
|
});
|
302
|
304
|
return parents;
|
303
|
305
|
}
|
|
306
|
+
|
|
307
|
+ // 录屏
|
|
308
|
+ isRecording:boolean = false;
|
|
309
|
+ async showScreen(e){
|
|
310
|
+ if(this.isRecording){
|
|
311
|
+ return;
|
|
312
|
+ }
|
|
313
|
+ this.isRecording = true;
|
|
314
|
+ e.preventDefault();
|
|
315
|
+ let stream = await (navigator.mediaDevices as any).getDisplayMedia({ video: true });
|
|
316
|
+ let mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9") ? "video/webm; codecs=vp9" : "video/webm";
|
|
317
|
+
|
|
318
|
+ let mediaRecorder = new MediaRecorder(stream, { mimeType: mime });
|
|
319
|
+ let chunks = [];
|
|
320
|
+ //录制
|
|
321
|
+ mediaRecorder.addEventListener('dataavailable', function (e) {
|
|
322
|
+ chunks.push(e.data)
|
|
323
|
+ })
|
|
324
|
+ //停止
|
|
325
|
+ mediaRecorder.addEventListener('stop', function () {
|
|
326
|
+ let blob = new Blob(chunks, { type: chunks[0].type });
|
|
327
|
+ let url = URL.createObjectURL(blob);
|
|
328
|
+ let a = document.createElement('a');
|
|
329
|
+ a.href = url;
|
|
330
|
+ a.download = 'video.webm';
|
|
331
|
+ a.click();
|
|
332
|
+ this.isRecording = false;
|
|
333
|
+ })
|
|
334
|
+ //手动启动
|
|
335
|
+ mediaRecorder.start()
|
|
336
|
+ }
|
304
|
337
|
}
|