I open-sourced a GStreamer plugin suite for KLV metadata workflows
Source: Dev.to

I recently open‑sourced a GStreamer plugin suite for practical KLV metadata workflows in MPEG‑TS pipelines.

What the project includes
The current plugin suite provides four main elements:
klvmetaenc: converts JSON intometa/x-klvklvmetadec: convertsmeta/x-klvback into JSONklvframeinject: injects KLV metadata in sync with H.264 / H.265 video framestspmtrewrite: rewrites MPEG‑TS PMT tables for KLVA metadata signaling
Technical scope
The implementation targets workflows related to:
- SMPTE ST 336 KLV
- MISB ST 0601.8 UAS Datalink Local Set
- STANAG 4609‑style transport pipelines
- MPEG‑TS metadata signaling aligned with MISB ST 1402 workflows
Why I built it
In many practical systems, metadata handling does not stop at parsing or serializing a payload. It also needs to be transported correctly, synchronized with video, and integrated in a way that is usable in real pipelines.
The goal of this project was to provide a modular GStreamer‑oriented solution that covers that full path, from metadata generation and decoding to frame‑synchronous injection and transport‑stream signaling.
Tooling and repository contents
The repository includes more than just the plugin implementation. It also provides:
- Meson as the recommended build system
- CMake support as an alternative build path
- Python and C++ examples
- Local round‑trip examples
- UDP and SRT workflow examples
- Automated tests
- Docker support
- Installation and packaging documentation
- Design notes and implementation details
Current elements
klvmetaencklvmetadecklvframeinjecttspmtrewrite
Typical use cases
This plugin suite can be useful in scenarios such as:
- Video pipelines carrying synchronized metadata
- MPEG‑TS workflows requiring embedded KLV
- ISR/UAS‑style metadata transport
- Experimentation with GStreamer metadata integration
- Interoperability testing with downstream systems and external analyzers
Open‑source repository
You can find the project here:
https://github.com/mkassimi98/gstklvplugin
I also shared a short overview on LinkedIn:
https://www.linkedin.com/posts/mouhsine-kassimi-farhaoui-983738163_opensource-gstreamer-klv-activity-7441931945174978560-mxpJ
Feedback welcome
Feedback is very welcome, especially regarding:
- Element and API design
- Caps and negotiation choices
- MPEG‑TS metadata signaling approach
- Interoperability expectations
- General improvements for robustness and maintainability
If you are working on GStreamer, KLV, MPEG‑TS, or metadata transport workflows, I would be glad to hear your thoughts.