Отмена публикации издателя и попытка публикации сразу после не работы - PullRequest
0 голосов
/ 13 мая 2018

Я использую Tokbox Javascript SDK в браузере.У меня проблемы с воссозданием издателя.Моя ситуация такова:

  1. Я создаю издателя, который транслирует аудио и видео
  2. В определенный момент я хочу переключить источник звука на другой источник MediaStream.
  3. Я отменяю публикацию предыдущего издателя в сеансе и уничтожаю его в обратном вызове
  4. Я пытаюсь создать нового издателя с этой новой конфигурацией.

Когда я делаю этоЯ получаю следующую ошибку:

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, …}

1 Ответ

0 голосов
/ 21 мая 2018

TokBox Developer Evangelist здесь.

Когда вы уничтожаете издателя, мы вызываем метод stop для MediaStreamTrack, поэтому вы не можете использовать тот же *Опять 1007 * вариантов.Чтобы этого не случилось, вызовите метод clone для MediaStreamTrack и передайте клон в качестве параметров при инициализации издателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...