- 0
- 0
- 约1.06万字
- 约 13页
- 2023-05-23 发布于上海
- 举报
GStreamer 是 GNOME 桌面环境下用来构建流媒体应用的编程框架(framework),其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理像 MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime 等多种格式的多媒体数据。
一、基本概念
序。GStreamer 作为 GNOME 桌面环境推荐的流媒体应用框架,采用了基于插件(plugin)和管道(pipeline)的体系结构,框架中的所有的功能模块都被实现成可以插拔的组件(component),并且在需要的时候能够很方便地安装到任意一个管道上,由于所有插件都通过管道机制进行 统一的数据交换,因此很容易利用已有的各种插件“组装”出一个功能完善的多媒体应用程
序。
元件处理
对于需要应用 GStreamer 框架的程序员来讲,GstElement 是一个必须理解的概念,因为它是组成管道的基本构件,也是框架中所有可用组件的基础,这也难怪 GStreamer 框架中的大部分函数都会涉及到对 GstElement 对象的操作。从 GStreamer 自身的观点来看,GstElement 可以描述为一个具有特定属性的黑盒子,它通过连接点(link point)与外界进行交互,向框架中的其余部分表征自己的特性或者功能。
按照各自功能上的差异,GStreamer 又将 GstElement 细分成如下几类:
Source Element 数据源元件Filter Element 过滤器元件只有输出端,它仅能用来产生供管道消费的数据,而不能对数
Source Element 数据源元件
Filter Element 过滤器元件
既有输入端又有输出端,它从输入端获得相应的数据,并在经过特殊处理之后传递给输出端。一个典型的过滤器元件的例子是音频编码单元,它首先从外界获得音频数据,然后根据特定的压缩算法对其进行编码,最后再将编码后的结果提供给其它模块使用。
Sink Element 接收器元件只有输入端,它仅具有消费数据的能力,是整条媒体管道的终端。
Sink Element 接收器元件
图 1 将有助于你更好地理解数据源元件、过滤器元件和接收器元件三者的区别,同时也不难看出它们是如何相互配合形成管道的:
图 1
需要注意的是,过滤器元件的具体形式是非常灵活的,GStreamer 并没有严格规定输入端和输出端的数目,事实上它们都可以是一个或者多个。图 2 是一个 AVI 分离器的基本结构, 它能够将输入数据分离成单独的音频信息和视频信息,用于实现该功能的过滤器元件很明显只具有一个输入端,但却需要有两个输出端。
图 2
要想在应用程序中创建 GstElement 对象,唯一的办法是借助于工厂对象 GstElementFactory。由于 GStreamer 框架提供了多种类型的 GstElement 对象,因此对应地提供了多种类型的GstElementFactory 对象,它们是通过特定的工厂名称来进行区分的。例如,下面的代码通过gst_element_factory_find()函数获得了一个名为 mad 的工厂对象,它之后可以用来创建与之对应的 MP3 解码器元件:
GstElementFactory *factory;
factory = gst_element_factory_find (mad);
成功获得工厂对象之后,接下来就可以通过 gst_element_factory_create()函数来创建特定的GstElement 对象了,该函数在调用时有两个参数,分别是需要用到的工厂对象,以及即将创建的元件名称。元件名称可以用查询的办法获得,也可以通过传入空指针( NULL)来生成工厂对象的默认元件。下面的代码示范了如何利用已经获得的工厂对象,来创建名为 decoder 的 MP3 解码器元件:
GstElement *element;
element = gst_element_factory_create (factory, decoder);
当创建的 GstElement 不再使用的时候,还必须调用 gst_element_unref()函数释放其占用的内存资源:
gst_element_unref (element);
GStreamer 使用了与 GObject 相同的机制来对属性(property)进行管理,包括查询(query)、设置(set)和读取(get)等。所有的 GstElement 对象都需要从其父对象 GstObject 那里继承名称 ( name ) 这一 最基本 的属性 , 这 是因为 像 gst_element_factory_make() 和gst_element_factory_create()这样的函数在创建工厂对象和
您可能关注的文档
- 译林版三年级英语上册语法知识点归纳.docx
- 译林版四年级下册Unit1Unit4复习卷.docx
- 译林版四年级下册英语期末试题.docx
- 译林版四年级下册英语一二单元测试卷.docx
- 译林版四年级英语下册期中测试卷及答案.docx
- 译林版五年级上册期末试题.docx
- 译林版五年级下册期中试卷.docx
- 译林版五年级英语下册语法知识点总复习.docx
- 译林版小学英语6BUnit4考点精练.docx
- 译林版小学英语六年级下6Bunit3知识点与练习.docx
- 人教版八年级上册历史精品教学课件 第六单元 中华民族的抗日战争 第17课 七七事变与全民族抗战 (6).ppt
- 人教版八年级上册历史精品教学课件 期末专题复习 专题二 中国人民近代化的探索 (2).ppt
- 人教版八年级上册历史精品教学课件 第二单元 近代化的早期探索与民族危机的加剧 第5课 甲午中日战争与列强瓜分中国狂潮 (2).ppt
- 人教版八年级上册历史精品教学课件 第七单元 人民解放战争 大概念引领下的大单元复习 (4).ppt
- 人教版八年级上册历史精品教学课件 第七单元 人民解放战争 第21课 人民解放战争的胜利 (2).ppt
- 人教版八年级上册历史精品教学课件 第三单元 资产阶级民主革命与中华民国的建立 第10课 中华民国的创建 (2).ppt
- 人教版八年级上册历史精品教学课件 第四单元 新民主主义革命的开始 第12课 新文化运动 (3).ppt
- 第四组塑料低温脆化温度测试详解演示文稿.ppt
- 第消费者行为演示文稿.ppt
- 第一部分用搜索方法求解问题演示文稿.ppt
原创力文档

文档评论(0)