文章

常见问题:一般情况

GStreamer 是媒体播放器吗?

不,GStreamer 是一个开发框架,用于创建媒体播放器、视频编辑器、流媒体广播等应用程序。 也就是说,在 GStreamer 的基础上可以轻松创建非常出色的媒体播放器,尤其是在使用我们提供的高级应用程序接口(如GstPlayerplaybinplaybin3元素时)。

为什么 GStreamer 用 C 语言编写?为什么不用 C++/Objective-C/…?

除了 “个人喜好 “之外,还有很多技术上的原因说明 C 语言在这个项目中的优势:

  • C 语言非常方便移植。

  • C 语言速度快。

  • 为 C 语言编写的程序库制作语言绑定非常简单。

  • GLib提供的GObject对象系统以可移植和强大的方式在 C 语言中实现了对象。该库提供了内省和运行时动态类型。它是一个完整的 OO 系统,但没有语法糖。如果你想要 “糖”,可以看看Vala

  • 使用 C 语言可以很好地与 Gtk+ 和 GNOME 集成。有些人非常喜欢这一点,但 GStreamer 既不需要 Gtk+ 也不需要 GNOME。

这也有历史原因:在 GStreamer 诞生之初,C++ 和自由开源的 C++ 编译器还不像今天这样稳定和成熟,人们希望提供一定程度的 API 和 ABI 稳定性。

最后,我们喜欢 C 语言。如果你不喜欢,没关系;如果你还想在 GStreamer 上帮忙,我们总是需要更多语言绑定开发人员。 如果不喜欢,不要打扰我们;我们正在工作 :-)

用 GStreamer 编写了哪些应用程序?

GStreamer 从设计之初就是一个通用的多媒体框架,可用于编写各种多媒体应用程序。

当然,有大量的媒体播放应用程序,但也有音频和视频捕获应用程序,可将捕获的内容录制成文件或实时流媒体。音频 CD 和 DVD 备份应用程序。媒体格式转换和转码工具。流媒体服务器,既适用于需要严格控制资源使用小型嵌入式设备,也适用于可扩展性至关重要的服务器。当然还有音频和视频编辑应用。

有关项目列表,请查看 GStreamer 项目网站上的申请列表

GStreamer 基于插件设计,从一开始就具有可扩展性,因此只要有合适的插件,它几乎可以支持任何媒体格式。

它具有适用于所有常见媒体格式和数百种非常见格式的解码器、解析器和解码器。如果在播放文件时遇到困难,请首先确保您已安装所有必要的插件。

GStreamer 的目标是支持所有能想象到的格式,但这并不意味着开发人员已经实现了这一目标。如果某个启用了 GStreamer 的应用程序不能播放你的文件,你可以通过提交该格式的新增请求来帮助我们解决问题。如果有,请提供:

  • 与其他播放器的链接,最好是开源的和使用 Unix 的播放器

  • 格式解释的链接。

  • 获取该格式媒体文件的方法以便进行测试。

GStreamer 及其插件的确切许可条款是什么?

GStreamer 的所有内容,包括我们自己的插件代码,均采用GNU LGPL 2.1许可。不过,我们用于某些插件的一些库采用了 GPL 协议,这意味着这些插件不能被非 GPL 兼容的应用程序使用。不过这种情况很少见,而且这些 GPL 库通常都有非 GPL 的替代品。

一般来说,GStreamer 只使用 LGPL 或 BSD 许可的库,只有在没有良好的 LGPL 或 BSD 替代库时,才使用 GPL 或专有库。

在以下命令的输出中,您可以看到插件的有效许可证,即许可证字段:

1
gst-inspect-1.0 <plugin name>

GStreamer 是声音服务器吗?

不,GStreamer 不是声音服务器。不过,GStreamer 确实有支持当今大多数主要声音服务器的插件,包括 pulseaudio、Jack 等。

GStreamer 是否适用于 Linux 以外的平台?

是的,GStreamer 是一个跨平台多媒体框架,可在所有主流操作系统上运行,包括但不限于 Linux、Android、iOS、macOS、Windows 和 *BSD,每次发布 GStreamer 时都会提供 Android、iOS、macOS 和 Windows 的官方 SDK 二进制包。

GStreamer 与 GNOME 社区是什么关系?

GStreamer 是一个独立的项目,但我们历来与 GNOME 社区关系密切。我们的许多黑客都认为自己也是 GNOME 社区的成员。GNOME 桌面正式捆绑了 GStreamer,因为许多 GNOME 应用程序都在使用它。当然,这并不排除其他社区使用 GStreamer。

GStreamer 与 KDE 社区的关系如何?

GStreamer 社区希望与 KDE 保持尽可能好的关系,我们希望有一天 KDE 决定采用 GStreamer 作为他们的多媒体平台。GStreamer 社区与 KDE 之间时常保持联系,各种 KDE 和 Qt 多媒体 API 都使用了 GStreamer。此外,一些 KDE 黑客还创建了 GStreamer 的 Qt 绑定,制作了一个简单的视频播放器,并将其用于一些音频播放器(JuK 和 AmaroK)。

我正在考虑将 GStreamer 的输出添加到我的应用程序中…

这其实说不通。GStreamer 不是声音服务器,所以你不能直接向 GStreamer 输出,它也不是音频数据和各种音频汇之间的中间 API。在应用程序中使用 GStreamer 是一项底层的设计决策;没有简单的方法能以某种方式将数据从应用程序 “传输 “到 GStreamer(当然,有一些方法,但它们只适用于特殊情况)。 相反,您的应用程序必须使用或实现一些 GStreamer 元素,将它们串联起来,并告诉它们运行。这样,所有数据都将成为 GStreamer 管道的内部数据。

不过,您也可以为自己的应用程序编写专门的插件,以获取音频或视频数据。

本文由作者按照 CC BY 4.0 进行授权