我正在开展一个流媒体项目。
我将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!所以请帮助我摆脱这场斗争。
答案 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有关......