我正在从VIRB 360摄像机访问RTSP
视频流。我可以使用以下gstreamer
命令播放视频流:
gst-launch-1.0 -v playbin uri=rtsp://192.168.0.1/livePreviewStream?maxResolutionVertical=720\&liveStreamActive=1
但是,流中存在3秒延迟,需要消除。上述命令的输出(由于[C0])已上载-v
。我还按照此here中描述的方法为管道创建了一些.svg
文件。这些文件已上传question/ answer。我相信here和mypipeline4.svg
代表了完整的管道(多个mypipeline5.svg
文件是由单个管道生成的,这就是多个dot
文件的原因)。在.svg
文件中,可以在.svg
下看到一个latency=2000
。
该计划是通过手动添加组件而不是使用rtpjitterbuffer
来构建相同的管道,然后为playbin
设置延迟属性。我已经尝试了以下命令:
1)rtpjitterbuffer
2)gst-launch-1.0 rtspsrc location=rtsp://192.168.0.1/livePreviewStream?maxResolutionVertical=720\&liveStreamActive=1 ! udpsrc ! rtpsession ! rtpssrcdemux ! rtpjitterbuffer ! rtpptdemux ! queue ! udpsink ! queue ! rtph264depay ! h264parse ! omxh264dec ! playsink
但是,在两种情况下,我都收到一个错误:gst-launch-1.0 rtspsrc location=rtsp://192.168.0.1/livePreviewStream?maxResolutionVertical=720\&liveStreamActive=1 ! udpsrc ! rtpsession ! rtpssrcdemux ! rtpjitterbuffer ! rtpptdemux ! queue ! udpsink ! queue ! rtph264depay ! h264parse ! omxh264dec ! nvoverlaysink
如何解决此问题?而且,从我的实验中,我很确定管道的其余部分也有错误。如何优化该管道?
首先,您不应将任何东西连接到GStreamer中的接收器。接收器是该行的结尾,应该只接收数据。特别是udpsink将UDP数据包发送到网络。在文档中查看更多信息:
WARNING: erroneous pipeline: could not link udpsink0 to queue1.
我也在努力减少延迟,到目前为止,我得到的最好成绩是:
https://gstreamer.freedesktop.org/documentation/udp/udpsink.html?gi-language=c
我在相机应用程序中有150ms的延迟,但我想减少它。
希望对您有帮助;)