获取 Agora.io 语音讨论室中未发布流的用户列表
Posted
技术标签:
【中文标题】获取 Agora.io 语音讨论室中未发布流的用户列表【英文标题】:Get List of users in Agora.io voice discussion room who do not publish stream 【发布时间】:2019-01-18 06:59:55 【问题描述】:可以通过
获取streamID列表client = AgoraRTC.createClient(mode, codec);
client.on('stream-subscribed'
但只有在用户发布流时才可用
client.publish(localStream
[[[问题]]]
我想查看不发布流但加入房间的用户列表
client.join(null, 'room-name', 'user-id');
当用户加入房间时,用户可以听到流,而无需发布自己的 localStream。 因此,即使他们不发布流,我也想向所有观众展示。
为了节省带宽, 最好不要发布localStream,只订阅语音。 因此,即使他们不发布流,我也想识别所有用户
【问题讨论】:
您可以使用信号,并在加入房间时向用户发送信号 【参考方案1】:在现有代码中添加信号系统,以便在用户加入系统时向所有用户发送信号。如果需要更完美地实现,您可以跟踪用户流并进行列表。
【讨论】:
【参考方案2】:您应该使用peer-online
事件(在远程用户或主持人加入频道时发生。)
client.on('peer-online', function(evt)
console.log('peer-online', evt.uid);
);
查看 Agora.io 文档中 on
事件的完整列表:
https://docs.agora.io/en/Video/API%20Reference/web/interfaces/agorartc.client.html#on
更新
根据下面的 cmets,此方法仅适用于所有用户都具有广播角色的 communication
模式。在live
模式下,无法使用 Agora RTC SDK 获取用户,但您可以使用 Agora RTM SDK 统计频道中的用户。
Agora RTM SDK 允许您创建每个用户与实时视频广播一起加入的数据通道。 Agora RTM 允许您check the number of users in an RTM Channel before joining 或加入 RTM 频道后,您可以使用 MemberJoined
和 MemberLeft
Channel Events 收听新用户。
【讨论】:
"peer-online" 可以知道后来加入的peer,但是用户如何知道现有的peer? 所有client.on事件监听器应该在调用方法加入频道之前分配。一旦客户端加入频道,该事件将触发频道中的所有用户 'peer-online' for Audience 仅适用于“rtc”模式,不适用于“实时”模式。这是正确的行为吗?我正在考虑使用“直播”模式并想了解观众,但这不可能吗? "'peer-online'" 在少于 17 人的情况下触发。有限制吗? 非常感谢您的澄清,AgoraRTM 的getMembers 不代表AudioBroadcasting 的成员,而是消息传递的成员,AudioBroadcasting 的观众应该加入消息传递。对吗?【参考方案3】:定期 ping 所有可用的流可能有助于了解何时有人进入房间但未进行流式传输。
【讨论】:
您面临的具体问题是什么?编辑您的问题以询问您面临的具体问题,并尝试提供代码示例以便其他人可以提供帮助,谢谢。 这行不通,因为无法从 SDK 中“ping”所有频道。以上是关于获取 Agora.io 语音讨论室中未发布流的用户列表的主要内容,如果未能解决你的问题,请参考以下文章
如何获得频道中所有用户的“静音”状态? [agora.io]