Image by ArthurHidden on Freepik
Introduction
Nowadays, systems that can manage video metadata effectively across multiple platforms are in high demand. Data included in video files has become a valuable asset in a variety of businesses, particularly in surveillance and reconnaissance systems.
Taking this potential for innovative approaches into mind, RidgeRun expanded their range of metadata processing products with libMISB. RidgeRun's expertise in embedded systems and video processing has resulted in this product, which provides a robust and customizable solution for developers looking to utilize the potential of MISB standards. LibMISB is a library developed by RidgeRun that allows you to add MISB compliant metadata to your MPEG-TS stream.
Whether you're a developer working on intelligence, surveillance, and reconnaissance (ISR) systems or just interested about the topic, we encourage you to keep reading to explore how simple libMISB is to use and how anybody can easily add metadata to their video streams using the MISB specification.
What is MISB?
The Motion Imagery Standards Board (MISB) is an organization derived from the National Geospatial-Intelligence Agency (NGA), that establishes motion imagery standards, with a focus on video data gathered by ISR systems. The fundamental purpose of MISB is to assure interoperability and compatibility among various systems and platforms for capturing, processing, and distributing motion imaging data.
Metadata is an important component of MISB standards. In this context, metadata is all about the additional and critical information that a video can contain such as dates, timestamps, geolocation, sensor parameters, time synchronization, and platform information. The MISB standard defines the format and layout of this metadata, ensuring consistency and compatibility across systems. This standardized metadata helps users to reliably evaluate and understand video data produced by various systems.
What is libMISB?
LibMISB is a library that supports the encoding and decoding of motion imagery metadata compliant with MISB standards. LibMISB currently supports the MISB Standard 0601, which deals specifically with the management of metadata generated by Unmanned Air Systems (UAS). This means that libMISB currently supports handling motion imagery data through the very low overhead and in-band metadata Key-Length-Value (KLV) protocol. LibMISB is not limited to this standard however, as new or different standards can be easily supported on request by the customer.
Why LibMISB?
Wondering why to choose LibMISB? Here is why:
Standards compliance: LibMISB complies to the MISB's rigorous standards, ensuring compatibility and interoperability with other systems and applications that use MISB compliant video data.
Comprehensive functionality: LibMISB provides an extensive range of functionality, allowing clients to seamlessly integrate and analyze Motion Imagery Standards Board (MISB) compliant video data in their products.
Extensible: LibMISB can easily be extended to implement other MISB standard.
Flexibility and portability: LibMISB is not specific to any platform. It also has been tested successfully on x86 and ARM platforms running GNU/Linux, for example.
Expert support: RidgeRun provides detailed documentation, including examples and usage guidelines, to help businesses easily integrate libMISB into their products. RidgeRun also provides timely and professional technical support to help customers resolve difficulties or answer inquiries.
Potential Industries
MISB definitions are not limited to the defense industry. In fact, these technologies can have more universal applications across many other industries, whether the video metadata represents strategic coordinates gathered by an UAS or geolocation data from an inspection drone in an extensive plantation, the underlying data transport mechanism remains the same. A list (but not limited to) of potential industries is enumerated below:
Defense and Intelligence
Surveillance and Security
Aviation and Aerospace
Industrial Automation
Telecommunications
Agriculture
Media and entertainment
How Can libMISB Be Used Then?
Currently RidgeRun offers the libMISB library and its companion GStreamer plugin: GstMISB. The libMISB library offers a wide range of functionality: file formatting, encoding and decoding of video metadata. While the GstMISB plugin currently implements 4 elements: a source element, a sink element, an encoder and a decoder.
Usage example
To showcase the possibilities of the libMISB framework, we will use the project's sample GStreamer plugin: GstMISB. We'll show a simple network streaming example to simulate a wireless data link between a ground monitor station and a camera drone for example.
The hardware and software setup utilized for the proposed idea demonstration in this section is shown below:
Google Coral (NXP i.MX8M based developer kit)
Mendel Linux
GStreamer 1.14.4
GstPerf (to measure frame rate or CPU load)
For the sake of simplicity, the sender pipeline (drone) is built such that it works on the application layer through UDP directly. The sample MISB metadata is wrapped with the video stream inside the MPEG-TS media container using the KLV protocol. On the receiver end (ground monitor) the media stream is retrieved through the WLAN link. In the next stage, the metadata is extracted from the Transport Stream which allows it to be decoded and then presented on screen as human readable information. This metadata could be saved in a text application or taken as input for an user application. This functionality is illustrated in Figure 1.
Some of the sample pipelines shown below are executed using GSTD for simplicity. If you are interested in learning how GSTD works and how to easily run GStreamer pipelines while changing its properties on the fly, please visit our GStreamer Daemon page.
The sender GStreamer pipeline is defined as follows. Notice the simplicity of use of this MISB library implementation, where sending, receiving, encoding and decoding MISB metadata is a matter of using the corresponding elements.
gst-client pipeline_create testpipe videotestsrc name=source is-live=true pattern=ball ! 'video/x-raw,format=(string)I420,width=(int)640,height=(int)480,framerate=(fraction)30/1' ! x264enc name=encoder ! 'video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline'! h264parse name=parser ! queue ! mpegtsmux name=mux ! udpsink host=<host-ip-address> port=5000 misbsrc name=src ! 'meta/x-klv' ! mux.
For the metadata generation in this demonstration, the pipeline takes pre-generated JSON files and encodes this information into KLV protocol packages to be sent along the video stream through the network. The following GSTD script reads each JSON file and changes the misbsrc property to send the new metadata every second for 1 minute.
# Sending 1 minute of metadata
for i in {1..60}
do
echo meta$i.json
gst-client element_set testpipe src json-metadata-path "metadata/meta$i.json"
sleep 1
done
sleep 2
gst-client pipeline_stop testpipe
gst-client pipeline_delete testpipe
To receive the video stream plus the metadata, the receiver end runs the following pipeline:
gst-launch-1.0 udpsrc port=5000 ! tsdemux name=demux demux. ! queue ! h264parse ! avdec_h264 ! perf ! xvimagesink sync=false demux. ! queue ! 'meta/x-klv' ! misbsink print-metadata=true
Figures 2 and 3 show the expected output metadata once is decoded and shown on the standard output. This format corresponds to the MISB 0601 standard.
INFO Formatted data generated
Received metadata:
Precision Time Stamp: _________________ nov. 08, 2022. 17:29:12.958
Mission ID: ___________________________ MISSION01
Platform Tail Number: _________________ AF-101
Platform Heading Angle: _______________ 45,000687
Sensor Latitude: ______________________ 9,912739
Sensor Longitude: _____________________ -84,002746
Sensor True Altitude: _________________ 82,322423
UAS Datalink LS Version Number: _______ 17
Figure 3. Format of output metadata printed to the standard output.
Closing Thoughts
To summarize, in order to effectively implement MISB standards, developers can rely on software products such as RidgeRun's libMISB and GstMISB. These libraries contain pre-built functionality and components for encoding, decoding, and processing MISB-compliant video data, making it easier for developers to incorporate MISB standards into their applications and systems and thus boost product time to market.
What’s Next?
Find out more in our developer's wiki:
For technical questions or to ask for an evaluation (free of charge) version of the plugin please send an email to support@ridgerun.com or send a message through https://www.ridgerun.com/contact.