GStreamer是GNOME桌面环境下用来构建流媒体应用的编程框架(framework),其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理像MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime等多种格式的多媒体数据
一、基本概念GStreamer作为GNOME桌面环境推荐的流媒体应用框架,采用了基于插件(plugin)和管道(pipeline)的体系结构,框架中的所有的功能模块都被实现成可以插拔的组件(component),并且在需要的时候能够很方便地安装到任意一个管道上,由于所有插件都通过管道机制进行统一的数据交换,因此很容易利用已有的各种插件“组装”出一个功能完善的多媒体应用程序
1元件处理对于需要应用GStreamer框架的程序员来讲,GstElement是一个必须理解的概念,因为它是组成管道的基本构件,也是框架中所有可用组件的基础,这也难怪GStreamer框架中的大部分函数都会涉及到对GstElement对象的操作
从GStreamer自身的观点来看,GstElement可以描述为一个具有特定属性的黑盒子,它通过连接点(linkpoint)与外界进行交互,向框架中的其余部分表征自己的特性或者功能
按照各自功能上的差异,GStreamer又将GstElement细分成如下几类:SourceElement数据源元件只有输出端,它仅能用来产生供管道消费的数据,而不能对数据做任何处理
一个典型的数据源元件的例子是音频捕获单元,它负责从声卡读取原始的音频数据,然后作为数据源提供给其它模块使用
FilterElement过滤器元件既有输入端又有输出端,它从输入端获得相应的数据,并在经过特殊处理之后传递给输出端
一个典型的过滤器元件的例子是音频编码单元,它首先从外界获得音频数据,然后根据特定的压缩算法对其进行编码,最后再将编码后的结果提供给其它模