GStreamer In-Band Metadata for MPEG Transport Stream - Examples - Demo

From RidgeRun Developer Wiki


Previous: Examples Index Next: Examples/GstLaunch






This page describes the example demo that in located in <GST_METADATA_DIR>/src/examples. This demo will create a 10 seconds TS video, including some metadata.

To generate the test video run the following commands:

cd <GST_METADATA_DIR>/src/examples
./gst-meta-demo

The expected output is the following:

$ ./gst-meta-demo 
Recording...
Stopping...

This will create a video named meta.ts. To play this video and print the included metadata, run the following pipeline:

gst-launch-1.0 -e filesrc location=meta.ts ! tsdemux name=demux demux. ! queue ! h264parse ! 'video/x-h264, stream-format=byte-stream, alignment=au' ! avdec_h264 ! videoconvert ! queue ! autovideosink demux. ! queue max-size-buffers=200 max-size-time=0 max-size-bytes=0 ! 'meta/x-klv' ! metasink

Expected output

Expected output from meta.ts


This demo uses the following pipeline:

metasrc name=src ! meta/x-klv ! mpegtsmux name=mux ! filesink location=%s videotestsrc is-live=true name=vts ! video/x-raw,width=1024,height=768,framerate=60/1 ! textoverlay name=overlay shaded-background=true ! x264enc ! mux. audiotestsrc is-live=true ! lamemp3enc ! audio/mpeg,mpegversion=1,parsed=true ! mux.

This pipeline runs in the GStreamer application, for each incoming buffer, its timestamp and buffer number are extracted to create a metadata that will be inserted in the Transport Stream file. This demo example supports 3 forms to inject metadata: push-metadata signal, binary-metadata property and metadata property.

The difference in each push method depends of the data type to be inserted as metadata, the metadata property handles strings and char arrays, the binary-metadata receives an array of bytes and the signal receives a pointer and size to the data struct to push.


Previous: Examples Index Next: Examples/GstLaunch