1

我正在做一个流媒体项目。

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

我认为这要么是 VLC(基于 Live555)和 Flumotion(基于 GStreamer)之间的兼容性问题,要么是用于接收 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-pipeliner !所以请帮助我摆脱这场斗争。

4

1 回答 1

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 相关......

于 2012-05-19T19:57:13.973 回答