3

我正在使用 Twilio Client 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.')

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

4

2 回答 2

2

我无法编辑第一个答案,所以我将在此处添加:

在 1.3 中,您可以访问:

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

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

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

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

于 2017-04-04T16:35:34.997 回答
1

Twilio 开发人员布道者在这里。

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

具体字段如下:

  • connection.mediaStream.stream对于本地流和
  • connection.mediaStream._remoteStream对于远程流
于 2017-03-13T22:09:11.477 回答