GStreamer是一个开源的多媒体框架库。利用它,可以构建一系列的媒体处理模块,包括从简单的ogg播放功能到复杂的音频(混音)和视频(非线性编辑)的处理。
应用程序可以透明的利用解码和过滤技术。开发者可以使用简洁通用的接口来编写一个简单的插件来添加新的解码器或滤镜。
GStreamer是一个创建流媒体应用程序的框架。其基本设计思想来自于俄勒冈(Oregon)研究生学院有关视频管道的创意, 同时也借鉴了DirectShow的设计思想。
GStreamer的程序开发框架使得编写任意类型的流媒体应用程序成为了可能。在编写处理音频、视频或者两者皆有的应用程序时, GStreamer可以让你的工作变得简单。GStreamer并不受限于音频和视频处理, 它能够处理任意类型的数据流。管道设计的方法对于实际应用的滤波器几乎没有负荷, 它甚至可以用来设计出对延时有很高要求的高端音频应用程序。
GStreamer最显著的用途是在构建一个播放器上。GStreamer已经支持很多格式的文件了, 包括: MP3、Ogg/Vorbis、MPEG-1/2、AVI、Quicktime、 mod等等。从这个角度看,GStreamer更象是一个播放器。但是它主要的优点却是在于: 它的可插入组件能够很方便的接入到任意的管道当中。这个优点使得利用GStreamer编写一个万能的可编辑音视频应用程序成为可能。
GStreamer框架是基于插件的,有些插件中提供了各种各样的多媒体数字信号编解码器,也有些提供了其他的功能。所有的插件都能够被链接到任意的已经定义了的数据流管道中。GStreamer的管道能够被GUI编辑器编辑, 能够以XML文件来保存。这样的设计使得管道程序库的消耗变得非常少。
GStreamer核心库函数是一个处理插件、数据流和媒体操作的框架。 GStreamer核心库还提供了一个API, 这个API是开放给程序员使用的---当程序员需要使用其他的插件来编写他所需要的应用程序的时候可以使用它。
2012年09月25,GStreamer 1.0 发布,多媒体开发框架,主要改进内容包括:[1]
更灵活的内存处理
可扩展的和可转让的元数据缓冲区
上限谈判和重新谈判机制,解耦从缓冲区分配
改进帽重新谈判
自动转发形成的状态动态管道
返工,更细粒度的垫探测
更简单、更具描述性的音频和视频帽
更有效的分配的缓冲区,事件和其他小型对象
改进时间戳处理
支持基于gobject检查语言绑定[1]
2013年6月8日,GStreamer 1.1.1 版本发布[2],它是一个开发版本,为下一个稳定版 1.2.x 做的准备。与 GStreamer 1.0 比较,该版本包含 8 个新 API,以及一些新插件,改进了框架本身的视频处理以及 bug 修复。请注意的是 1.x 系列不兼容 0.10.x 版本系列,而且 0.10.x 也不再进行维护。[3]
2013年9月25日,GStreamer多媒体框架发布1.2版本[2],API和ABI均与GStreamer1.0兼容的同时,引入了新的功能、大量bug修复和优化。新的插件支持DASH adaptive streaming、JPEG2000 images、VP9和Daala video,以及WebP的解码。[4]