2017-07-03 2 views
0

So verbinde ich mich mit einem Raum, der möglicherweise bereits vorhandene Teilnehmer ihre Videos teilen. Wenn ich jedoch versuche, alle Teilnehmer zu durchlaufen und ihre jeweiligen Videos hinzuzufügen, funktioniert das nicht. Aus irgendeinem Grund, obwohl die Anzahl der Teilnehmer nicht 0 ist. Wie bekomme ich die Videospuren aller vorhandenen Teilnehmer in einem Raum und render sie?render video tracks von bestehenden Teilnehmern

Also im Grunde ist dies der Workflow:

  1. Benutzer 1 und 2 Raum betreten und teilen ihre Videos
  2. User 3 betreten Raum, und wollen das Video der bestehenden Teilnehmer auf dem Bildschirm (zB Benutzer zeigen, 1 und 2, die sich vor ihm angemeldet haben) Wie mache ich das?
  3. ) ist

Hier ist mein Code für die didConnect() Delegierte, die ausgelöst wird, wenn man eine Parke betritt macht addVideoTrack Funktion das Video für neue Teilnehmer, so seine Arbeit gut, aber ich will es tun für bereits vorhandene Teilnehmer.

func didConnect(to room: TVIRoom) { 
    connectedParticipants = room.participants 
    for participant in connectedParticipants { 

     for videoTrack in participant.videoTracks { 
      addVideoTrack(videoTrack:videoTrack) 
     } 

    } 

    changeRoomLabel(messageText: "Room: \(room.name)") 
} 
+0

erneut erläutert – CodeMaker

Antwort

0

Twilio Entwickler Evangelist hier.

Wenn Sie sich mit dem Raum verbinden und die Teilnehmer finden, haben Sie möglicherweise noch keine Verbindung zu ihren Medienströmen hergestellt. Stattdessen sollten Sie die TVIParticipantDelegate implementieren. Wie Sie in der Twilio Video quickstart application (die Griffe nur einen externen Teilnehmer, sondern ist ein gutes Beispiel) sehen können, wenn sie an einen Raum verbinden stellen Sie den Controller als Delegierter des Teilnehmers:

func didConnect(to room: TVIRoom) { 
    if (room.participants.count > 0) { 
     self.participant = room.participants[0] 
     self.participant?.delegate = self 
    } 
} 

Dann führt das Beispiel der TVIParticipantDelegateparticipant:addedVideoTrack zu macht das Video, sobald es den Teilnehmer hinzugefügt wird:

extension ViewController : TVIParticipantDelegate { 
    func participant(_ participant: TVIParticipant, addedVideoTrack videoTrack: TVIVideoTrack) { 
     logMessage(messageText: "Participant \(participant.identity) added video track") 

     if (self.participant == participant) { 
      setupRemoteVideoView() 
      videoTrack.addRenderer(self.remoteView!) 
     } 
    } 
} 

And the other delegate methods here.

Lassen Sie mich wissen, ob das überhaupt hilft.

Verwandte Themen