Spec-Zone.ru › Web APIs

RTCPeerConnection: метод addStream()

Устаревший: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её поддерживать, она может быть удалена из соответствующих веб-стандартов, может быть в процессе удаления или поддерживаться только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; см. таблицу совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любое время.

Нестандартный: Эта функция нестандартна и не входит в стандарт. Не используйте её на производственных сайтах, обращённых к сети: она не будет работать для всех пользователей. Также могут быть большие несовместимости между реализациями, и поведение может измениться в будущем.

Метод addStream() интерфейса RTCPeerConnection добавляет MediaStream в качестве локального источника аудио или видео. Вместо использования этого устаревшего метода, вы должны использовать addTrack() для каждого трека, который вы хотите отправить удалённому узлу.

Если signalingState установлено в значение closed, генерируется InvalidStateError. Если signalingState установлено в значение stable, событие negotiationneeded отправляется на RTCPeerConnection, чтобы указать, что необходимо повторить переговорный процесс ICE для учёта нового потока.

Синтаксис

addStream(mediaStream)

Параметры

mediaStream

Объект MediaStream, указывающий поток, который нужно добавить к соединению веб-RTC.

Возвращаемое значение

Ничего.

Пример

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

navigator.mediaDevices.getUserMedia({ video: true, audio: true }, (stream) => {
  const pc = new RTCPeerConnection();
  pc.addStream(stream);
});

Миграция на addTrack()

Совместимость позволяя, вы должны обновить свой код, используя вместо этого метод addTrack():

navigator.getUserMedia({ video: true, audio: true }, (stream) => {
  const pc = new RTCPeerConnection();
  stream.getTracks().forEach((track) => {
    pc.addTrack(track, stream);
  });
});

Новый API addTrack() избегает путаницы в том, как последующие изменения в составе треков потока влияют на соединение peer (они не влияют).

Исключением является Chrome, где addStream() действительно делает соединение peer чувствительным к последующим изменениям потока (хотя такие изменения не вызывают события negotiationneeded). Если вы полагаетесь на поведение Chrome, обратите внимание, что в других браузерах его нет. Вы можете написать совместимый с веб-страницей код, используя обнаружение функций вместо этого:

// Add a track to a stream and the peer connection said stream was added to:

stream.addTrack(track);
if (pc.addTrack) {
  pc.addTrack(track, stream);
} else {
  // If you have code listening for negotiationneeded events:
  setTimeout(() => pc.dispatchEvent(new Event("negotiationneeded")));
}

// Remove a track from a stream and the peer connection said stream was added to:

stream.removeTrack(track);
if (pc.removeTrack) {
  pc.removeTrack(pc.getSenders().find((sender) => sender.track === track));
} else {
  // If you have code listening for negotiationneeded events:
  setTimeout(() => pc.dispatchEvent(new Event("negotiationneeded")));
}

Спецификации

Спецификации не найдены

Данные спецификаций не найдены для api.RTCPeerConnection.addStream.
Проверьте наличие проблем с этой страницей или внесите недостающие spec_url в mdn/browser-compat-data. Также убедитесь, что спецификация включена в w3c/browser-specs.

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
addStream 24 15 22 15 11–12 25 24 14 11–12 1.5 ≤37

См. также

  • WebRTC

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API