8 releases (4 breaking)
Uses new Rust 2021
|0.9.1||Nov 13, 2022|
|0.9.0||Oct 24, 2022|
|0.8.0||Jan 16, 2022|
|0.7.2||Aug 30, 2021|
|0.0.0||Apr 4, 2020|
#248 in Cryptography
40 downloads per month
The plugins build upon the GStreamer Rust bindings. Check the README.md of that repository also for details about how to set-up your development environment.
You will find the following plugins in this repository:
file: A Rust implementation of the standard
fmp4: A fragmented MP4/ISOBMFF/CMAF muxer for generating e.g. DASH/HLS media fragments.
sodium: Elements to perform encryption and decryption using libsodium.
threadshare: Some popular threaded elements reimplemented using common thread-sharing infrastructure.
hlssink3: An element for generating MPEG-TS HLS streams.
reqwest: An HTTP source element based on the reqwest library.
aws: Various elements for Amazon AWS services using the AWS SDK library
s3sink: A source and sink element to talk to the Amazon S3 object storage system.
s3hlssink: A sink element to store HLS streams on Amazon S3.
aws_transcriber: an element wrapping the AWS Transcriber service.
raptorq: Encoder/decoder element for RaptorQ RTP FEC mechanism.
audiofx: Elements to apply audio effects to a stream
claxon: A FLAC decoder based on the Claxon library.
csound: A plugin to implement audio effects using the Csound library.
lewton: A Vorbis decoder based on the lewton library.
cdg: A parser and renderer for CD+G karaoke data.
closedcaption: Plugin to deal with closed caption streams
ccdetect: Detects if a stream contains active Closed Captions.
cea608overlay: Overlay CEA-608 / EIA-608 closed captions over a video stream.
cea608tojson: Convert CEA-608 / EIA-608 closed captions to a JSON stream.
cea608tott: Convert CEA-608 / EIA-608 closed captions to timed text.
jsontovtt: Convert JSON to timed text.
mccenc: Convert CEA-608 / EIA-608 and CEA-708 / EIA-708 closed captions to the MCC format.
mccparse: Parse CEA-608 / EIA-608 and CEA-708 / EIA-708 closed captions from the MCC format.
sccenc: Convert CEA-608 / EIA-608 closed captions to the MCC format.
sccparse: Parse CEA-608 / EIA-608 closed captions from the MCC format.
transcriberbin: Convenience bin around transcriber elements like
tttocea608: Convert timed text to CEA-608 / EIA-608 closed captions.
tttojson: Convert timed text to JSON.
dav1d: AV1 decoder based on the dav1d library.
ffv1: FFV1 decoder based on the ffv1 library.
flavors: FLV demuxer based on the flavors library.
gif: A GIF encoder based on the gif library.
gtk4: A GTK4 video sink that provides a
GdkPaintablefor UI integration.
hsv: Plugin with various elements to work with video data in hue, saturation, value format
hsvdetector: Mark pixels that are close to a configured color in HSV format.
hsvfilter: Apply various transformations in the HSV colorspace.
png: PNG encoder based on the png library.
rav1e: AV1 encoder based on the rav1e library.
videofx: Plugin with various video filters.
roundedcorners: Element to make the corners of a video rounded via the alpha channel.
colordetect: A pass-through filter able to detect the dominant color(s) on incoming frames, using color-thief.
webp: WebP decoder based on the libwebp-sys-2 library.
ahead: A plugin to display upcoming text buffers ahead.
json: A plugin to convert a stream of JSON objects to a higher level wrapped NDJSON output.
regex: A regular expression text filter plugin.
wrap: A plugin to perform text wrapping with hyphenation.
fallbackswitch: An element that allows falling back to different sink pads after a timeout based on the sink pads' priorities.
fallbacksrc: Element similar to
urisourcebinthat allows configuring a fallback audio/video if there are problems with the main source.
togglerecord: Element to enable starting and stopping multiple streams together.
tracers: Plugin with multiple tracers:
buffer-lateness: Records lateness of buffers and the reported latency for each pad in a CSV file. Contains a script for visualization.
pipeline-snapshot: Creates a .dot file of all pipelines in the application whenever requested.
queue-levels: Records queue levels for each queue in a CSV file. Contains a script for visualization.
uriplaylistbin: Helper bin to gaplessly play a list of URIs.
gst-plugins-rs relies on cargo-c to generate shared and static C libraries. It can be installed using:
$ cargo install cargo-c
Then you can easily build and test a specific plugin:
$ cargo cbuild -p gst-plugin-cdg $ GST_PLUGIN_PATH="target/x86_64-unknown-linux-gnu/debug:$GST_PLUGIN_PATH" gst-inspect-1.0 cdgdec
x86_64-unknown-linux-gnu with your system's Rust target triple (
The plugin can also be installed system-wide:
$ cargo cbuild -p gst-plugin-cdg --prefix=/usr $ cargo cinstall -p gst-plugin-cdg --prefix=/usr
This will install the plugin to
You can use
--libdir to pass a custom
/usr/lib/x86_64-linux-gnu for example.
Note that you can also just use
cargo directly to build Rust static libraries
and shared C libraries.
cargo-c is mostly useful to build static C libraries
In case cargo complains about dependency versions after a
cargo update may
be able to resolve those.
gst-plugins-rs and all crates contained in here are licensed under one of the following licenses
- Mozilla Public License Version 2.0 (LICENSE-MPL-2.0 or http://opensource.org/licenses/MPL-2.0)
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Lesser General Public License (LICENSE-LGPLv2) version 2.1 or (at your option) any later version
GStreamer itself is licensed under the Lesser General Public License version 2.1 or (at your option) any later version: https://www.gnu.org/licenses/lgpl-2.1.html
Any kinds of contributions are welcome as a merge request.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in gst-plugins-rs by you shall be licensed under the license of the plugin it is added to.
For new plugins the MPL-2 license is preferred.