2017-07-03 55 views
0

因此,我連接到一個房間,該房間可能已經有現有參與者共享他們的視頻。但是,當我嘗試遍歷所有參與者並添加他們各自的視頻時...它不起作用。出於某種原因,即使參與者人數不是0. 如何獲取房間中所有現有參與者的視頻軌跡並渲染它們?呈現現有參與者的視頻軌跡

所以基本上是這樣的工作流程:

  1. 用戶1和2進入房間,並分享他們的影片
  2. 用戶3進入房間,並希望在屏幕上顯示現有參與者的視頻(例如用戶1和2在他之前登錄) 我該怎麼做? )

這裏是我的,當一個進入room.the addVideoTrack功能使得任何新的參與者的視頻,所以它的做工精細,其觸發的didConnect()委託代碼,但我想這樣做對以前存在參與者。

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

再次解釋 – CodeMaker

回答

0

Twilio開發人員傳道這裏。

當您連接到房間並找到參與者時,您可能尚未連接到他們的媒體流。相反,您應該實施TVIParticipantDelegate。正如你可以在Twilio Video quickstart application看到(只處理一個外部的參與者,但它是一個很好的例子),連接到一個房間時,該控制器設置爲參與者的委託:

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

然後,例如實現了TVIParticipantDelegateparticipant:addedVideoTrack到呈現視頻,一旦它被添加到參與者:

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

讓我知道這是否有幫助。