GStreamer: получать / демультиплексировать несколько потоков RTP на одном порту? - PullRequest
0 голосов
/ 01 июня 2018

Я хотел бы использовать gstreamer для создания сетевого приемника для нескольких потоков UDP RTP.Базовая настройка (один отправитель, один получатель) работает нормально и выглядит следующим образом:

# sender:
gst-launch-1.0 -vvtcm audiotestsrc ! rtpgstpay config-interval=1 ssrc=1 ! udpsink host=127.0.0.1 port=5000
# receiver:
gst-launch-1.0 -vvtcm udpsrc port=5000 caps="application/x-rtp,media=application,clock-rate=90000,encoding-name=X-GST" ! rtpssrcdemux ! rtpgstdepay ! autoaudiosink

Однако я хотел бы иметь несколько отправителей, которые могут динамически запускать и останавливать потоковую передачу на один и тот же порт.AFAICT Поле SSRC в RTP позволяет мне сделать именно это, но я не могу понять, как настроить rtpssrcdemux, чтобы он создавал дополнительные приемники.

Например, когда я запускаю следующий конвейер приемника:

gst-launch-1.0 -vvtcm udpsrc port=5000 caps="application/x-rtp,media=application,clock-rate=90000,encoding-name=X-GST" ! rtpssrcdemux name=demux demux.src_0 ! rtpgstdepay ! autoaudiosink demux.src_1 ! rtpgstdepay ! autoaudiosink

он будет ожидать первого аудиопотока, но когда я запускаю второго отправителя с другим SSRC, конвейер останавливается с streaming task paused, reason not-linked (-1).

Подсказки приветствуются ...?

...