तो मैं थोड़ा भ्रमित हूँ।

जिस तरह से यह काम करता है, क्या मेरे वीडियो कॉल में शामिल प्रत्येक व्यक्ति के पास पहले से ही 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);
    }
  }

अब देखिए क्या होता है जब मैं वीडियो को तीन बार शुरू और बंद करता हूं

2 blank chat boxes when there should only be the video

और ऊपर चित्र का html

the html

मैंने track को अलग करने के बाद वीडियो तत्वों को मैन्युअल रूप से हटाने के लिए कोड जोड़ने का प्रयास किया है, लेकिन मुझे कोई सफलता नहीं मिली है। आश्चर्य है कि क्या आप लोग मेरी मदद कर सकते हैं। धन्यवाद।

3
Christopher Jakob 1 सितंबर 2021, 07:50

2 जवाब

सबसे बढ़िया उत्तर

यह आश्चर्यजनक और अभी तक वास्तव में दर्दनाक है कि इसे ठीक करना कितना आसान था।

यहाँ एंडवीडियो () कोड अपरिवर्तित है:

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);
    }

अब यहाँ नया एंडवीडियो () कोड है:

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

यह अंतर है:

div.innerHTML = '';
0
Christopher Jakob 1 सितंबर 2021, 08:18