VisioForge

.NET KLV / MISB 元数据 SDK

从 MPEG-TS 读取 KLV 遥测数据,解码 MISB ST 0601 元素,并在保留元数据的同时录制或转发实时 MISB 视频流 — 全部使用 C# 和 .NET。

每年 €500 起 · Lifetime 许可证 €1,500 起

什么是 KLV 和 MISB

KLV(Key-Length-Value,SMPTE ST 336)是无人机、ISR 和监控系统用来随视频传输遥测数据的二进制编码:时间戳、平台和传感器的位置与姿态,以及画面中心的地理位置。MISB ST 0601(UAS Datalink Local Set)定义了这些字段,MISB / STANAG 4609 流将它们作为 MPEG-TS 中独立的元数据流传输。

SDK 如何处理 KLV

VisioForge 有两款 SDK 支持 KLV:Media Blocks SDK 在 Windows、Linux 和 macOS 上处理 MPEG-TS 文件中的 KLV;Video Capture SDK 在 Windows 上将 IP 摄像机或 UDP 源的实时 KLV 传入录制文件或转发流。

  • 提取:MPEGTSDemuxBlock 在 MetadataOutput 引脚上输出 MPEG-TS 文件的元数据流,KLVFileSinkBlock 将 KLV 数据包写入 .klv 文件
  • 解码:KLVParser 读取 MISB ST 0601 本地集元素 — 超过 90 个,从精确时间戳到传感器和画面中心坐标 — 并处理 MISB 使用的 BER 编码长度
  • 嵌入(Media Blocks):MPEGTSSinkSettings.Metadata 接受由 .klv 文件或字节数组创建的 KLVMetadata 对象;它作为单个静态负载复用,而不是逐帧带时间戳的轨道
  • 录制和转发实时 KLV(Video Capture SDK,Windows):MPEGTSOutput.KLVEnabled 将源中的 KLV 复用到 MPEG-TS 文件,FFMPEGEXEOutput.KLVEnabled 在 MPEG-TS、RTP MPEG-TS 和 HLS 输出中携带 KLV(录制到文件时还需设置 UsePipe)
  • 读取实时数据包:OnDataFrameBuffer 事件逐个传递 KLV 数据包及其大小和时间戳(DataFrameType.KLV)

代码示例

精简自 KLV Demo 和 ip-camera-klv-mpegts-recorder 示例。

从 MPEG-TS 文件提取 KLV 并解码 MISB ST 0601

C#

将实时 MISB 视频流连同 KLV 录制为 MPEG-TS

C#

管线

在 Media Blocks SDK 中,KLV 提取由文件源、MPEG-TS 解复用器和 KLV 文件接收器三个模块完成,随后由 KLVParser 解码 .klv 文件。解复用器的视频和音频引脚可以同时连接渲染器或编码器。

BasicFileSourceBlock
MPEGTSDemuxBlock
KLVFileSinkBlock
KLVParser