Я использую Tokbox Javascript SDK в браузере.У меня проблемы с воссозданием издателя.Моя ситуация такова:
- Я создаю издателя, который транслирует аудио и видео
- В определенный момент я хочу переключить источник звука на другой источник MediaStream.
- Я отменяю публикацию предыдущего издателя в сеансе и уничтожаю его в обратном вызове
- Я пытаюсь создать нового издателя с этой новой конфигурацией.
Когда я делаю этоЯ получаю следующую ошибку:
Session.publish, could not publish in a reasonable amount of time.
Я искал в SO и в Интернете некоторые ответы.Я сталкивался с людьми с похожими проблемами, такими как , или , , но ни у одного из них нет ответов на этот вопрос.
По сути, мне либо нужно выяснить, как я могу изменитьсуществующий издатель, который уже вещает (с точки зрения конфигурации источника аудио и видео), или я делаю что-то не так с жизненным циклом издателя, когда пытаюсь создать нового.
Создание второго издателяхотя первый, кажется, работает нормально, но сначала уничтожение одного, а затем попытка создать новый, похоже, приводит к описанной проблеме.
Вот пример кода:
// returns existing publisher
const existing = selectPublisher(getState());
if (existing) {
session.unpublish(existing);
existing.destroy();
console.log('destroyed.');
}
const publisher = OT.initPublisher(
'publisher-container',
finalOptions,
error => {
console.log(error);
}
);
session.publish(publisher, error => {
console.log(error);
});
Инициализацияиздателя вроде работает, печатает undefined
.Печать заканчивается:
index.js:2177 OT.Publisher.onPublishingTimeout
index.js:2177 OT.exception :: title: Unable to Publish (1500) msg: ICEWorkflow
index.js:2177 1500 "Session.publish :: Could not publish in a reasonable amount of time"
Я использую клиентский пакет opentok npm версии 2.14.2
РЕДАКТИРОВАТЬ:
Кажется, что проблема вызванаПараметры, которые я передавал издателю, приведенный выше пример работает нормально, если я просто использую параметры по умолчанию (не передаю их в издатель).
Я использую два объекта MediaStreamTrack
, один для аудио и видео, собранный с помощью OT.getUserMedia(options)
.Похоже, что в первый раз все работает нормально, но как только я отменяю и переиздаю с теми же двумя MediaStreamTrack
объектами, я сталкиваюсь с этой проблемой.
Объект, который я передаю, выглядит следующим образом (с хромированной консоли):
audioSource: MediaStreamTrack {kind: "audio", id: "9414787b-82b9-48c3-99bd-3208b46c2f9f", label: "Built-in Microphone", enabled: true, muted: false, …}
videoSource: MediaStreamTrack {kind: "video", id: "3f20c926-7d0c-4537-8e8d-ef4b22393a58", label: "FaceTime HD Camera", enabled: true, muted: false, …}