2022-02-07 15:40:05 +01:00
|
|
|
import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';
|
2022-01-19 17:24:11 +01:00
|
|
|
import { StreamManager } from 'openvidu-browser';
|
|
|
|
import { VideoType } from '../../models/video-type.model';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'ov-video',
|
|
|
|
template: `
|
2022-02-07 15:40:05 +01:00
|
|
|
<img
|
|
|
|
*ngIf="!_streamManager?.stream?.videoActive && (type === 'CAMERA' || !type)"
|
|
|
|
class="poster_img"
|
|
|
|
alt="OpenVidu Logo"
|
|
|
|
src="assets/images/poster.png"
|
|
|
|
/>
|
2022-01-19 17:24:11 +01:00
|
|
|
<video
|
2022-02-24 10:21:58 +01:00
|
|
|
class="OT_video-element"
|
2022-01-19 17:24:11 +01:00
|
|
|
#videoElement
|
|
|
|
[attr.id]="streamManager && _streamManager.stream ? 'video-' + _streamManager.stream.streamId : 'video-undefined'"
|
|
|
|
[muted]="mutedSound"
|
|
|
|
></video>
|
|
|
|
`,
|
|
|
|
styleUrls: ['./video.component.css']
|
|
|
|
})
|
|
|
|
export class VideoComponent implements AfterViewInit {
|
|
|
|
@Input() mutedSound: boolean;
|
|
|
|
|
|
|
|
_streamManager: StreamManager;
|
|
|
|
|
|
|
|
_videoElement: ElementRef;
|
2022-01-26 11:14:15 +01:00
|
|
|
type: VideoType = VideoType.CAMERA;
|
2022-01-19 17:24:11 +01:00
|
|
|
|
|
|
|
ngAfterViewInit() {
|
|
|
|
setTimeout(() => {
|
|
|
|
if (this._streamManager && this._videoElement) {
|
|
|
|
this._streamManager.addVideoElement(this._videoElement.nativeElement);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
@ViewChild('videoElement')
|
|
|
|
set videoElement(element: ElementRef) {
|
|
|
|
this._videoElement = element;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Input()
|
|
|
|
set streamManager(streamManager: StreamManager) {
|
|
|
|
setTimeout(() => {
|
|
|
|
this._streamManager = streamManager;
|
|
|
|
if (!!this._videoElement && this._streamManager) {
|
2022-01-26 11:14:15 +01:00
|
|
|
this.type = <VideoType>this._streamManager?.stream?.typeOfVideo;
|
|
|
|
if (this.type === VideoType.SCREEN) {
|
2022-01-19 17:24:11 +01:00
|
|
|
this._videoElement.nativeElement.style.objectFit = 'contain';
|
2022-02-07 15:40:05 +01:00
|
|
|
// this._videoElement.nativeElement.style.background = '#272727';
|
2022-01-19 17:24:11 +01:00
|
|
|
} else {
|
|
|
|
this._videoElement.nativeElement.style.objectFit = 'cover';
|
|
|
|
}
|
|
|
|
this._streamManager.addVideoElement(this._videoElement.nativeElement);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|