管道 Gstreamer RTSP 文件下沉,延迟大
Pipeline Gstreamer RTSP file sinking with big delay
我在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(毫秒)。
如果我删除 autovideosink
的 sync=false
结尾,它会以 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
编解码器正确同步 RTSP。我可以用 mplayer file.ts
或 gst-play-1.0 file.ts
成功播放,但有 2 秒 延迟!
我尝试使用 sync=false
或 autovideosink
,但出现错误或无效。
如何减少文件下沉的延迟?
谢谢
经过大量搜索我发现了问题
Gstreamer 官方文档中抖动缓冲区的默认值是 200 毫秒,但实际上是 2 秒。
“latency” guint
The maximum latency of the jitterbuffer. Packets will be kept in the buffer for at most this time.
Flags : Read / Write
Default value : 200
Here
所以我可以使用命令将延迟增加到 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 毫秒的延迟,因此命名管道不是实时应用的好解决方案。
我在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(毫秒)。
如果我删除 autovideosink
的 sync=false
结尾,它会以 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
编解码器正确同步 RTSP。我可以用 mplayer file.ts
或 gst-play-1.0 file.ts
成功播放,但有 2 秒 延迟!
我尝试使用 sync=false
或 autovideosink
,但出现错误或无效。
如何减少文件下沉的延迟?
谢谢
经过大量搜索我发现了问题 Gstreamer 官方文档中抖动缓冲区的默认值是 200 毫秒,但实际上是 2 秒。
“latency” guint The maximum latency of the jitterbuffer. Packets will be kept in the buffer for at most this time. Flags : Read / Write Default value : 200 Here
所以我可以使用命令将延迟增加到 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 毫秒的延迟,因此命名管道不是实时应用的好解决方案。