欢迎来到天天文库
浏览记录
ID:41152942
大小:457.39 KB
页数:47页
时间:2019-08-17
《gstreamer手册(简体中文版)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第1章.序言本章将从技术的角度来描述本手册的总体结构。1.1.GStreamer是什么?GStreamer是一个创建流媒体应用程序的框架。其基本设计思想来自于俄勒冈(Oregon)研究生学院有关视频管道的创意,同时也借鉴了DirectShow的设计思想。GStreamer的程序开发框架使得编写任意类型的流媒体应用程序成为了可能。在编写处理音频、视频或者两者皆有的应用程序时,GStreamer可以让你的工作变得简单。GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流。管道设计的方法对于实际应用的滤波器几乎没有负荷,它甚至可以用来设计出对延时有很高要求的
2、高端音频应用程序。GStreamer最显著的用途是在构建一个播放器上。GStreamer已经支持很多格式的档了,包括:MP3、Ogg/Vorbis、MPEG-1/2、AVI、Quicktime、mod等等。从这个角度看,GStreamer更像是一个播放器。但是它主要的优点却是在于:它的可插入组件能够很方便的接入到任意的管道当中。这个优点使得利用GStreamer编写一个万能的可编辑音视频应用程序成为可能。GStreamer框架是基于插件的,有些插件中提供了各种各样的多媒体数字信号编译码器,也有些提供了其它的功能。所有的插件都能够被链接到任意的已经定义了的数据流管道中。G
3、Streamer的管道能够被GUI编辑器编辑,能够以XML档来保存。这样的设计使得管道链接库的消耗变得非常少。GStreamer核心库函数是一个处理插件、数据流和媒体操作的框架。GStreamer核心库还提供了一个API,这个API是开放给程序员使用的---当程序员需要使用其它的插件来编写他所需要的应用程序的时候可以使用它。1.2.谁需要读这个手册?本手册是从一个程序开发人员的角度来描述GStreamer的:它叙述了如何利用GStreamer的开发库以及工具来编写一个基于GStreamer的应用程序。对于想学习"如何编写插件"的朋友们,我们建议你去参考<<插件编写指南(
4、PluginWritersGuide)>>。1.3.预备知识为了更好的理解本手册的内容,你应该具备基本的C语言基础。由于GStreamer一直采用GObject编程模式,所以本手册也假定你已经理解了GObject的基本概念。你可能还需要一些GTK+和GDK的知识,这方面的知识你可以参照EricHarlow的书DevelopingLinuxApplicationswithGTK+andGDK。另外,当你读完本手册后,请读一下GStreamerPluginWriter'sGuide。当然,你还需要关注一下其它的GStreamer文檔。第2章.动机和目标从历史的角度来看,Li
5、nux在多媒体方面已经远远落后于其它的操作系统。Microsoft'sWindows和Apple'sMacOS它们对多媒体设备、多媒体创作、播放和实时处理等方面已经有了很好的支持。另一方面,Linux对多媒体应用的综合贡献比较少,这也使得Linux很难在专业级别的软件上与MSWindows和MacOS去竞争。GStreamer正是为解决Linux多媒体方面当前问题而设计的。2.1.当前的问题我们描述了当今Linux平台下媒体处理的一些典型问题。2.1.1.大量的代码复制对于那些想要播放一个声音文件的Linux用户来说,他们必须搜索各种声音播放器来播放不同格式档,而在这些
6、播放器中,大部分的都一遍又一遍地重复使用了相同的代码。对于那些想在应用程序中嵌入视频剪辑的Linux开发人员来说,他们必须要用粗略的hacks来运行外部的视频播放器,因为没有一套可用的库提供给开发人员来创建可定制的播放器。2.1.2.“一个目标”媒体播放器/媒体库典型的MPEG播放器可以播放MPEG视频和音频,多数的播放器实现了完整的底层构造来达到他们的唯一目标:播放。没有一套有效的机制可以提供对于音频和视频数据过滤和效果处理,更没有制定在视频或音频数据中添加滤波器或特殊效果的任何规定。如果你希望将MPEG-2视频流转为AVI档,那么你的最佳选择是,将所有的MPEG-2
7、译码算法从播放器分离出来,并复制到你的AVI编码器中,因为这类算法不能简单的在应用程序之间共享。开发人员曾经尝试着创建一个可以处理多种媒体类型的库,但由于缺乏通用的API,所以如何集成就成了重要的工作了。因为在集成的过程中,我们需要关注一些特殊的媒体类型(avi文件,libmpeg2,...),而集成这些媒体类型文件需要一个统一的接口。GStreamer允许将这些库与通用的API一起打包,这样就简化了集成和复用。2.1.3.没有统一的插件管理机制典型的播放器对于不同的媒体类型会有不同的插件,两个媒体播放器会实现各自不同的插件机制,所以编译
此文档下载收益归作者所有