Да, WebRTC поддерживает , именно так, как вы показываете.
За исключением addStream
устарел, поэтому вы хотите использовать addTrack
вместо.Или используйте polyfill:
pc.addStream = stream => stream.getTracks().forEach(t => pc.addTrack(t, stream));
Порядок дополнений определяет порядок событий track
на другом конце:
pc.ontrack = ({streams: [stream]}) => {
for (const video of [remoteElement1, remoteElement2, remoteElement3]) {
if (video.srcObject && video.srcObject.id != stream.id) continue;
video.srcObject = stream;
break;
}
}
Приведенный выше код назначит три входящих потокадо трех элементов видео для воспроизведения, по порядку.Событие track
запускается для каждой дорожки, поэтому мы проверяем stream.id
на случай, если поток имеет более одной дорожки.
В качестве альтернативы, мы могли бы отправить stream.id
s по каналу данных и сопоставить, чтоКстати, поскольку stream.id
s идентичны удаленно.Однако обратите внимание, что track.id
s не являются стабильными в этом случае.Третий способ заключается в корреляции с использованием transceiver.mid
, который всегда стабилен, за исключением того, что изначально он равен null
.