GStreamer是一个用于创建流媒体应用程序的框架。基本的设计来自俄勒冈研究生院的视频管道,还有一些来自DirectShow的想法。
GStreamer的开发框架使编写任何类型的流媒体应用程序成为可能。GStreamer框架旨在使编写处理音频或视频或两者同时处理的应用程序变得容易。它不局限于音频和视频,可以处理任何类型的数据流。管道设计使其开销比应用的filters的开销小。这使得GStreamer成为一个很好的框架,即使是设计对延迟有很高要求的高端音频应用程序。
GStreamer最明显的用途之一是构建媒体播放器。GStreamer已经包括构建一个媒体播放器的组件,可以支持非常广泛的格式,包括MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod等。然而,GStreamer不仅仅是一个媒体播放器。它的主要优点是可插入组件可以混合和匹配到任意管道中,这样就可以编写完整的视频或音频编辑应用程序。
该框架基于插件plugins,plugins将提供各种编解码器和其他功能。插件可以在管道中链接和排列。这个管道定义了数据流。管道也可以用GUI编辑器编辑,并保存为XML,这样管道库就可以用最少的工作创建。
GStreamer的核心功能是为插件、数据流和媒体类型处理/协商提供一个框架。它还提供了使用各种插件编写应用程序的API。
具体来说,GStreamer提供了
-
an API for multimedia applications
-
a plugin architecture
-
a pipeline architecture
-
a mechanism for media type handling/negotiation
-
a mechanism for synchronization
-
over 250 plug-ins providing more than 1000 elements
-
a set of tools
GStreamer插件可以分为:
-
protocols handling
-
sources: for audio and video (involves protocol plugins)
-
formats: parsers, formaters, muxers, demuxers, metadata, subtitles
-
codecs: coders and decoders
-
filters: converters, mixers, effects, …
-
sinks: for audio and video (involves protocol plugins)
GStreamer被打包为: -
gstreamer: the core package
-
gst-plugins-base: an essential exemplary set of elements
-
gst-plugins-good: a set of good-quality plug-ins under LGPL
-
gst-plugins-ugly: a set of good-quality plug-ins that might pose distribution problems
-
gst-plugins-bad: a set of plug-ins that need more quality
-
gst-libav: a set of plug-ins that wrap libav for decoding and encoding
-
a few others packages