udpsink似乎不流任何内容,但filesink可以工作

时间:2019-07-14 15:06:53

标签: linux audio gstreamer audio-streaming suse

我无法通过udpsrc通过rtp将脉冲音频监视器流传输到诸如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

1 个答案:

答案 0 :(得分:0)

刚刚启动此帐户,我想将此添加为评论,但由于销售代表的限制而不能。

我没有使用vlc的经验,但是如果我将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上限,即使它依赖于这些上限,但我希望这能为您的工作提供一些见识。