WebRTC односторонний видеозвонок

Мы возимся с WebRTC в нашей компании. И я наткнулся на странную вещь, в которой я не уверен, так это дизайн в WebRTC или ошибка реализации с нашей стороны.

В настоящее время у нас есть простое веб-приложение, которое отображает список контактов онлайн-контактов. Теперь можно просто позвонить любому пользователю из списка контактов.

Вызывающий и вызывающий абоненты могут свободно делиться веб-камерой и / или аудио. Который тогда уважается GetUserMedia() (MediaConstraints).

Странная вещь: клиенты (Chrome 65) согласовывают видео-вызов, только если вызывающий абонент запускает видео. Если вызывающий не предлагает свою веб-камеру, мы не получим обратно веб-камеру вызываемого (если он это позволил).

Но когда вызывающий абонент инициирует вызов с включенной веб-камерой, а вызывающий абонент решает не показывать его, все работает так, как ожидалось. (Только Caller имеет прямой эфир).

Если обе стороны соглашаются показывать видео, мы получаем двустороннее потоковое видео.

У кого-нибудь есть внутренние знания, если это так? Разве нельзя позвонить кому-то, не показав свою собственную веб-камеру, но позже увидев веб-камеру вызываемых?

Заранее спасибо, свен

2 ответа

Решение

Попробуйте pc.createOffer({offerToReceiveVideo: true}) вместо его вызова без этих ограничений.

Ответ Филиппа отлично работает. Однако на данный момент предложенный вариант помечен как устаревший и больше не должен использоваться. Новый способ сделать это — добавить видеотрансивер в соединение перед созданием предложения:

      connection.addTransceiver('video');
// this step seems to be optional:
connection.getTransceivers().forEach(t => t.direction = 'recvonly');

connection.createOffer();

Кредит https://niccoloterreri.com/webrtc-with-transceivers . Необязательный шаг см . на странице https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/direction .

Другие вопросы по тегам