使用web audio api检查选定的麦克风是否静音

Geu*_*uis 5 javascript audio web-audio-api

通过使用以下内容,我们可以提示用户选择具有音频和视频源约束的首选媒体输入设备(目前仅对Chrome支持感兴趣).

navigator.mediaDevices.getUserMedia({audio: true})
  .then((stream) => {
    console.log(stream);
  });
Run Code Online (Sandbox Code Playgroud)

任何人都知道是否有一个公开的API来检测用户选择的输入设备当前是否静音?输入设备可以是板载麦克风,外部麦克风或软件定义的麦克风,在系统中显示为硬件设备.

gue*_*314 9

您可以通过迭代方法返回的数组,或通过从数组中选择索引来检查.muted Boolean每个MediaStreamTrack的属性值。MediaStream .getAudioTracks()MediaStreamTrack

  navigator.mediaDevices.getUserMedia({audio: true})
  .then(stream => {
    console.log("MediaStreamTrack muted:", stream.getAudioTracks()[0].muted);
  })
  .catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)

您还可以利用muteunmute MediaStreamTrack事件。

  • 这似乎并未反映 Chrome 57 (Windows 10) 中麦克风的实际静音状态,即使通过“deviceId”选择特定的非“默认”麦克风也是如此。 (2认同)
  • 首先在托盘 > 声音图标上下文菜单 > 录音设备 > 音频下识别启用的麦克风。使用 `navigator.mediaDevices.enumerateDevices()` 来标识具有相同标签的设备的 `deviceId`。使用 `navigator.mediaDevices.getUserMedia({ audio: { deviceId: '...' } })` 来选择设备。验证 `track = stream.getTracks()[0]` 与设备匹配并检查 `track.muted`。通过“录音设备”对话框中特定设备的“级别”选项卡将麦克风静音。检查 `track.muted` 并查看它没有改变。 (2认同)