1 réponse
- Le plus récent
- Le plus de votes
- La plupart des commentaires
1
One way to accomplish this is to create a separate LocalStageStream
and swap to that instead of calling setMuted
.
toggleCamMute() {
if (!this.isCamMuted) {
const canvas = document.createElement('canvas');
canvas.width = 1280;
canvas.height = 720;
const ctx = canvas.getContext("2d");
ctx.font = "30px Arial";
ctx.fillStyle = "white";
ctx.textAlign = "center";
ctx.fillText("Todd", canvas.width / 2, canvas.height / 2); // make text dynamic as necessary
const stream = canvas.captureStream();
this.mutedLocalVideoStream = new LocalStageStream(stream.getVideoTracks()[0]);
console.log(this.mutedLocalVideoStream);
}
else {
this.mutedLocalVideoStream = null;
}
//this.localVideoStream.setMuted(!this.isCamMuted); not necessary, we're swapping the source track instead
this.isCamMuted = !this.isCamMuted;
this.stage.refreshStrategy();
}
In your stage strategy, check for the isCamMuted
flag and swap the video stream accordingly.
stageStreamsToPublish: () => {
const videoTrack = this.videoStream.getVideoTracks()[0];
const audioTrack = this.audioStream.getAudioTracks()[0];
this.localAudioStream = new LocalStageStream(audioTrack);
this.localVideoStream = new LocalStageStream(videoTrack);
const streamsToPublish = [
this.localAudioStream,
this.isCamMuted ?
this.mutedLocalVideoStream : this.localVideoStream
];
return streamsToPublish;
}
répondu il y a 5 mois
Contenus pertinents
- demandé il y a un an
- demandé il y a 9 mois
- demandé il y a 2 mois
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a 4 mois
Thank you sir
Anytime! Glad to help.
I have also shared a request for a more programatic solution to this problem.