1 Answer
- Newest
- Most votes
- Most comments
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;
}
answered 5 months ago
Relevant content
- asked 2 months ago
- asked 3 months ago
- asked 3 months ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated a month ago
- AWS OFFICIALUpdated 2 years ago
Thank you sir
Anytime! Glad to help.
I have also shared a request for a more programatic solution to this problem.