GStreamer是一个非常强大和通用的框架,用于创建流媒体应用程序。GStreamer框架的许多优点来自于它的模块化:GStreamer可以无缝地合并新的插件模块。但由于模块化和强大的功能往往以更高的复杂性为代价(例如,考虑CORBA),编写新插件并不总是那么容易。
本指南旨在帮助您理解GStreamer框架,以便开发新插件来扩展现有功能。本指南通过开发一个用C编写的示例插件(音频过滤器插件)来解决大多数问题。但是,本指南后面的部分还介绍了编写其他类型插件所涉及的一些问题,并且本指南的结尾描述了GStreamer的一些Python绑定。
1. 前言
1.1 什么是GStreamer?
GStreamer是一个用于创建流媒体应用程序的框架。基本设计来自俄勒冈研究生院的视频管道,以及DirectShow的一些想法。
GStreamer的开发框架使得编写任何类型的流媒体应用程序成为可能。GStreamer框架旨在使编写处理音频或视频或两者的应用程序变得容易。它不局限于音频和视频,可以处理任何类型的数据流。管道设计的开销比应用的过滤器所产生的开销要小。这使得GStreamer成为设计对延迟或性能有很高要求的高端音频应用程序的良好框架。
GStreamer最明显的用途之一就是用来构建媒体播放器。GStreamer已经包含用于构建媒体播放器的组件,该播放器可以支持多种格式,包括MP3、Ogg/Vorbis、MPEG-1/2、AVI、Quicktime、mod等等。然而,GStreamer不仅仅是另一个媒体播放器。它的主要优点是可插入组件可以混合并匹配到任意管道中,这样就可以编写一个完整的视频或音频编辑应用程序。
该框架基于插件,插件将提供各种编解码器和其他功能。这些插件可以链接并排列在管道中。这个管道定义了数据流。
GStreamer的核心功能是为插件、数据流、同步和媒体类型处理/协商提供一个框架。它还提供了一个API来使用各种插件编写应用程序。
1.2 谁应该阅读本指南?
本指南介绍如何为GStreamer编写新模块。本指南与以下几个人群相关:
- 任何想在GStreamer中添加对处理数据的新方法的支持的人。例如,此组中的某个人可能希望创建新的数据格式转换器、新的可视化工具或新的解码器或编码器。
- 任何想要添加对新输入和输出设备的支持的人。例如,这一组中的人可能希望增加向新的视频输出系统写入数据或从数码相机或专用麦克风读取数据的能力。
- 任何想以任何方式扩展GStreamer的人。在理解插件系统对其余代码的约束之前,您需要了解插件系统是如何工作的。另外,读完本文后,您可能会惊讶于插件可以完成多少工作。
如果您只想使用GStreamer的现有功能,或者只想使用使用GStreamer的应用程序,则本指南与您无关。如果您只对使用现有的插件来编写新的应用程序感兴趣,而且已经有很多插件了,那么您可能需要查看GStreamer应用程序开发手册。如果您只是想获得有关GStreamer应用程序的帮助,那么您应该查看该特定应用程序的用户手册。
1.3 初步阅读
本指南假设您对GStreamer的基本工作原理比较熟悉。对于GStreamer中编程概念的简单介绍,您可能希望先阅读GStreamer应用程序开发手册。还可以查看GStreamer网站上提供的其他文档。
为了理解本手册,您需要对C语言有基本的了解。由于GStreamer遵循GObject编程模型,因此本指南还假设您了解GObject编程的基础知识。您可能还想看一下ericharlow的《使用GTK+和GDK开发Linux应用
程序》一书。
1.4 本指南的结构
为了帮助您浏览本指南,它分为几个大的部分。每一部分都涉及到一个关于GStreamer插件开发的特别广泛的主题。本指南各部分按以下顺序排列:
- 构建一个插件-介绍一个插件的结构,使用一个示例音频过滤器进行说明。
.
这一部分涵盖了构建插件通常需要执行的所有基本步骤,例

本文档详述了GStreamer框架及其插件开发流程。介绍了GStreamer的基本概念、元素和插件、Pad、数据流机制及媒体类型协商等内容。适合希望扩展GStreamer功能的开发者阅读。
最低0.47元/天 解锁文章
2702

被折叠的 条评论
为什么被折叠?



