MediaStreamTrack: unmute 事件

当轨道源在一段时间无法提供媒体数据后,再次能够提供媒体数据时,就会向 MediaStreamTrack 发送 **unmute** 事件。

这将结束由 mute 事件开始的 muted 状态。

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

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

语法

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

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

onunmute = (event) => {};

事件类型

一个通用的 Event

示例

在本例中,为 muteunmute 事件建立了事件处理程序,以便检测何时媒体没有从存储在变量 musicTrack 中的 MediaStreamTrack 的源流出。

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

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

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

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

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

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

通过接收方取消静音轨道

以下示例展示了如何使用接收方取消静音轨道。

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

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

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

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

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

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

规范

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

浏览器兼容性

BCD 表仅在浏览器中加载

另请参见