【问题标题】:Pipeline Gstreamer RTSP file sinking with big delay管道 Gstreamer RTSP 文件下沉有很大延迟
【发布时间】:2019-08-09 09:29:10
【问题描述】:

我在 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 毫秒(毫秒)

如果我删除autovideosink 的结尾sync=false,它会延迟显示 2 秒

现在我想在文件上同步 RTSP 流。起初我在/tmp中通过mkfifo file.ts创建了一个管道,然后使用:

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.138:554/axis-media/media.amp ! rtph264depay ! mpegtsmux ! filesink location=file.ts

它可以正确同步 RTSP 与 ts 格式和 h264 编解码器。我可以使用mplayer file.tsgst-play-1.0 file.ts 成功播放它,但有2 秒 延迟!

我尝试使用sync=falseautovideosink,但出现错误或不起作用。

如何减少文件下沉的延迟?
谢谢

【问题讨论】:

    标签: delay gstreamer-1.0 mkfifo rtsp-client


    【解决方案1】:

    经过大量搜索,我发现了问题 Gstreamer 官方文档中 Jitter Buffer 的默认值是 200 毫秒,但实际上是 2 秒。

    “延迟”guint jitterbuffer 的最大延迟。数据包将最多保留在缓冲区中。 标志:读/写 默认值: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 毫秒的延迟,因此命名管道不是实时应用的好解决方案。

    【讨论】:

    • Amir,您能否详细说明 mkfifo 的 400 毫秒延迟?那么您是如何设法避免使用命名管道的呢?
    • 我已经找到了解决引入的延迟问题的方法(至少对我有用)。使用fdsink 而不是filesink
    猜你喜欢
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2012-11-03
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    相关资源
    最近更新 更多