WebRTC: взаимосвязь между каналами, треками и потоками в отношении сеансов RTP SSRC и RTP - PullRequest
0 голосов
/ 07 декабря 2018

С сайта Mozilla: https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API

"MediaStream состоит из нуля или более объектов MediaStreamTrack, представляющих различные аудио- или видеодорожки. Каждый MediaStreamTrack может иметь один или несколько каналов. Канал представляет наименьшую единицумедиапоток, такой как аудиосигнал, связанный с данным динамиком, например, левый или правый в стереофонической звуковой дорожке ".

Это разъясняет, что такое канал.

Несколько последних RFC (например, 8108) указывают на необходимость отправки нескольких потоков в одном сеансе RTP.Каждый поток должен иметь свой собственный SSRC на уровне RTP.В RFC для Unified Plan ссылка всегда на поток как на самый низкий уровень (не на треки или каналы).В RFC 3550, базовом RTP RFC, нет ссылки на канал.

Является ли поток RTP, как указано в этих RFC, которые предполагают, что поток является наименьшим источником мультимедиа, такой же, как каналы, как этот термин используется в WebRTC и как указано выше?Существует ли сопоставление один-к-одному между каналами дорожки (WebRTC) и потоком RTP с помощью SSRC?

Например, веб-камера генерирует поток мультимедиа, который может иметь аудиодорожку идорожка мультимедиа, каждая дорожка транспортируется в RTP-пакетах с использованием отдельного SSRC, что приводит к двум SSRC.Это верно?А что если есть стерео вебкамера (или какое-то такое устройство с, скажем, двумя микрофонами - каналами?).Будет ли это генерировать три потока RTP с тремя разными уникальными SSRC?

Существует ли один сеанс RTP для соединения с пятью кортежами, установленного после успешного тестирования кандидатов ICE?Или может быть несколько сеансов RTP по одному и тому же набору соединения port-ip-UDP между узлами?

Любой документ, который разъясняет это, будет оценен.

1 Ответ

0 голосов
/ 08 декабря 2018

Это проясняет, что такое канал.

Не совсем.Только треки аудио имеют каналы.Если вы не используете веб-аудио до разделение аудио 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.

...