AudioTrack - 表示来自 HTML 媒体元素 <audio> 或 <video> 的单个音频轨道

AudioTrack 接口表示来自 HTML 媒体元素 <audio><video> 的单个音频轨道。访问 AudioTrack 对象的最常见用途是切换其 enabled 属性,以使轨道静音和取消静音。

属性

enabled

一个布尔值,控制是否启用音轨的声音。将此值设置为 false 会使轨道的音频静音。

id 只读

一个 DOMString,用于唯一标识媒体中的轨道。通过调用 AudioTrackList.getTrackById(),可以使用此 ID 在音频轨道列表中查找特定轨道。如果媒体支持根据媒体片段 URI 规范通过媒体片段进行搜索,则 ID 也可以用作 URL 的片段部分。

kind 只读

一个 DOMString,指定轨道所属的类别。例如,主音频轨道的 kind"main"

label 只读

一个 DOMString,它为轨道提供了易于阅读的标签。例如,电影的音频评论轨道可能具有 “带有导演 John Q. Public 和演员 John Doe 和 Jane Eod 的评论” 的标签,如果未提供标签,则此字符串为空。

language 只读

一个 DOMString,指定音频轨道的主要语言,如果未知,则为空字符串。该语言被指定为 BCP 47(RFC 5646)语言代码,例如 "en-US""pt-BR"

sourceBuffer 只读

创建轨道的 SourceBuffer。如果轨道不是由 SourceBuffer 创建的,或者 SourceBuffer 已从其父媒体源的 MediaSource.sourceBuffers 属性中删除,则返回 null

使用注意

要获取给定媒体元素的 AudioTrack,请使用元素的 audioTracks 属性,该属性将返回 AudioTrackList 对象,可以用来获取媒体中包含的各个轨道:

var el = document.querySelector("audio");
var tracks = el.audioTracks;

然后,您可以使用数组语法或 forEach() 之类的函数访问媒体的各个轨道。

此第一个实例获取媒体上的第一个音频轨道:

var firstTrack = tracks[0];

下一个实例扫描媒体的所有音轨,激活用户首选语言(取自变量 userLanguage)中的第一个音频轨道。

tracks.forEach(function(track) {
  if (track.language === userLanguage) {
    track.enabled = true;
  } else {
    track.enabled = false;
  }
});

language 为标准(RFC 5646)的格式。例如,对于美国英语,它将是 "en-US"

实例

此实例返回轨道种类和标签的数组,以便在用户界面中使用,用于选择指定媒体元素的音频轨道。列表被筛选为仅允许某些轨道类型通过。

function getTrackList(el) {
  var trackList = [];
  const wantedKinds = [
    "main", "alternative", "main-desc", "translation", "commentary"
  ];

  el.audioTracks.forEach(function(track) {
    if (wantedKinds.includes(track.kind)) {
      trackList.push({
        id: track.id,
        kind: track.kind,
        label: track.label
      });
    }
  });
  return trackList;
}

产生的 trackList 包含一个音频轨道数组,其 kind 是数组 wantedKinds 中的音频轨道之一,每个条目都包含了轨道的 idkindlabel

规范

规范 状态 备注
HTML Living Standard
AudioTrack 的定义
现行的标准 -
HTML5
AudioTrack 的定义
推荐 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 未知≤18 未知 未知 未知 支持
enabled 未知12 未知 未知 未知 支持
id 未知12 未知 未知 未知 支持
kind 未知12 未知 未知 未知 支持
label 未知12 未知 未知 未知 支持
language 未知12 未知 未知 未知 支持
sourceBuffer 未知12 未知 未知 未知 支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 未知 未知 未知 未知 未知 未知 支持
enabled 未知 未知 未知 未知 未知 未知 支持
id 未知 未知 未知 未知 未知 未知 支持
kind 未知 未知 未知 未知 未知 未知 支持
label 未知 未知 未知 未知 未知 未知 支持
language 未知 未知 未知 未知 未知 未知 支持
sourceBuffer 未知 未知 未知 未知 未知 未知 未知