首页 > 解决方案 > 当我分离轨道时,twilio 视频代码留下了视频标签

问题描述

所以我有点困惑。

这样做的方式是,我的视频通话中的每个人在加入时都已经在 ui 中有空间。当他们打开视频时,代码会将他们的曲目附加到 ui 上各自的 div 空间。

为了清楚起见,这里是开始视频代码。它与这个问题无关,但有利于上下文。

startvideo(){
    navigator.mediaDevices.getUserMedia({video: true}).then((stream)=>{
      createLocalVideoTrack({
        deviceId: stream.id
      }).then(localVideoTrack =>{
        return this.videoclient.localParticipant.publishTrack((localVideoTrack)).then(publication =>{
          this.localvideotrack = localVideoTrack;
          let div = document.getElementById( this.videoclient.localParticipant.sid + 'vid');
          div.appendChild(localVideoTrack.attach());
          this.removenovideohtml(this.videoclient.localParticipant.sid);
          this.mms.getDevicesOnComputer();
          this.devicessubscription = this.mms.receiveDevices()
            .subscribe(
              (req: any)=>{
                this.devicesoptions = req;
              }
            );
        });
      });
    });
  }

这是结束视频代码,这是在上下文中:

endvideo(){
    if(this.localvideotrack != null){
      let div = document.getElementById( this.videoclient.localParticipant.sid + 'vid');
      this.localvideotrack.detach(div);
      this.localvideotrack.stop();
      this.videoclient.localParticipant.unpublishTrack(this.localvideotrack);
      this.addremovevideohtml(this.videoclient.localParticipant.sid);
    }
  }

现在看看当我开始和停止视频 3 次时会发生什么

2 个空白聊天框,当只有视频时

以及上图的html

html

我试图添加代码,然后在分离后手动删除视频元素,track但我没有成功。想知道你们是否可以帮助我。谢谢你。

标签: javascripthtmltypescripttwiliotwilio-video

解决方案


Twilio 开发人员布道者在这里。

detach方法实际上返回轨道先前附加到的媒体元素,如果您不再需要该媒体元素,则可以将其从页面中删除。

您不需要传递divdetach任何一个,视频轨道知道它附加到的元素。这意味着您也不需要进行getElementById查找。

我建议您将endvideo功能更新为以下内容:

endvideo(){
    if(this.localvideotrack != null){
      const mediaElements = this.localvideotrack.detach();
      mediaElements.forEach(mediaElement => mediaElement.remove());
      this.localvideotrack.stop();
      this.videoclient.localParticipant.unpublishTrack(this.localvideotrack);
      this.addremovevideohtml(this.videoclient.localParticipant.sid);
    }
}

推荐阅读