openvidu-components: Fixed bug replacing the screen track

pull/707/head
csantosm 2022-02-23 17:10:11 +01:00
parent 948a64c551
commit ad06e2239b
1 changed files with 10 additions and 6 deletions

View File

@ -153,6 +153,7 @@ export class OpenViduService {
if (hasVideoDevices || hasAudioDevices) {
const publisher = await this.initPublisher(targetElement, properties);
this.participantService.setMyCameraPublisher(publisher);
this.participantService.updateParticipantMediaStatus();
return publisher;
} else {
this.participantService.setMyCameraPublisher(null);
@ -298,7 +299,6 @@ export class OpenViduService {
// Replace video track
const videoTrack: MediaStreamTrack = mediaStream.getVideoTracks()[0];
await this.participantService.getMyCameraPublisher().replaceTrack(videoTrack);
} else if (isReplacingAudio) {
if (isFirefoxPlatform) {
// Firefox throw an exception trying to get a new MediaStreamTrack if the older one is not stopped
@ -311,17 +311,21 @@ export class OpenViduService {
await this.participantService.getMyCameraPublisher().replaceTrack(audioTrack);
}
} else if (videoType === VideoType.SCREEN) {
const newScreenMediaStream = await this.OVScreen.getUserMedia(props);
// this.stopTracks(this.screenMediaStream);
// this.screenMediaStream = newScreenMediaStream;
let newScreenMediaStream;
try {
newScreenMediaStream = await this.OVScreen.getUserMedia(props);
this.participantService.getMyScreenPublisher().stream.getMediaStream().getVideoTracks()[0].stop();
await this.participantService.getMyScreenPublisher().replaceTrack(newScreenMediaStream.getVideoTracks()[0]);
} catch (error) {
this.log.w('Cannot create the new MediaStream', error);
}
}
} catch (error) {
this.log.e('Error replacing track ', error);
}
}
private async createMediaStream(pp: PublisherProperties): Promise<MediaStream>{
private async createMediaStream(pp: PublisherProperties): Promise<MediaStream> {
let mediaStream: MediaStream;
const isFirefoxPlatform = this.platformService.isFirefox();
const isReplacingAudio = !!pp.audioSource;