【问题标题】:Pulseaudio to output RTP to internetPulseaudio 将 RTP 输出到互联网
【发布时间】:2013-01-05 08:04:10
【问题描述】:

我希望 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 一起产生预期的结果(我可以从 remove 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 作为源。

还是有点糊涂..

【问题讨论】:

    标签: vlc alsa pulseaudio


    【解决方案1】:

    RTP 使用无状态 UDP 协议作为传输:它不需要目标端确认任何传入的数据包。它无法告诉您连接是否已实际建立,除非远程端明确拒绝了它。此功能允许在 LAN 上进行广播,因为多个客户端可以根据需要侦听数据包,但它会使调试单播连接稍微复杂一些。

    在进行单播 UDP 时(就像您尝试实现的那样),一旦它在 Internet 上发布,它应该到达您的目的地。你有防火墙吗?除非您的机器直接连接到调制解调器,否则您很可能至少有网络地址转换,这会阻止数据包到达您的计算机。在您的网关/路由器配置中查找端口转发。

    您可以使用 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 即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多