Pulseaudio для вывода RTP в интернет

Я хочу, чтобы pulseaudio (удаленный экземпляр) передавал аудио, отправленное на основное устройство alsa, прямо в RTP через Интернет, чтобы я мог слушать его на VLC на своем домашнем компьютере.

в моем /etc/pulse/default.pa

load-module module-rtp-send source=alsa_output.0.analog-stereo.monitor destination=x.x.x.x port=8080 loop=1

Где x.x.x.x — это IP-адрес моего сервера в Интернете.

После запуска pulseaudio показывает netstat (я не могу подключиться к этому удаленному VLC)

udp        0      0 10.170.94.16:58606      x.x.x.x:9875      ESTABLISHED 2109/pulseaudio
udp        0      0 10.170.94.16:35597      x.x.x.x:8080      ESTABLISHED 2109/pulseaudio

Он работает с cvlc для получения ожидаемых результатов (я могу подключиться к этому удалению VLC)

cvlc -vvv pulse://alsa_output.0.analog-stereo.monitor --sout '#transcode{acodec=mpga,ab=32,channels:1}:rtp{sdp=rtsp://0.0.0.0:8080/test.sdp}'

который производит

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1944/pulseaudio

И я могу подключиться к нему.

Итак, я думаю, что понимаю, что pulseaudio работает правильно и отправляет звук на порт 8080. Однако он не прослушивает входящие соединения для маршрутизации данных. Как бы я сказал pulseaudio или настроил маршрутизацию, чтобы порт 8080 передавал звук, предоставляемый rtp, при возникновении входящего соединения. Я также вижу, что cvlc использует rtsp в качестве источника.

Еще немного запутался..


person Justin    schedule 22.01.2013    source источник


Ответы (1)


RTP использует протокол UDP без сохранения состояния в качестве транспорта: он не требует от получателя подтверждения каких-либо входящих пакетов. Он не может сказать вам, действительно ли соединение было установлено, кроме случаев, когда удаленный конец явно отклонил его. Эта функция позволяет выполнять широковещательную рассылку в локальной сети, поскольку несколько клиентов могут прослушивать пакеты по своему усмотрению, но это несколько усложняет отладку одноадресных соединений.

При выполнении одноадресной рассылки UDP (как вы пытаетесь добиться), как только он выходит в Интернет, он должен добраться до места назначения. У вас есть брандмауэр? Если ваша машина не подключена напрямую к вашему модему, очень вероятно, что у вас есть по крайней мере преобразование сетевых адресов, которое предотвратит попадание пакетов на ваш компьютер. Найдите переадресацию портов в конфигурации вашего шлюза/маршрутизатора.

Вы можете проверить, действительно ли вы получаете пакеты, используя tcpdump. При его запуске вы увидите некоторый шум от других подключений, а также пакеты, которые выглядят следующим образом:

08:19:38.483895 IP y.y.y.y.zzzz > x.x.x.x:8080: UDP, length 1292

Кроме того, PulseAudio не использует RTSP, поэтому VLC нужно открывать только поток RTP. Достаточно просто ввести rtp://0.0.0.0:8080.

person sleblanc    schedule 20.03.2020