Twilio Video MediaStreamTrack TypeError с Cordova

Я разрабатываю приложение для потоковой передачи видео в Cordova, используя видеоконференцсвязь Twilio. Я пытаюсь транслировать видео с фронтальной камеры устройства. Он хорошо работает на Android, но я столкнулся с некоторыми проблемами на iOS.

Я использую плагин cordova-plugin-iosrtc для предоставления API navigator.mediaDevices.

в методе подключения я получаю эту ошибку

TypeError: track must be a LocalAudioTrack, LocalVideoTrack, LocalDataTrack, orMediaStreamTrack

Я изменил код на нужный тип трека

const { LocalAudioTrack, LocalVideoTrack, connect } = require('twilio-video');

constmediaStream = awaitnavigator.mediaDevices.getUserMedia(constraints); 

const tracks = mediaStream.getTracks().map(track => track.kind === 'audio' ? newLocalAudioTrack(track) :newLocalVideoTrack(track)); const room = awaitconnect('token', { tracks }); 

и я получаю эту ошибку после изменения

TypeError: Argument 1 ('track') to mediaStream.addTrack must be an instance of MediaStreamTrack and sometimes this one => typeError undefined isn't an object (evaluating 'tracks.id')

Заранее спасибо. Я ценю любую помощь


person Obaida Alhassan    schedule 17.10.2019    source источник


Ответы (1)


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

Если у вас есть MediaStreamTrack объектов, вы можете передать их непосредственно Video.connect с помощью опций. Итак, вы можете сделать что-то вроде этого:

const stream = await navigator.mediaDevices.getUserMedia(constraints);

const room = await Video.connect(token, { tracks: stream.getTracks() })

Это превратит ваши MediaStreamTrack в LocalTrack, и вам не придется об этом беспокоиться.

Дайте мне знать, поможет ли это вообще.

person philnash    schedule 28.10.2019
comment
Привет @philnash, спасибо за ваш ответ, я сделал это ранее и попытался еще раз, все еще не работает и выдает эту ошибку ``` TypeError: дорожка должна быть LocalAudioTrack, LocalVideoTrack, LocalDataTrack или MediaStreamTrack ``` Любая идея? - person Obaida Alhassan; 29.10.2019
comment
Можете ли вы проверить тип треков, возвращенных stream.getTracks()? Возможно, плагин Cordova создает что-то еще? - person philnash; 29.10.2019
comment
Я пытался проверить тип дорожки, но объект ведения журнала консоли XCode js, также XCode не является интерактивным, просто черно-белый текст, если вы знаете, как я могу получить реальный тип дорожки, скажите мне - person Obaida Alhassan; 30.10.2019
comment
в исходном коде плагина, я думаю, если я правильно понимаю, это типа RTCMediaStreamTrack вот лог из консоли XCode, я записал дорожку, надеюсь, это будет иметь какой-то смысл, спасибо за ваш добрый Фил [arg:[{"_listeners":{},"id":"B38F4F9B-9880-4EE9-8386-4FCF30EE037A","kind":"audio","label":"B38F4F9B-9880-4EE9-8386-4FCF30EE037A","muted":false,"readyState":"live","_enabled":true,"_ended":false},{"_listeners":{},"id":"29210470-49EA-43D7-8CD3-DD06DFBD855C","kind":"video","label":"29210470-49EA-43D7-8CD3-DD06DFBD855C","muted":false,"readyState":"live","_enabled":true,"_ended":false}]] - person Obaida Alhassan; 30.10.2019
comment
Насколько я вижу, плагин возвращает собственная реализация MediaStreamTrack. Возможно, это не проходит тест на тип объекта, который использует Twilio Video. Рассматривали ли вы возможность попробовать плагин Cordova специально для Twilio Video, например этот: github.com/ okode/cordova-plugin-twilio-video ? - person philnash; 03.11.2019
comment
если честно, нет, я не пробовал, даже я видел это, потому что пример использования IOSRTC работает в моем приложении, и он имеет хорошие звезды и используется приложениями, поэтому я попробую это twilio-cordova-video и ответим вам результатом Спасибо за ваш добрый @philnash - person Obaida Alhassan; 03.11.2019