gpt4 book ai didi

swift - 渲染现有参与者的视频轨道

转载 作者:行者123 更新时间:2023-11-30 12:20:10 25 4
gpt4 key购买 nike

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

基本上这就是工作流程:

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

这是我的 didConnect() 委托(delegate)代码,该代码在进入房间时触发。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)")
}

最佳答案

这里是 Twilio 开发者布道者。

当您连接到房间并找到参与者时,您可能尚未连接到他们的媒体流。相反,您应该实现 TVIParticipantDelegate。正如您在 Twilio Video quickstart application 中看到的那样(它只处理一个外部参与者,但这是一个很好的例子),当连接到房间时,将 Controller 设置为参与者的委托(delegate):

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 .

请告诉我这是否有帮助。

关于swift - 渲染现有参与者的视频轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44886830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com