我对Gstreamer非常陌生。
我需要编写一个视频客户端,可以使用GStreamer从RTSP源流数据。我将VLC配置为使用RTSP对我笔记本上的视频进行流,我希望创建一个管道来获取该流并显示它。我试着使用playbin,一切都很好。关键是我需要微调播放视频所用的延迟,但是似乎我不能用播放桶来完成这个任务。
我尝试了rtspsrc,因为它允许在延迟上工作,但是我不知道如何在任何窗口上显示视频。这就是我创建的管道:
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test latency=300 ! decodebin ! autovideosink我得到的错误“流任务暂停,原因没有-谈判(-4)”。
在互联网上深入观察后,我尝试了不同的管道,但我肯定错过了一些东西。我如何写一个gstreamer管道来显示来自RTSP的视频?
最后的目标是有一个至少在延迟方面可以调整的管道,所以我有两个选择:
我使用Xubuntu16.04,gstreamer 1.0(也使用0.10 ),视频I流与VLC有mp4扩展。
发布于 2017-05-24 14:53:04
您可以通过设置正确的属性和使用playbin组件来调整延迟:
gst-launch-1.0 -v playbin uri=rtsp://localhost:8554/test uridecodebin0::source::latency=300希望您能找到有用的信息:)
发布于 2019-11-06 09:16:50
假设rtsp流是h264格式,使用显式h264解码器和编码器解析流。使用视频转换和视频尺度来改变帧的形状。
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test latency=100 ! queue ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=480 ! autovideosink发布于 2017-05-24 15:18:36
上次我检查时,playbin确实有一个latency选项。请注意,它的规模与rtspsrc的不同。rtspsrc以毫秒为单位,而playbin为纳秒。它仍然可能不会低于某个阈值-取决于输入视频需求(vbv缓冲区限制)。
对于您的rtspsrc管道,您可能在videoconvert或autovideosonvert元素之前遗漏了一个autovideosink元素。
https://stackoverflow.com/questions/44160118
复制相似问题