{"id":13906417,"url":"https://github.com/sdroege/gstreamer-rs","last_synced_at":"2025-05-14T12:06:43.519Z","repository":{"id":41170437,"uuid":"91088829","full_name":"sdroege/gstreamer-rs","owner":"sdroege","description":"GStreamer bindings for Rust - This repository moved to https://gitlab.freedesktop.org/gstreamer/gstreamer-rs","archived":false,"fork":false,"pushed_at":"2025-05-13T08:27:50.000Z","size":43183,"stargazers_count":544,"open_issues_count":0,"forks_count":65,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-05-13T09:34:37.383Z","etag":null,"topics":["bindings","gnome","gstreamer","multimedia","rust"],"latest_commit_sha":null,"homepage":"https://gitlab.freedesktop.org/gstreamer/gstreamer-rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sdroege.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-05-12T12:22:18.000Z","updated_at":"2025-05-11T19:22:07.000Z","dependencies_parsed_at":"2024-06-02T10:46:34.760Z","dependency_job_id":"f4fb3f6c-fbb8-4f0e-ace5-fe96ce8f8974","html_url":"https://github.com/sdroege/gstreamer-rs","commit_stats":{"total_commits":3961,"total_committers":128,"mean_commits":30.9453125,"dds":"0.34284271648573594","last_synced_commit":"36eca7cca935f930a3dfa006688a199084f4197a"},"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdroege%2Fgstreamer-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdroege%2Fgstreamer-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdroege%2Fgstreamer-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdroege%2Fgstreamer-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdroege","download_url":"https://codeload.github.com/sdroege/gstreamer-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253918360,"owners_count":21984248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindings","gnome","gstreamer","multimedia","rust"],"created_at":"2024-08-06T23:01:35.343Z","updated_at":"2025-05-14T12:06:43.463Z","avatar_url":"https://github.com/sdroege.png","language":"Rust","funding_links":[],"categories":["HarmonyOS","Rust","Encoding \u0026 Codecs"],"sub_categories":["Windows Manager","Encoding Tools"],"readme":"# gstreamer-rs [![crates.io](https://img.shields.io/crates/v/gstreamer.svg)](https://crates.io/crates/gstreamer) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/main/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/main)\n\n[GStreamer](https://gstreamer.freedesktop.org/) bindings for Rust.\nDocumentation can be found [here](https://gstreamer.freedesktop.org/documentation/rust/stable/latest/docs/gstreamer/).\n\nThese bindings are providing a safe API that can be used to interface with\nGStreamer, e.g. for writing GStreamer-based applications and GStreamer plugins.\n\nThe bindings are mostly autogenerated with [gir](https://github.com/gtk-rs/gir/)\nbased on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/)\nAPI metadata provided by the GStreamer project.\n\n## Table of Contents\n1. [Installation](#installation)\n   1. [Linux/BSDs](#installation-linux)\n   1. [macOS](#installation-macos)\n   1. [Windows](#installation-windows)\n1. [Getting Started](#getting-started)\n1. [License](#license)\n1. [Contribution](#contribution)\n\n\u003ca name=\"installation\"/\u003e\n\n## Installation\n\nTo build the GStreamer bindings or anything depending on them, you need to\nhave at least GStreamer 1.14 and gst-plugins-base 1.14 installed. In addition,\nsome of the examples/tutorials require various GStreamer plugins to be\navailable, which can be found in gst-plugins-base, gst-plugins-good,\ngst-plugins-bad, gst-plugins-ugly and/or gst-libav.\n\n\u003ca name=\"installation-linux\"/\u003e\n\n### Linux/BSDs\n\nYou need to install the above mentioned packages with your distributions\npackage manager, or build them from source.\n\nOn Debian/Ubuntu they can be installed with\n\n```console\n$ apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \\\n      gstreamer1.0-plugins-base gstreamer1.0-plugins-good \\\n      gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \\\n      gstreamer1.0-libav libgstrtspserver-1.0-dev libges-1.0-dev\n```\n\nThe minimum required version of the above libraries is \u003e= 1.14. If you\nbuild the gstreamer-player sub-crate, or any of the examples that\ndepend on gstreamer-player, you must ensure that in addition to the above\npackages, `libgstreamer-plugins-bad1.0-dev` is installed. See the `Cargo.toml`\nfiles for the full details,\n\n```console\n$ apt-get install libgstreamer-plugins-bad1.0-dev\n```\n\nPackage names on other distributions should be similar.\nPlease submit a pull request with instructions for yours.\n\n\u003ca name=\"installation-macos\"/\u003e\n\n### macOS\n\nYou can install GStreamer and the plugins via [Homebrew](https://brew.sh/) or\nby installing the [binaries](https://gstreamer.freedesktop.org/data/pkg/osx/)\nprovided by the GStreamer project.\n\nWe recommend using the official GStreamer binaries over Homebrew, especially\nas GStreamer in Homebrew is [currently broken](https://github.com/orgs/Homebrew/discussions/3740#discussioncomment-3804964).\n\n#### GStreamer Binaries\n\nYou need to download the *two* `.pkg` files from the GStreamer website and\ninstall them, e.g. `gstreamer-1.0-1.20.4-universal.pkg` and\n`gstreamer-1.0-devel-1.20.4-universal.pkg`.\n\nAfter installation, you also need to set the `PATH` environment variable as\nfollows\n\n```console\n$ export PATH=\"/Library/Frameworks/GStreamer.framework/Versions/1.0/bin${PATH:+:$PATH}\"\n```\n\nAlso note that the `pkg-config` from GStreamer should be the first one in\nthe `PATH` as other versions have all kinds of quirks that will cause\nproblems.\n\n#### Homebrew\n\nHomebrew only installs various plugins if explicitly enabled, so some extra\n`--with-*` flags may be required.\n\n```console\n$ brew install gstreamer gst-plugins-base gst-plugins-good \\\n      gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \\\n      gst-editing-services --with-orc --with-libogg --with-opus \\\n      --with-pango --with-theora --with-libvorbis --with-libvpx \\\n      --enable-gtk3\n```\n\nMake sure the version of these libraries is \u003e= 1.14.\n\n\u003ca name=\"installation-windows\"/\u003e\n\n### Windows\n\nYou can install GStreamer and the plugins via [MSYS2](http://www.msys2.org/)\nwith `pacman` or by installing the\n[binaries](https://gstreamer.freedesktop.org/data/pkg/windows/) provided by\nthe GStreamer project.\n\nWe recommend using the official GStreamer binaries over MSYS2.\n\n#### GStreamer Binaries\n\nYou need to download the *two* `.msi` files for your platform from the\nGStreamer website and install them, e.g. `gstreamer-1.0-x86_64-1.20.4.msi` and\n`gstreamer-1.0-devel-x86_64-1.20.4.msi`. Make sure to select the version that\nmatches your Rust toolchain, i.e. MinGW or MSVC.\n\nAfter installation set the ``PATH` environment variable as follows:\n\n```console\n# For a UNIX-style shell:\n$ export PATH=\"c:/gstreamer/1.0/msvc_x86_64/bin${PATH:+:$PATH}\"\n\n# For cmd.exe:\n$ set PATH=C:\\gstreamer\\1.0\\msvc_x86_64\\bin;%PATH%\n```\n\nMake sure to update the path to where you have actually installed GStreamer\nand for the corresponding toolchain.\n\nAlso note that the `pkg-config.exe` from GStreamer should be the first one in\nthe `PATH` as other versions have all kinds of quirks that will cause\nproblems.\n\n#### MSYS2 / pacman\n\n```console\n$ pacman -S glib2-devel pkg-config \\\n      mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base \\\n      mingw-w64-x86_64-gst-plugins-good mingw-w64-x86_64-gst-plugins-bad \\\n      mingw-w64-x86_64-gst-plugins-ugly mingw-w64-x86_64-gst-libav \\\n      mingw-w64-x86_64-gst-rtsp-server\n```\n\nMake sure the version of these libraries is \u003e= 1.14.\n\nNote that the version of `pkg-config` included in `MSYS2` is\n[known to have problems](https://github.com/rust-lang/pkg-config-rs/issues/51#issuecomment-346300858)\ncompiling GStreamer, so you may need to install another version. One option\nwould be [`pkg-config-lite`](https://sourceforge.net/projects/pkgconfiglite/).\n\n\u003ca name=\"getting-started\"/\u003e\n\n## Getting Started\n\nThe API reference can be found\n[here](https://gstreamer.freedesktop.org/documentation/rust/stable/latest/docs/gstreamer/), however it is\nonly the Rust API reference and does not explain any of the concepts.\n\nFor getting started with GStreamer development, the best would be to follow\nthe [documentation](https://gstreamer.freedesktop.org/documentation/) on the\nGStreamer website, especially the [Application Development\nManual](https://gstreamer.freedesktop.org/documentation/application-development/).\nWhile being C-centric, it explains all the fundamental concepts of GStreamer\nand the code examples should be relatively easily translatable to Rust. The\nAPI is basically the same, function/struct names are the same and everything\nis only more convenient (hopefully) and safer.\n\nIn addition there are\n[tutorials](https://gstreamer.freedesktop.org/documentation/tutorials/) on the\nGStreamer website. Many of them were ported to Rust already and the code can\nbe found in the\n[tutorials](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/main/tutorials)\ndirectory.\n\nSome further examples for various aspects of GStreamer and how to use it from\nRust can be found in the\n[examples](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/main/examples)\ndirectory.\n\nVarious GStreamer plugins written in Rust can be found in the\n[gst-plugins-rs](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs)\nrepository.\n\n\u003ca name=\"license\"/\u003e\n\n## LICENSE\n\ngstreamer-rs and all crates contained in here are licensed under either of\n\n * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or\n   http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license ([LICENSE-MIT](LICENSE-MIT) or\n   http://opensource.org/licenses/MIT)\n\nat your option.\n\nGStreamer itself is licensed under the Lesser General Public License version\n2.1 or (at your option) any later version:\nhttps://www.gnu.org/licenses/lgpl-2.1.html\n\n\u003ca name=\"contribution\"/\u003e\n\n## Contribution\n\nAny kinds of contributions are welcome as a pull request.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in gstreamer-rs by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdroege%2Fgstreamer-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdroege%2Fgstreamer-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdroege%2Fgstreamer-rs/lists"}