如何使用 gstreamer 从 HLS 流中获取 EXT-X-PROGRAM-DATE-TIME?

问题描述 投票:0回答:1

我有成功读取 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(流开始的时间戳),但我需要计算流开始时的确切日期时间。

gstreamer http-live-streaming
1个回答
0
投票

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 的嵌入式软件开发工程师

联系我们:[email protected]
网址:https://www.ridgerun.com

© www.soinside.com 2019 - 2024. All rights reserved.