由于最近宣布 twilio 可编程视频功能停产。作为迁移计划的一部分,我们正在评估 Zoom video-sdk。
我们陷入了这样一个境地:在 Zoom video-sdk 中,我们无法同时共享两个以上的用户流(一个作为视频流,一个作为屏幕共享)。 在我们的用例中,用户可以连接多个屏幕+视频输入设备,我们应该能够同时识别和共享所有这些屏幕和视频流。
此用例在 twilio 中是可能的,因为它们允许同时共享多个、2 个或更多本地轨道(视频 + 屏幕流)。
// TwilioCode snippet - takes arary of local tracks as input
Twilio.Video.connect(token, {tracks: [{video1}, {video2}, ...]})
但是,使用 Zoom SDK,当我们尝试自定义此 zoom-websample 项目 时,我们发现在缩放时只有一个媒体流对象。不允许多个视频+屏幕共享流
// zoom video-sdk code snippet
client = ZoomVideo.createClient();
client.init()
await client.join(token, {topic, userName, signature})
stream = client.getMediaStream()
// I cannot do more than one startScreenShare or startVideo on this stream instance
stream.startShareScreen()
有谁知道我们是否可以在 Zoom video-sdk 中从单个用户实现多流?
我们确实尝试了一些解决方案,例如让一些虚拟用户加入每个设备的缩放通话主题。但是,sdk 似乎没有跟踪第一个成功加入请求后的
client.join
目前,使用网络版 Zoom Video SDK,您最多可以为每个用户发送 2 个视频流。第一个通过通过视频通道发送:
let cameras = stream.getCameraList()
if(stream.isRenderSelfViewWithVideoElement()) {
await stream.startVideo({ videoElement: document.querySelector('#my-self-view-video'), cameraId: cameras[0].deviceId })
// video 1 successfully started and rendered
} else {
await stream.startVideo({ cameraId: cameras[0].deviceId })
await stream.renderVideo(document.querySelector('#my-self-view-canvas'), client.getCurrentUserInfo().userId, 1920, 1080, 0, 0, 3)
// video 1 successfully started and rendered
}
通过屏幕共享通道发送:为远程用户呈现视频流。
let cameras = stream.getCameraList()
if(stream.isStartShareScreenWithVideoElement()) {
await stream.startShareScreen(document.querySelector('#my-second-camera-video'), { secondaryCameraId: cameras[1].deviceId })
// video 2 successfully started and rendered
} else {
await stream.startShareScreen(document.querySelector('#my-second-camera-canvas'), { secondaryCameraId: cameras[1].deviceId })
// video 2 successfully started and rendered
}
对于每个用户发送超过 2 个视频流,或发送超过 1 个具有实际屏幕共享的视频流,我们很乐意了解有关您的用例的更多信息,并了解我们如何最好地支持它。请随意将讨论移至为远程用户呈现屏幕共享流。
Zoom 开发论坛。