WebRTC技术详解:从0到1构建多人视频会议系统
上QQ阅读APP看书,第一时间看更新

2.2.1 MediaStreamTrack属性

1. enabled

返回MediaStreamTrack的有效状态,类型为布尔值,值为true表示轨道有效,可以被渲染;值为false表示轨道失效,被渲染时将会出现静音或黑屏。如果媒体轨道连接中断,enabled值仍然可以被改变,但不会生效。

设置enabled值为false可以实现静音效果,与mute方法相同。

代码清单2-9实现了按钮的单击事件,在事件处理函数中控制媒体轨道的暂停和播放。

代码清单2-9 enabled示例

pauseButton.onclick = function(evt) {
  const newState = !myAudioTrack.enabled;

  pauseButton.innerHTML = newState ? "Pause" : "Play";
  myAudioTrack.enabled = newState;
}
2. id只读

返回MediaStreamTrack的UUID值,类型为字符串。

const id = track.id
3. kind只读

返回MediaStreamTrack的内容种类,类型为字符串,返回audio表示轨道内容种类是音频,返回video表示轨道内容种类是视频。

代码清单2-10对kind的种类进行判断并使用console.log打印。

代码清单2-10 kind示例

const type = track.kind;
if ( type === 'video' ) {
  console.log('video track');
} else if ( type === 'audio' ) {
  console.log('audio track');
}
4. label只读

返回MediaStreamTrack的标签,类型为字符串,表示媒体轨道的来源,比如internal microphone。

label的值可以为空,并且在没有媒体源与媒体轨道连接的情况下会一直为空。当轨道与它的源分离时,label的值不会改变。

const label = track.label
5. muted只读

返回MediaStreamTrack是否处于静音状态,类型为布尔,值为true表示轨道静音,值为false表示轨道未静音。处于静音状态的媒体轨道不能提供媒体数据,当视频轨道处于静音状态时,则会表现为黑屏。

代码清单2-11对媒体轨道数组进行遍历,并统计处于静音状态的媒体轨道数目。

代码清单2-11 muted示例

let mutedCount = 0;
trackList.forEach((track) => {
  if (track.muted) {
    mutedCount += 1;
  }
});
6. readyState只读

返回MediaStreamTrack的就绪状态,可能的取值如下。

  • live:表示输入媒体源已经连接,可以正常提供媒体数据。
  • ended:表示输入媒体源处于结束状态,不能再提供新的媒体数据。
const state = track.readyState