26 个版本

0.23.0 2024年7月11日
0.22.6 2024年6月19日
0.22.3 2024年3月19日
0.21.3 2023年12月18日
0.12.2 2018年11月26日

多媒体 中排名第 80

Download history 82/week @ 2024-04-24 51/week @ 2024-05-01 120/week @ 2024-05-08 109/week @ 2024-05-15 119/week @ 2024-05-22 133/week @ 2024-05-29 119/week @ 2024-06-05 184/week @ 2024-06-12 257/week @ 2024-06-19 90/week @ 2024-06-26 120/week @ 2024-07-03 162/week @ 2024-07-10 32/week @ 2024-07-17 168/week @ 2024-07-24 180/week @ 2024-07-31 121/week @ 2024-08-07

每月下载量 505

MIT/Apache

3.5MB
85K SLoC

gstreamer-rs crates.io pipeline status

GStreamer 编辑服务 的 Rust 绑定。文档可以在 这里 找到。

注意:GStreamer 编辑服务 API 不是线程安全的,在 1.16 版本之前,这一点在代码中没有得到适当的表达,导致即使在 rust 绑定中也可能出现数据不安全的情况。我们强烈建议您使用 GES >= 1.16 运行。

这些绑定提供了一种安全的 API,可以用来与 GStreamer 交互,例如编写基于 GStreamer 的应用程序和 GStreamer 插件。

这些绑定主要使用基于 GStreamer 项目提供的 GObject-Introspection API 元数据自动生成的,基于 gir

目录

  1. 安装
    1. Linux/BSDs
    2. macOS
    3. Windows
  2. 入门指南
  3. 许可证
  4. 贡献

安装

要构建 GStreamer 绑定或依赖于它们的任何内容,您至少需要安装 GStreamer 1.14 和 gst-plugins-base 1.14。另外,一些示例/教程需要各种 GStreamer 插件可用,这些插件可以在 gst-plugins-base、gst-plugins-good、gst-plugins-bad、gst-plugins-ugly 和/或 gst-libav 中找到。

Linux/BSDs

您需要使用您的发行版包管理器安装上述提到的软件包,或者从源代码构建它们。

在 Debian/Ubuntu 上,可以使用以下命令安装

$ apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
      gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
      gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
      gstreamer1.0-libav libgstrtspserver-1.0-dev libges-1.0-dev

上述库的最小要求版本为 >= 1.14。如果您构建 gstreamer-player 子仓或任何依赖于 gstreamer-player 的示例,您必须确保除了上述包外,还需要安装 libgstreamer-plugins-bad1.0-dev。请参阅 Cargo.toml 文件以获取详细信息。

$ apt-get install libgstreamer-plugins-bad1.0-dev

其他发行版的包名应类似。请提交一个带有您使用说明的拉取请求。

macOS

您可以通过 Homebrew 或安装 GStreamer 项目提供的 二进制文件 来安装 GStreamer 和插件。

我们建议使用官方的 GStreamer 二进制文件而不是 Homebrew,特别是由于 Homebrew 中的 GStreamer 目前 存在问题

GStreamer 二进制文件

您需要从 GStreamer 网站下载 两个 .pkg 文件并安装,例如 gstreamer-1.0-1.20.4-universal.pkggstreamer-1.0-devel-1.20.4-universal.pkg

安装完成后,您还需要按照以下方式设置 PATH 环境变量

$ export PATH="/Library/Frameworks/GStreamer.framework/Versions/1.0/bin${PATH:+:$PATH}"

请注意,GStreamer 的 pkg-config 应该是 PATH 中的第一个,因为其他版本都有各种怪癖,可能会导致问题。

Homebrew

Homebrew 只在明确启用的情况下安装各种插件,因此可能需要一些额外的 --with-* 标志。

$ brew install gstreamer gst-plugins-base gst-plugins-good \
      gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \
      gst-editing-services --with-orc --with-libogg --with-opus \
      --with-pango --with-theora --with-libvorbis --with-libvpx \
      --enable-gtk3

请确保这些库的版本 >= 1.14。

Windows

您可以通过 MSYS2 使用 pacman 或通过安装 GStreamer 项目提供的 二进制文件 来安装 GStreamer 和插件。

我们建议使用官方的 GStreamer 二进制文件而不是 MSYS2。

GStreamer 二进制文件

您需要从 GStreamer 网站下载适用于您平台的 两个 .msi 文件并安装,例如 gstreamer-1.0-x86_64-1.20.4.msigstreamer-1.0-devel-1.20.4.msi。请确保选择与您的 Rust 工具链匹配的版本,即 MinGW 或 MSVC。

安装后,请按照以下方式设置 `PATH` 环境变量

# For a UNIX-style shell:
$ export PATH="c:/gstreamer/1.0/msvc_x86_64/bin${PATH:+:$PATH}"

# For cmd.exe:
$ set PATH=C:\gstreamer\1.0\msvc_x86_64\bin;%PATH%

请确保更新到您实际安装 GStreamer 和相应工具链的路径。

请注意,GStreamer中的pkg-config.exe应该放在PATH的第一个位置,因为其他版本存在各种怪癖,可能会导致问题。

MSYS2 / pacman

$ pacman -S glib2-devel pkg-config \
      mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base \
      mingw-w64-x86_64-gst-plugins-good mingw-w64-x86_64-gst-plugins-bad \
      mingw-w64-x86_64-gst-plugins-ugly mingw-w64-x86_64-gst-libav \
      mingw-w64-x86_64-gst-rtsp-server

请确保这些库的版本 >= 1.14。

注意,MSYS2中包含的pkg-config版本已知在编译GStreamer时存在问题,因此您可能需要安装另一个版本。一个选项是pkg-config-lite

入门指南

API参考可以在这里找到,但是它只包含Rust API参考,不解释任何概念。

对于GStreamer开发的入门,最好的做法是遵循GStreamer网站上的文档,特别是应用程序开发手册。虽然以C为中心,但它解释了GStreamer的所有基本概念,代码示例应该可以相对容易地翻译成Rust。API基本上是相同的,函数/结构体名称是相同的,并且所有东西都更加方便(希望如此)和安全。

此外,GStreamer网站上还有教程。许多教程已经移植到Rust,代码可以在教程目录中找到。

有关GStreamer的各个方面以及如何从Rust使用它的更多示例可以在示例目录中找到。

gst-plugins-rs存储库中可以找到用Rust编写的各种GStreamer插件。

许可证

gstreamer-rs以及这里包含的所有crate都受以下任一许可证的许可:

由您选择。

GStreamer本身根据Lesser General Public License版本2.1或(根据您的选择)任何后续版本进行许可:https://www.gnu.org/licenses/lgpl-2.1.html

贡献

欢迎以拉取请求的形式提供各种类型的贡献。

除非您明确说明,否则您提交给gstreamer-rs的任何贡献,根据Apache-2.0许可证的定义,应按上述方式双许可,不附加任何额外条款或条件。

依赖关系

~10–18MB
~290K SLoC