【问题标题】:Twilio video tracks differentiationTwilio 视频轨道差异化
【发布时间】:2019-10-03 12:46:48
【问题描述】:

在我的应用程序中,我有一个用户同时使用两个视频轨道(屏幕共享和网络摄像头)。用户连接时首先启动网络摄像头,然后添加屏幕共享轨道。

在本次会议的混乱中,我需要能够启用用户相机切换。我在这里使用本指南来实现此功能:https://www.twilio.com/blog/2018/06/switching-cameras-twilio-video-chat.html

但是当我做这样的事情时:

const tracks = Array.from(localParticipant.videoTracks.values());
localParticipant.unpublishTracks(tracks);
localParticipant.publishTrack(localVideoTrack);

我取消发布两个视频轨道(屏幕共享和摄像头),只添加一个摄像头轨道。有没有办法向轨道添加一个属性(“种类”除外),这将使我能够做出这种区分? 因为现在我能做到的唯一方法是跟踪用户是否启用了屏幕共享并在这种情况下重新连接两个轨道。

【问题讨论】:

    标签: twilio twilio-api


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    Twilio Video 中的所有 Tracks 都有一个 name 属性,默认情况下是轨道 ID。不过createpublish it时可以设置轨道的name

    例如:

    localParticipant.publishTrack(localVideoTrack, { name: "camera" }
    

    您可以稍后从LocalTrackRemoteTrack 对象中读取名称。

    如果有帮助,请告诉我。

    【讨论】:

    • 在做localParticipant.publishTrack(localVideoTrack, { name: 'camera' })名字后仍然是随机生成的数字,视频和音频轨道都这样做
    • 唯一有效的是createLocalVideoTrack({ deviceId: myID, name: 'camera' })
    • 但是,当用户切换相机并一个接一个地执行 unpublishTrack() - publishTrack() 时,用相同的名称命名视频输入给我带来了一个问题,这造成了 Track name is duplicatederror。并且由于 unpublishTrack() 不返回一个素数,所以没有办法等待它
    • 也许你可以用“camera”开头的名字,然后用设备的名字作为后缀(你可以用mediaDevices.enumerateDevices()得到设备的名字)?
    • 我最终添加了一个随机字符串,因为如果我在我的应用程序中使用设备 ID,用户仍然可以生成此错误(从下拉列表中选择相同的相机将触发此操作)
    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多