Могу ли я подключить устройство Twilio к MediaStream в 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.')

Теперь вместо использования микрофона я хотел бы использовать соединение для входящего вызова. Как я могу этого добиться?


person Niels L    schedule 13.03.2017    source источник


Ответы (2)


Я не могу отредактировать первый ответ, поэтому добавлю сюда:

В 1.3 вы можете получить доступ:

  • connection.mediaStream.stream для локального потока и
  • connection.mediaStream._remoteStream для удаленного потока

Начиная с версии 1.4.14 (последняя версия, на момент написания которой я это пишу) появились более удобные (и задокументированные) методы получения:

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

Обратите внимание, что любые действия, которые вы выполняете в этих потоках, которые изменяют их, будут взаимодействовать с вызовом (потенциально отрицательно), и их следует избегать, если вы не уверены, что знаете, что делаете. :)

person rrowland    schedule 04.04.2017
comment
Привет, @rrowland, спасибо, что объяснил нам это! У меня есть небольшой вопрос, хотя мне нужно выполнить анализ NLP как для локальных, так и для удаленных видеопотоков. Не могли бы вы сказать мне, какой обратный вызов можно использовать для получения непрерывных аудиопотоков? - person Alica Corwin; 17.06.2017

Евангелист разработчиков Twilio здесь.

Получение доступа к базовым дорожкам мультимедиа не поддерживается в клиенте Twilio. Однако это всего лишь JavaScript, поэтому вы можете проверить объект Twilio.Connection, представляющий вызов, и в конечном итоге найти входящий аудиопоток.

Конкретные поля:

  • connection.mediaStream.stream для локального потока и
  • connection.mediaStream._remoteStream для удаленного потока
person philnash    schedule 13.03.2017
comment
Спасибо @филнаш. Я проверил объект Twilio.Connection, но не смог найти медиапоток. Я также связался с парнями из Twilio, надеюсь, они смогут указать мне правильное направление. - person Niels L; 14.03.2017
comment
@NielsL Вы можете получить доступ к локальному медиапотоку через connection.mediaStream.stream и к удаленному потоку через connection.mediaStream._remoteStream - person rrowland; 16.03.2017
comment
Спасибо @rrowland! - person philnash; 16.03.2017