有没有一种方法可以检测参与者何时在opentok.js中将其音频静音?

时间:2020-06-21 10:20:39

标签: opentok tokbox

我浏览了发布者文档,该文档具有方法publishVideo(value)publishAudio(value)。 对应于视频部分,订户收到事件videoDisabledvideoEnabled的原因publishVideo使我可以确定所订阅的参与者是否故意关闭了他们的视频,但是我找不到类似audioDisabledaudioEnabled的音频。据推测,audioBlocked事件仅涵盖浏览器自动播放策略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

2 个答案:

答案 0 :(得分:1)

您尝试过audioLevelUpdated并检查音频级别

如果级别为0,则静音。

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

因此,步骤是侦听audioLevelUpdated并检查AudioVolume,音频音量应为u订户级别点。

答案 1 :(得分:1)

每个流都有一个 hasAudio 属性,如果用户的音频被静音或他们的麦克风被静音,该属性将返回 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