我无法通过rtp将脉冲音频监视器流式传输到带有udpsrc的vlc或gst-launch等音频播放器

此命令有效并且文件具有当前正在播放的音频

gst-launch-1.0 -v pulsesrc device = "alsa_output.pci-0000_00_1b.0.analog-stereo.monitor" ! opusenc ! oggmux ! filesink location=test.ogg

但是当我用这个的时候
gst-launch-1.0 -v pulsesrc device="alsa_output.pci-0000_00_1b.0.analog-stereo.monitor" ! opusenc ! rtpopuspay ! udpsink host=0.0.0.0 port=4000

vlc(来自Android手机)告诉我,它无法使用uri rtp://ip-addr:4000播放流

并从同一台计算机启动gst-launch,但结果文件为空。
gst-launch-1.0 -v udpsrc uri=rtp://0.0.0.0:4000 ! rtpopusdepay ! oggmux ! filesink location=test.ogg

gstreamer版本是
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.16.0
GStreamer 1.16.0

最佳答案

刚开始创建此帐户时,我想将此添加为评论,但由于销售代表的限制而无法添加。

我没有使用vlc的经验,但是如果我将rtp流参数的上限,rtp流参数的定义添加到rtpopusdepay中,至少可以使您的GStreamer管道正常工作。

所以代替:
gst-launch-1.0 -v udpsrc uri=rtp://0.0.0.0:4000 ! rtpopusdepay ! oggmux ! filesink location=test.ogg
您需要使用:
gst-launch-1.0 udpsrc uri=udp://0.0.0.0:4000 ! application/x-rtp,payload=96,encoding-name=OPUS ! rtpopusdepay ! opusdec ! autoaudiosink
对于GStreamer。必填部分是有效负载和编码名称,其他则可以从gst-inspect-1.0 rtpopuspay / rtpopusdepay中找到。您可能需要更改数字,具体取决于您在服务器端定义的内容/计算机上的默认值。

因此,总而言之,我通过将rtp定义移至rtpopusdepay的上限来使GStreamer管道正常工作。就像我说的那样,我对vlc并不熟悉,所以我什至不知道如何在其中定义那些GStreamer上限,即使它依赖于这些上限,但我希望这能对您的工作有所帮助。

关于linux - udpsink似乎不流任何内容,但filesink可以工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57028596/

10-11 19:44