我可以在 Javascript 中将 Twilio 设备与 MediaStream 连接吗?

Can I connect a Twilio Device with a MediaStream in Javascript?

我正在使用 Twilio 客户端 Javascript SDK 并且想将传入呼叫连接到 MediaStream。

目前我的 Twilio 客户端只接受这样的来电:

Twilio.Device.incoming(function (conn) {
  conn.accept();
});

下面的代码片段显示了我如何从浏览器获取麦克风并将其用作媒体流:

navigator.getUserMedia({
    audio: true
  }, (stream) => {
    this._log('Microphone connected.');
    return this.connectMediaStream(stream).then(resolve);
  }, (error) => {
  });

connectMediaStream(stream) {
  return new Promise((resolve, reject) => {
    const isMediaStream = Object.prototype.toString.call(stream) === '[object MediaStream]';

  if (!isMediaStream) {
    const error = new TypeError('Argument must be a `MediaStream` object.')

现在,我不想使用麦克风,而是想使用来电连接。我怎样才能做到这一点?

此处为 Twilio 开发人员布道师。

Twilio 客户端不支持访问底层媒体轨道。但是,它只是 JavaScript,因此您可以检查表示呼叫的 Twilio.Connection 对象并最终找到传入的音频媒体流。

具体字段为:

  • connection.mediaStream.stream 对于本地流和
  • connection.mediaStream._remoteStream 用于远程流

我无法编辑第一个答案,所以我会在这里添加:

在1.3中,您可以访问:

  • connection.mediaStream.stream 对于本地流和
  • connection.mediaStream._remoteStream 用于远程流

从 1.4.14(我写这篇文章时的最新版本)开始,现在有更方便(并记录在案)的 getter 方法:

  • connection.getLocalStream()
  • connection.getRemoteStream()

请注意,您对这些流执行的任何修改它们的操作都会与调用交互(可能是负面的),除非您非常确定您知道自己在做什么,否则应该避免。 :)