MediaStreamTrack:unmute 事件

Baseline 已广泛支持

此功能非常成熟,并且在许多设备和浏览器版本中都能正常工作。它自 ⁨2018 年 3 月⁩ 起就已在浏览器中可用。

unmute 事件的 MediaStreamTrack 源在一段时间内无法提供媒体数据后,又能重新提供媒体数据时,会向该 MediaStreamTrack 发送此事件。

这标志着由 mute 事件开始的 muted 状态的结束。

注意:大多数人认为的“静音”状态(即用户可控的静音轨道方式)实际上是通过 MediaStreamTrack.enabled 属性来管理的,该属性没有相关的事件。

此事件不可取消,也不会冒泡。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("unmute", (event) => { })

onunmute = (event) => { }

事件类型

一个通用的 Event

示例

在此示例中,为 muteunmute 事件设置了事件处理程序,以便检测存储在变量 musicTrack 中的 MediaStreamTrack 的媒体是否停止从源流出。

js
musicTrack.addEventListener("mute", (event) => {
  const widget = document.getElementById("timeline-widget");
  widget.style.backgroundColor = "#aaaaaa";
});

musicTrack.addEventListener("unmute", (event) => {
  document.getElementById("timeline-widget").style.backgroundColor = "white";
});

在设置了这些事件处理程序后,当 musicTrack 进入其 muted 状态时,ID 为 timeline-widget 的元素的背景颜色会被更改为 #aaaaaa。当轨道退出静音状态时(通过接收到 unmuted 事件检测到),背景颜色将恢复为白色。

您也可以使用 onunmute 事件处理程序属性来设置此事件的处理程序;同样,对于 mute 事件,可以使用 onmute 事件处理程序来设置处理程序。以下示例展示了这一点。

js
musicTrack.onmute = (event) => {
  document.getElementById("timeline-widget").style.backgroundColor = "#aaaaaa";
};

musicTrack.onunmute = (event) => {
  document.getElementById("timeline-widget").style.backgroundColor = "white";
};

通过接收器取消静音轨道

以下示例显示了如何使用接收器来取消静音轨道。

js
// Peer 1 (Sender)
const transceivers = peer.getTransceivers();

const audioTrack = transceivers[0];
audioTrack.direction = "sendrecv";

const videoTrack = transceivers[1];
videoTrack.direction = "sendrecv";

// Peer 2 (Receiver)
audioTrack.addEventListener("unmute", (event) => {
  // Do something in UI
});

videoTrack.addEventListener("unmute", (event) => {
  // Do something in UI
});

transceivers 是一个 RTCRtpTransceiver 数组,您可以在其中找到发送和接收的音频或视频轨道。有关更多信息,请参阅 direction 文章。

规范

规范
媒体捕获和流
# event-mediastreamtrack-unmute

浏览器兼容性

另见