我是使用angular6的webrtc的新手。当我研究WebRTC API并构建一个简单页面以在本地测试中显示/停止网络摄像头流时。我在开发中收到错误消息。有我的开发环境:
Angular 6.1.0
Angular-cli 6.1.2
打字稿2.9.2
我构建“停止”按钮以执行功能stopBtn()。但是打字稿编译器会在构建应用程序时抛出错误消息:
错误TS2339:类型'MediaStream |类型中不存在属性'getTracks' Blob | MediaSource”。属性“ getTracks”在类型“ Blob”上不存在。
stopBtn()函数代码:
private video: HTMLVideoElement;
.......
ngOnInit() {
this.video = <HTMLVideoElement>this.el.nativeElement.querySelector('#video');
}
........
getDevice() {.....}
getStream() {.....}
gotStream() {.....}
.......
stopBtn() {
if (this.video.srcObject) {
this.video.srcObject.getTracks().forEach( stream => stream.stop());
this.video.srcObject = null;
}
}
html简单代码:
<video id="video" autoplay></video>
<button id="stopbtn" type="button" (click)="stopBtn()">Stop</button>
此页面可以正确显示流。
我通过stackoverflow或google搜索了许多关键字来查找此错误消息。但是没有得到任何好的答案。因此,希望有人可以为我解决。谢谢。
答案 0 :(得分:0)
TypeScript认为this.video.srcObject
可以是MediaStream
,Blob
或MediaSource
,只有MediaStream
有getTracks
方法,因此TypeScript警告您this.video.srcObject
可能没有getTracks
方法。如果您知道this.video.srcObject
实际上是MediaStream
,请使用类型断言:
(<MediaStream>this.video.srcObject).getTracks().forEach( stream => stream.stop());