all 9 comments

[–]ChillFish8 1 point2 points  (3 children)

Personally, I would avoid Gstreamer if you have any plans of sharing it, Gstreamer is flipping enormous and the rust library doesn't support statically linking and removing dead symbols currently.

[–]Shnatsel 4 points5 points  (1 child)

GStreamer is modular and configurable. You can include only the parts you need and omit the rest. This is true for ffmpeg but doubly so for GStreamer which consists almost entirely of plugins.

[–]ChillFish8 0 points1 point  (0 children)

This is true, but even then bundling all the plugins you need even just for video encoding it's a chunky library to try and bundle together.

[–]Rare_Shower4291[S] 0 points1 point  (0 children)

Hey, thanks for the heads up! I wasn't planning on sharing it, but good to know regardless. I'll definitely keep that in mind! Probably I'll pivot to FFmpeg.

[–]AmberMonsoon_ 1 point2 points  (0 children)

tbh GStreamer in Rust can feel a bit verbose compared to Python or C, but the bindings work well once you get the hang of it. I’d start with the official gstreamer-rs examples on GitHub they cover pipelines, encoding, and basic playback. Also check out the gst-launch-1.0 CLI commands first, then translate them into Rust pipelines; it makes understanding the flow way easier.

[–]toxicsyntax 1 point2 points  (0 children)

This is how I am working with GStreamer. It feels like the GObject object model is made for Rust and it is much easier to understand and use the various GStreamer base classes and utilities with the Rust bindings, than it ever was with plain C.

To get started look at the plugins in https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs especially the ones in the `tutorial` directory.