我有成功读取 HLS 流的管道,我试图在 dicoverer 结构的帮助下获取标签:
tags = gst_discoverer_info_get_tags(info);
gchar * value = nullptr;
gboolean retv = gst_tag_list_get_string(tags, "EXT-X-PROGRAM-DATE-TIME", &value);
if ( value ) {
log_gst.log("EXT-X-PROGRAM-DATE-TIME: {}", value);
g_free(value);
}
但是这段代码无法检索标签。 最后,我需要能够获取当前帧的时间戳,我只能获取 PTS(流开始的时间戳),但我需要计算流开始时的确切日期时间。
EXT-X-PROGRAM-DATE-TIME HLS 标签在 GStreamer 1.22 中作为标签事件添加到 hlsdemux。
不确定您使用的是哪个 GStreamer 版本,但您可以通过迁移到 1.22 或将此功能向后移植到您的 GStreamer 版本来实现您想要的。
这是原始问题:https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/195
这是相关的合并请求:https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1417
您可以在一个简单的管道中看到这些标记事件,如下所示:
GST_DEBUG=GST_EVENT:TRACE gst-launch-1.0 souphttpsrc location=https://mtoczko.github.io/hls-test-streams/test-program-time/playlist.m3u8 ! application/x-hls ! hlsdemux ! fakesink |& grep tag
然后您可以在 GStreamer 元素或 GStreamer 应用程序中解析这些标记事件,以提取您要查找的日期时间。
英。马可埃雷拉
RidgeRun 的嵌入式软件开发工程师