第
1 章. 序言
本章将从技术的角度来描述本手册的总体结构。
1.1. GStreamer 是什么 ?
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 是开放给程序员使用的---当程序员需要使用其他的插件来编写他所需要的应用程序的时
候可以使用它。
1.2. 谁需要读这个手册?
本手册是从一个程序开发人员的角度来描述
GStreamer 的: 它叙述了如何利用 GStreamer 的开发库
以及工具来编写一个基于
GStreamer 的应用程序。
对于想学习
"如何编写插件"的朋友们, 我们建议你
去参考
1.3. 预备知识
为了更好的理解本手册的内容
, 你应该具备基本的 C 语言基础。由于 GStreamer 一直采用 GObject
编程模式
, 所以本手册也假定你已经理解了
的基本概念。你可能还需要一些
GTK+和 GDK
的知
识
, 这方面的知识你可以参照 Eric Harlow 的书 Developing Linux Applications with GTK+ and GDK。
另外
, 当你读完本手册后, 请读一下
GStreamer Plugin Writer's Guide
。
当然,你还需要关注一下
1.4. 本手册结构
为了帮助你更好的学习本手册
, 我们将本手册分为几个大的部分, 每一部分阐述了一个在 GStreamer
应用程序开发过程中特殊而又有用的话题。如下所示
:
给你一个关于
GStreamer 总的概况叙述。
阐述
GStreamer 应用程序开发的基本概念。本章结
束后
, 你将可以使用 GStreamer 来开发你自己的音频播放器。
我们将继续讨论一些有关
GStreamer 深层次的主
题
, 这些主题告诉了我们为什么 GStreamer 能在众多的竞争者当中脱颖而出。我们将使用动态参数和动
态接口来讨论应用程序中管道的交讯问题
, 我们还将讨论线程同步、时钟同步、以及其他同步问题。这些
问题的讨论不仅向你讲述如何使用
GStreamer 的 API, 而且还将告诉你一些基于 GStreamer 应用程序开
发过程中所经常遇到的问题的解决办法
, 通过这些知识的学习使你更加深刻的理解 GStreamer 的基本概
念。
我们将进入
GStreamer 的高级编程领域。你不需要
2