我有一个GStreamer管道从RTSP源播放实时视频。我希望用户能够增加/减少延迟。我的做法是有一个queue
元素并操纵其min-threshold-time
参数。Gstreamer:动态增加和减少延迟
这似乎开始工作。例如延迟10秒,管道开始冻结,并在10秒后继续。但如果我操纵时间,没有任何反应。我也尝试了其他参数,例如max-size-time
,但没有运气。 leaky
参数会导致视频不稳定且质量不佳。
目前我正在停止并重新启动管道,这看起来很糟糕。
管道我使用:
gst-launch-1.0 rtspsrc location=<...> ! rtph264depay ! h264parse ! capsfilter caps=video/x-h264 ! avdec_h264 ! videoconvert ! queue min-threshold-delay=<delay> ! autovideosink
是否有一个命令来强制队列冲洗框架,其他的一些元素更适合,或者一些其他技巧来做到这一点?
暂停更改参数和播放怎么样?我不确定是否动态更改元素参数只需设置参数即可使用 - 也许您将不得不做一些填充块阻塞等,就像您[动态改变管道]时一样(http://gstreamer.freedesktop.org /data/doc/gstreamer/head/manual/html/section-dynamic-pipelines.html) – nayana
@otopolsky:您的建议是一项改进。暂停和重新播放的确能起作用,但是当延迟时间减少时,什么都不会发生。 –
很高兴能有所帮助,你的解决方案是相当先进的使用延迟事件..很好地完成 – nayana