Real time streaming by using IVS Stage

0

In the context of our server side composition for broadcasting stage to an IVS channel, how can we display the participant's name when they choose to hide their camera?

Ramesh
已提問 6 個月前檢視次數 186 次
1 個回答
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;
}
profile picture
已回答 5 個月前
  • Thank you sir

  • Anytime! Glad to help.

  • I have also shared a request for a more programatic solution to this problem.

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南