【问题标题】:How to get timestamp in UTC or system time for a frame in gstreamer pipeline?如何获取gstreamer管道中帧的UTC时间戳或系统时间?
【发布时间】:2022-08-14 17:35:20
【问题描述】:

我正在使用uridecodebin 捕获实时流,并将帧输入appsink。我需要以 UTC 或系统时间记录接收到的帧的时间戳。到目前为止,我设法收到了 PTS 时间戳:

guint64 timestamp = GST_BUFFER_TIMESTAMP(buffer) 

我可以从中获得运行时间和流时间:

guint64 pos = gst_segment_to_stream_time(segment, GST_FORMAT_TIME, timestamp);
guint64 run_time = gst_segment_to_running_time(segment, GST_FORMAT_TIME, timestamp)

对于第一帧pos 始终为0,但run_time7008 ms 附近。这是为什么?我不明白那个时间是从哪里来的。

对于问题的主要部分,我如何获得可以将appsink帧与系统时间或UTC中捕获的实际时间帧尽可能接近的时间戳?

    标签: gstreamer


    【解决方案1】:

    最近几天我遇到了类似的问题。我正在寻找时间并抓取几秒钟的视频,视频流是一个以毫秒为单位的时钟,我想用同步时间装饰我的视频。我将尝试将 buffer->offset*1000/fps 添加到所述视频提取的开始时间。也许就是这样。当前使用缓冲区 pts,它是演示时间而不是记录时间。

    你有什么发现吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-29
      • 2014-11-21
      • 2012-02-28
      • 2012-11-11
      • 1970-01-01
      • 2017-12-06
      • 2015-01-08
      • 2014-03-31
      相关资源
      最近更新 更多