// the find
sdroege/gstreamer-rs
GStreamer bindings for Rust - This repository moved to https://gitlab.freedesktop.org/gstreamer/gstreamer-rs
Safe Rust bindings for GStreamer, the C multimedia framework. These are the official bindings, maintained as part of the GStreamer project itself, not a third-party wrapper. If you're building a media pipeline in Rust — transcoding, streaming, capture, playback — this is the path that isn't going to be abandoned.
The bindings are autogenerated from GObject-Introspection metadata, which means API coverage tracks upstream GStreamer releases rather than waiting for someone to hand-write wrappers. The subclass support is genuinely good — you can implement custom GStreamer elements in safe Rust, including virtual function overrides, which is not a trivial thing to expose. The examples directory covers AppSrc/AppSink, RTSP servers, DMA-BUF allocators, Vulkan filters, and more — enough to get past the 'how do I even start' phase. The ABI test suite (layout.c, abi.rs) validates struct sizes and constant values against the actual C headers, catching binding drift before it ships.
This GitHub repo is a mirror — the real project lives on GitLab (freedesktop.org) and has for years. Issues filed here go nowhere, and the GitHub star count (592) dramatically understates actual adoption. New contributors routinely show up here and get confused. The setup story on Windows is genuinely painful: you need two separate MSI installers, the right pkg-config in PATH, and the MSVC vs MinGW toolchain alignment has burned people before. GStreamer itself has a steep conceptual ramp — pads, caps, negotiation, buffer lifecycles — and the Rust API surface inherits all of that complexity; the docs point you back to the C application development manual, which is accurate but not great. The six-month release cadence tied to GNOME means you're waiting up to half a year for new GStreamer APIs to land in stable crates.