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 |
См. также
© 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