Jan Alexander Steffens (heftig)
In single-segment mode, the outgoing segment does not change when the incoming segment changes. We only need to resend the segment if we got flushed or deactivated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1069>
|19 hours ago|
|audio||6 days ago|
|ci||2 months ago|
|docs||4 days ago|
|generic||6 days ago|
|mux||20 hours ago|
|net||4 days ago|
|text||2 weeks ago|
|tutorial||6 days ago|
|utils||19 hours ago|
|version-helper||6 days ago|
|video||4 days ago|
|.gitignore||2 years ago|
|.gitlab-ci.yml||1 month ago|
|Cargo.toml||2 months ago|
|LICENSE-APACHE||6 years ago|
|LICENSE-LGPLv2||5 years ago|
|LICENSE-MIT||6 years ago|
|LICENSE-MPL-2.0||1 year ago|
|Makefile||4 years ago|
|README.md||2 months ago|
|cargo_wrapper.py||1 month ago|
|deny.toml||3 weeks ago|
|dependencies.py||3 months ago|
|meson.build||7 days ago|
|meson_options.txt||1 month ago|
|rustfmt.toml||10 months ago|
|update-version.sh||4 months ago|
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
sodium: Elements to perform encryption and decryption using libsodium.
threadshare: Some popular threaded elements reimplemented using common thread-sharing infrastructure.
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.
awstranscriber: an element wrapping the AWS Transcriber service.
awstranscribeparse: an element parsing the packets of the AWS Transcriber service.
hlssink3: An element for generating MPEG-TS HLS streams.
ndi: An NDI plugin containing a source, sink and device provider.
onvif: Various elements for parsing, RTP (de)payloading, overlaying of ONVIF timed metadata.
raptorq: Encoder/decoder element for RaptorQ RTP FEC mechanism.
reqwest: An HTTP source element based on the reqwest library.
rtpav1depay: RTP (de)payloader for the AV1 video codec.
rtpgccbwe: RTP bandwidth estimator based on the Google Congestion Control algorithm.
webrtc: WebRTC elements, with batteries included Sink elements for specific signalling protocols.
webrtchttp: Simple WebRTC HTTP elements (WHIP/WHEP).
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.
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.
videocompare: Compare similarity of video frames. The element can use different hashing algorithms like Blockhash, DSSIM, and others.
webp: WebP decoder based on the libwebp-sys-2 library.
flavors: FLV demuxer based on the flavors library.
fmp4: A fragmented MP4/ISOBMFF/CMAF muxer for generating e.g. DASH/HLS media fragments.
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.
livesync: Element to maintain a continuous live stream from a potentially unstable 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.