Получить MediaStream от подписчика Opentok.js - PullRequest
0 голосов
/ 08 ноября 2018

Я использую @opentok/client для создания приложения Angular6 для простого многопользовательского видеочата.

Я хочу использовать функцию «прожектора» (например, в полноэкранном режиме пользователя, который в данный момент говорит в сеансе), используя hark.js для обнаружения речи.

Проблема в том, что для этой библиотеки нужен источник MediaStream для обработки аудио и событий генерации, которые я бы перехватил и обработал.

Я хотел бы получить MediaStream от класса подписчика OpenTok, но как это сделать нигде не найдено, но, поскольку он основан на общем WebRTC, он должен быть выполнимым.

Есть ли отведения?

Пример кода:

 this.opentokService.initSession().then((session: OT.Session) => {
  this.session = session;
  this.session.on('streamCreated', (event) => {
    this.streams.push(event.stream); //creates the subscribers elements
    var speechEvents = hark(event.stream, {}); //raises error, how to get a proper MediaStream here?
  });

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Вы можете получить к нему доступ так:

const mediaStream = subscriber._.webRtcStream()
0 голосов
/ 09 ноября 2018

Вы правы, поскольку OpenTok - это просто обычный WebRTC, вы можете получить MediaStream из базового элемента видео у подписчика, например, так:

const mediaStream = subscriber.element.querySelector('video').srcObject;

Это будет работать в последних версиях Chrome, Firefox, Safari и Edge. Он не будет работать в Internet Explorer, потому что он использует плагин и в любом случае не имеет объектов MediaStream.

Я также хочу отметить, что сам подписчик имеет события audioLevelUpdated, которые можно использовать для достижения той же цели. Событие дает вам уровень аудио от 0 до 1. В документации есть хороший пример того, как преобразовать его в диапазон дБ https://tokbox.com/developer/sdks/js/reference/Subscriber.html#events

Я не уверен, что hark.js выполняет некоторую обработку, чтобы убедиться, что это речь, если так, то она все еще может работать лучше. Событие уровня звука основано только на шуме, независимо от того, является ли это речью.

...