Gstreamer 无法通过 rtspsrc 播放音频

Posted

技术标签:

【中文标题】Gstreamer 无法通过 rtspsrc 播放音频【英文标题】:Gstreamer unable to play audio through rtspsrc 【发布时间】:2015-03-05 10:33:13 【问题描述】:

我无法从 rtsp 服务器播放音频,我的视频播放没有问题,但我尝试播放音频时出现了一些错误, 以下是用于播放视频的命令:

C:\gstreamer\1.0\x86_64\bin>gst-launch-1.0 rtspsrc location=rtsp://192.168.2.116/axis-media/media.amp latency=0 !decodebin ! autovideosink

但是,当我将 autovideosink 更改为 autoaudiosink 时,如下所示:

C:\gstreamer\1.0\x86_64\bin>gst-launch-1.0 rtspsrc location=rtsp://192.168.2.116/axis-media/media.amp latency=0 !decodebin ! autoaudiosink

我收到以下错误:

ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: Internal data flow error.
Additional debug info:
gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1:
streaming task paused, reason not-linked (-1)

我是 *** 和 Gstreamer 的新手,非常感谢您的帮助

【问题讨论】:

【参考方案1】:

感谢 thiagoss 的回复,我在使用以下管道播放视频和音频方面取得了第一次成功:

gst-launch-1.0 rtspsrc location=rtsp://192.168.2.116/axis-media/media.amp latency=0 name=src src. ! decodebin ! videoconvert ! autovideosink src. ! decodebin ! audioconvert ! autoaudiosink

【讨论】:

【参考方案2】:

IIRC rtspsrc 将为每个流输出一个 pad(视频和音频可能是分开的),因此您可以将视频输出链接到 audiosink。

您可以使用 -v 运行以查看每个焊盘上的大写字母并进行验证。然后您可以通过在 gst-launch-1.0 中使用焊盘名称正确链接:

类似:

gst-launch-1.0 rtspsrc location=rtsp://192.168.2.116/axis-media/media.amp latency=0 name=src src.stream_0 !decodebin ! autovideosink

检查正确的 stream_%u 编号以用于每个流以使其正确链接。

您也可能只是在视频接收器之前缺少一个视频转换。我也会测试一下。

【讨论】:

你好 thiagoss,我没有足够的声誉来投票你的答案,我想在这里表达我最大的感谢!

以上是关于Gstreamer 无法通过 rtspsrc 播放音频的主要内容,如果未能解决你的问题,请参考以下文章

GStreamer基础教程07 - 播放速率控制

gstreamer 仅播放视频

Gstreamer Gstreamer中通过UDP(RTP)远程播放MP3

如何在 Windows 上使用 gstreamer 播放 .wav 音频文件?

使用 gstreamer 播放传入的 RTP 视频流

gstreamer让playbin能够播放rtp over udp流数据