Я пытаюсь получить поток и отобразить его, используя drawImage, как это предлагается в некоторых руководствах для разработчиков Google.Я получаю сообщение об ошибке:
TypeError: Не удалось выполнить 'drawImage' для 'CanvasRenderingContext2D': предоставленное значение не относится к типу '(CSSImageValue или HTMLImageElement или SVGImageElement, или HTMLVideoElement, или HTMLCanvasElement, или ScreenBit, или ImageBit) '
После нескольких часов я все еще не могу понять, почему, поэтому я подумал, что обратиться за помощью.Мой код прикреплен ...
import {
Component,
OnInit,
ViewChild,
ElementRef
} from '@angular/core';
@Component({
selector: 'app-scanner',
templateUrl: './scanner.component.html',
styleUrls: ['./scanner.component.css']
})
export class ScannerComponent implements OnInit {
constructor() {}
@ViewChild('mycanvas') mycanvas: ElementRef;
@ViewChild('myvideo') myvideo: ElementRef;
ctx;
ngOnInit() {
this.drawOnCanvas();
}
drawOnCanvas() {
this.ctx = this.mycanvas.nativeElement.getContext('2d');
navigator.mediaDevices
.getUserMedia({
audio: false,
video: true
})
.then(stream => {
this.myvideo.nativeElement.srcObject = stream;
this.drawCanvas();
//this.myvideo.nativeElement.play();
});
}
drawCanvas() {
this.mycanvas.nativeElement.width = this.myvideo.nativeElement.clientWidth;
this.mycanvas.nativeElement.height = this.myvideo.nativeElement.clientHeight;
this.ctx.drawImage(
this.myvideo.nativeElement.srcObject,
0,
0,
this.mycanvas.nativeElement.width,
this.mycanvas.nativeElement.height
);
}
}
<div>
<canvas #mycanvas id="mycanvasid"></canvas>
<video #myvideo></video>
</div>