有没有办法检测参与者何时在 opentok.js 中将他们的音频静音?

Is there a way to detect when a participant has muted their audio in opentok.js?

我浏览了具有方法 publishVideo(value)publishAudio(value) 的发布者文档。 对应于视频部分,订阅者收到事件 videoDisabledvideoEnabled,原因是 publishVideo 这让我可以确定订阅的参与者是否有意关闭他们的视频,但我找不到类似音频的内容,例如 audioDisabledaudioEnabledaudioBlocked 事件应该只覆盖浏览器自动播放策略的块:Dispatched when the subscriber's audio is blocked because of the browser's autoplay policy.

audioLevelUpdated 事件提供了当前的音频电平,但这可能只是静音,而不是有意静音,因此看起来不适合此目的。

我想在订阅的参与者通过调用 publishAudio() 方法有意关闭音频时在订阅的参与者元素上显示音频静音图标。如何实现?

参考文档:

订阅者事件:https://tokbox.com/developer/sdks/js/reference/Subscriber.html#events

发布者方法:https://tokbox.com/developer/sdks/js/reference/Publisher.html#methods

您是否尝试过 audioLevelUpdated 并检查音频电平

如果级别为 0,则其静音。

https://tokbox.com/developer/sdks/js/reference/Subscriber.html#getAudioVolume

所以步骤是收听 audioLevelUpdated 并检查 AudioVolume,音频音量应该得到你的订阅者级别点。

每个流都有一个 hasAudio 属性,如果用户的音频被静音或他们的麦克风被静音,则该属性 returns 为 false。同样,流也有一个 hasVideo 属性。您可以在 https://tokbox.com/developer/sdks/js/reference/Stream.html.

参考流文档

我个人是这样使用的:

session.streams.forEach((stream) => {
    const name = stream.name;
    const video = stream.hasVideo;
    const audio = stream.hasAudio;
});

您可以使用 session.on('streamPropertyChanged') 事件监听这些变化:https://tokbox.com/developer/sdks/js/reference/StreamPropertyChangedEvent.html