Skip to main content

概述

qtiredissink 是一个 GStreamer sink 元素,通过 Redis Pub/Sub 将基于文本的管道输出实时发布到 Redis 服务器。它接受来自上游元素的 text/x-raw 缓冲区,并将每个缓冲区作为消息转发到配置的 Redis 频道。 它专为媒体和 AI 管道设计,用于将机器学习结果、分析输出或序列化元数据以最少的集成工作交付给后端系统、仪表板或分布式消费者。 支持的负载类型:
  • 机器学习元数据 — 检测/分类结果、跟踪信息
  • 应用程序生成的消息或序列化的自定义数据
  • JSON 或其他序列化文本负载
qtiredissink 在内部管理 Redis 连接和发布,减少了将 GStreamer 管道与 Redis 消息桥接所需的应用逻辑。 核心能力:
  • Redis 连接 — 使用可配置的主机和端口连接到 Redis 服务器,支持可选的身份验证
  • 基于频道的发布 — 将每个传入的缓冲区发送到选定的 Redis Pub/Sub 频道
  • 实时数据转发 — 元数据或文本输出一到达即发布
  • qtiredissink 是一个 sink 元素 — 它终止管道分支。
  • 它只接受 text/x-raw 输入;不适用于原始音频或视频传输。
  • 消息仅投递给当前已连接的订阅者,不会保留以供后续投递。
  • 发布前必须配置有效的 channel
qtiredissink_arch

示例管道

1

下载所需文件

2

将文件复制到设备

3

连接到设备

4

设置环境变量

在设备上运行以下命令
5

运行管道

层级结构

GObject
   GstObject
      GstElement
         GstBaseSink
            qtiredissink

Pad 模板

sink

元素属性

内部架构与消息模型

qtiredissink 连接到配置的 Redis 主机和端口(支持可选身份验证),读取每个传入的 text/x-raw 缓冲区,并使用 Redis 的 PUBLISH 命令将其内容发布到指定频道。 由于它使用 Pub/Sub,消息仅实时投递给当前已连接的订阅者,不会保留以供后续投递。这使得该元素适合实时元数据和事件分发,而非持久化存储。

自定义负载支持

qtiredissink 可以传输任何自定义文本或序列化负载,只要它是 text/x-raw。这适用于:
  • 序列化为文本的传感器或遥测数据
  • 应用特定的元数据,例如 JSON
  • 事件通知和状态消息
  • IMSDK 原生不支持的任何 AI 元数据

用法

继续之前,请确保已完成前提条件

带视频叠加和 Redis 元数据流传输的 AI 管道

该管道对离线视频执行目标检测。推理结果由 qtimetamux 以元数据的形式附加到每一帧,由 qtimlmetaparser 转换为 JSON,并由 qtiredissink 发布到 Redis 频道。同时,视频流继续进入显示路径,在屏幕上渲染检测叠加层。这将元数据分发与视频渲染分离开来,使外部应用能够通过 Redis 独立于所显示的视频来消费实时推理结果。 qtiredissink_arch
使用 Redis CLI 监听发布的数据:

元数据直接流式传输到 Redis 的 AI 管道

该管道对离线视频执行目标检测。解码后的帧经过推理和后处理阶段,生成结构化文本形式的检测结果。该输出直接由 qtiredissink 消费,将推理元数据发布到 Redis 频道 — 不包含任何视频叠加或显示路径。 qtiredissink_arch
使用 Redis CLI 监听发布的数据: