什么是TrackStartError?

Jam*_*tie 6 javascript audio webrtc getusermedia

我正在使用约束运行仅音频会话:

  var constraints = {
    audio: {
      mandatory: {
        echoCancellation: false
      }, optional: [{
        sourceId: audioSource
      }]
    },
    video: false
  };
Run Code Online (Sandbox Code Playgroud)

我注意到在极少数会话中,我从getUserMedia请求收到TrackStartError.我看不到可用的浏览器/浏览器版本/ OS /设备之间的任何关联.有些计算机不断得到这个错误,有些曾经一次,然后在一个新的getUserMedia请求没有问题,有些人根本没有遇到这个问题.

是否完全记录了TrackStartError,因为我已经看到围绕强制音频标志的一些问题,但echoCancellation似乎没有这个问题?

jib*_*jib 10

TrackStartError是一种非规范铬具体的版本NotReadableError:

虽然用户已授予使用匹配设备的权限,但操作系统,浏览器或网页级别发生硬件错误,导致无法访问设备.

鉴于您的约束是非规范的,也是特定Chrome的,因此看起来很合适.相反,尝试:

  var constraints = {
    audio: {
      echoCancellation: { exact: false },
      deviceId: audioSource
    },
  };
Run Code Online (Sandbox Code Playgroud)

我强烈推荐官方的adapter.js polyfill处理这种浏览器差异.

某些系统(如Windows)提供对硬件设备的独占访问权限,如果其他应用程序当前正在使用麦克风或摄像头,则可能导致此错误.它也可能是错误或驱动程序问题.