【问题标题】:render video tracks of existing participants渲染现有参与者的视频轨道
【发布时间】:2017-07-03 13:27:45
【问题描述】:

所以我连接到一个房间,该房间可能已经有现有参与者分享他们的视频。但是,当我尝试遍历所有参与者并添加他们各自的视频时......它不起作用。出于某种原因,即使参与者数量不是 0。 如何获取房间内所有现有参与者的视频轨道并进行渲染?

所以基本上这是工作流程:

  1. 用户 1 和 2 进入房间并分享他们的视频
  2. 用户 3 进入房间,想要在屏幕上显示现有参与者的视频(例如,在他之前登录的用户 1 和 2) 我怎么做? )

这是我的 didConnect() 委托的代码,当一个人进入房间时触发。addVideoTrack 函数为任何新参与者呈现视频,所以它工作正常,但我想为以前存在的参与者做。

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

【问题讨论】:

  • 再次解释

标签: swift xcode twilio twilio-api


【解决方案1】:

这里是 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
    }
}

然后,该示例实现 TVIParticipantDelegate participant: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.

让我知道这是否有帮助。

【讨论】:

    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多