我在RTSP上用Gstremer准备了一个IP摄像头,它似乎是在线和实时的,命令如下:
gst-launch-1.0 rtspsrc location=rtsp://192.168.1.138:554/axis-media/media.amp ! rtph264depay ! decodebin ! videoconvert ! autovideosink sync=false对于显示大约40 ms(毫秒)的来说,这是非常好的和延迟的。
如果我删除sync=false末端的autovideosink,它显示的是2秒延迟。
现在我希望同步RTSP流在一个文件上。首先,我用mkfifo file.ts在/tmp中创建一个管道,然后使用:
gst-launch-1.0 rtspsrc location=rtsp://192.168.1.138:554/axis-media/media.amp ! rtph264depay ! mpegtsmux ! filesink location=file.ts它与ts格式和h264编解码器正确同步。我可以成功地与mplayer file.ts或gst-play-1.0 file.ts玩它,但有2秒延迟!
我尝试使用sync=false或autovideosink,但是我得到了错误,或者没有效果。
如何减少文件下沉的延迟?
谢谢
发布于 2019-08-16 09:20:38
经过大量的搜索,我发现官方Gstreamer文档中Jitter缓冲区的问题缺省值是200 is,但实际上是2秒。
“延迟”是jitterbuffer的最大延迟。这一次,数据包最多只能保存在缓冲区中。标志:读/写默认值: 200 这里
所以我可以通过命令将延迟增加到400毫秒:
gst-launch-1.0 rtspsrc latency = 0 location=rtsp://192.168.1.138:554/axis-media/media.amp ! rtph264depay ! mpegtsmux ! filesink location=file.ts另外,对于mkfifo也是400 is的延迟,因此命名管道不是好的解决方案的实时应用。
https://stackoverflow.com/questions/57427161
复制相似问题