VLC RTSP与GStreamer的兼容性

时间:2012-05-10 17:36:17

标签: stream gstreamer rtsp vlc pipeline

我正在开展一个流媒体项目。

我将VLC作为服务器运行,将mp4(h264 / aac)RTSP流传输到Flumotion服务器(基于gstreamer)。

我认为这是VLC(基于Live555)和Flumotion(基于GStreaemer)之间的兼容性问题,或者用于接收RTSP流的管道是错误编写的。

这是flumotion使用的管道,需要修复(rtsp.py第44-49行):

return ("rtspsrc name=src location=%s ! decodebin name=d ! queue "
        " ! %s ffmpegcolorspace ! video/x-raw-yuv "
        " ! videorate ! video/x-raw-yuv,framerate=%d/%d ! "
        " @feeder:video@ %s ! @feeder:audio@"
        % (location, scaling_template, framerate[0],
           framerate[1], audio_template))

编辑: 问题是flumotion中的RTSP-Producer组件无法从VLC流中恢复任何数据。没有错误,没有任何错误,只是保持“醒来”状态。

我尝试了flumotion使用的GStreamer管道的一些变体但无法使其工作。

我在StackOverflow中发现许多类似未解决的问题,这让我觉得这是一个兼容性问题

我不是gst-piper!所以请帮助我摆脱这场斗争。

1 个答案:

答案 0 :(得分:0)

好的,现在, 因为这个命令正在运行(通常):

gst-launch playbin uri="rtsp://127.0.0.1:8554/live"

我决定不存在兼容性问题! 并且使用'rtspdecodebin'而不是'rtspsrc'和'decodebin'来解决问题

所以最后我在rtsp.py ::

中修改了它
return ("uridecodebin name=d uri=%s ! queue "
        " ! %s ffmpegcolorspace ! video/x-raw-yuv "
        " ! videorate ! video/x-raw-yuv,framerate=%d/%d ! "
        " @feeder:video@ %s ! @feeder:audio@"
        % (location, scaling_template, framerate[0],
           framerate[1], audio_template))

现在它有效! (大多数时候)它可能与流或QoS有关......