Это проясняет, что такое канал.
Не совсем.Только треки аудио имеют каналы.Если вы не используете веб-аудио до разделение аудио MediaStreamTrack
на отдельные каналы, дорожка является самым низким уровнем по отношению к одноранговым соединениям.*
Это связано с тем, что несколько аудиоканалов, как и множество кадров видео, являются частью полезной нагрузки, которая кодируется и декодируется кодеками.Практически говоря, вы можете использовать веб-аудио разветвитель на приемнике MedaiStreamTrack для разделения аудиоканалов, при условии, что они выжили.
*) Есть также каналы данных , но они отличаются, ине имеют никакого отношения к медиапотокам и дорожкам.
Является ли поток RTP ... таким же, как каналы, как этот термин используется в WebRTC и как указано выше?
Нет.Грубо говоря, вы можете сказать:
RTP stream == MediaStreamTrack.
Но это еще не все, из-за sender.replaceTrack(withTrack)
.Короче говоря, вы можете заменить дорожку, которая отправляется, на другую дорожку в любое время во время разговора без необходимости повторного согласования вашего соединения.Важно отметить, что receiver.track
другой стороны в этом случае не изменяется, а изменяется только его вывод.Это отделяет канал от содержимого, которое проходит через него.
Так что на отправляющей стороне было бы более справедливо сказать:
RTP stream == текущий вывод отправителя (из pc.getSenders()
)
... тогда как на принимающей стороне проще и всегда верно сказать:
RTP stream == receive.track
Имеет смысл?
А как насчет MediaStream?
В современные WebRTC , MediaStream
s являются тупыми контейнерами - вы можете добавлять или удалять дорожки из них, как вам угодно, используя stream.addTrack(track)
и stream.removeTrack(track)
-Кроме того, RTCPeerConnection
имеет дело только с дорожек .Например:
for (const track of stream.getTracks()) {
pc.addTrack(track, stream);
}
Существует ли однозначное сопоставление между каналами дорожки и потоком RTP с SSRC?
Между MediaStreamTrack
и SSRC, да.
Веб-камера [...] может иметь аудиодорожку и видеодорожку, каждая дорожка переносится вRTP-пакеты используют отдельный SSRC, в результате чего получаются два SSRC.Это правильно?
Да, в этом случае, потому что аудио никогда не может быть связано с видео или наоборот.
А что, если естьстерео вебкамера
Без разницы.Стереофоническая звуковая дорожка по-прежнему представляет собой единственную звуковую дорожку (и один поток RTP).
Или может быть несколько сеансов RTP через один и тот же набор соединений port-ip-UDP между узлами?
Не одновременно.Но несколько дорожек могут совместно использовать одну и ту же сессию, если вы не используете нестандартное значение:
new RTCPeerConnection({bundlePolicy: 'max-compat'});
Если вы не используете или используете любой другой режим , то дорожки одного типа могутбыть объединенным в один сеанс RTP.