資源描述:
《gstreamer 插件開(kāi)發(fā)指南》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、GStreamer插件開(kāi)發(fā)指南(0.10.9.1)I.介紹GStreamer是一個(gè)用來(lái)創(chuàng)建流媒體應(yīng)用程序的非常強(qiáng)大和通用的框架。GStreamer框架的許多優(yōu)點(diǎn)來(lái)源于它的模塊性:GStreamer可以無(wú)縫地接納新的插件模塊。但是由于模塊性和強(qiáng)大的功能通常以極高的復(fù)雜性為代價(jià)(例如CORBA),編寫(xiě)一個(gè)新的插件并不總是一件簡(jiǎn)單的事。本手冊(cè)旨在幫助你了解GStreamer的框架0.10.9.1版)以便你能夠開(kāi)發(fā)新的插件來(lái)擴(kuò)展當(dāng)前的功能。本手冊(cè)通過(guò)用C語(yǔ)言開(kāi)發(fā)一個(gè)示例插件──一個(gè)音頻過(guò)濾器──來(lái)定位大多數(shù)問(wèn)題。然而,接下來(lái)的部分會(huì)通過(guò)編寫(xiě)其它
2、類(lèi)型的插件引入另一些問(wèn)題,在本手冊(cè)的結(jié)尾介紹了一些GStreamer的Python綁定。目錄1.前言1.1.GStreamer是什么?1.2.誰(shuí)應(yīng)該讀該指南?1.3.預(yù)備知識(shí)1.4.該指南的結(jié)構(gòu)2.基本知識(shí)2.1.元件(Elements)和插件(Plugins)2.2.襯墊(Pads)2.3.數(shù)據(jù)(Data),緩沖區(qū)(Buffers)和事件(Events)2.3.1.緩沖區(qū)分配2.4.MIME類(lèi)型(Mimetypes)和屬性2.4.1.基本類(lèi)型Chapter1.前言1.1.GStreamer是什么?GStreamer是一個(gè)創(chuàng)建流媒體應(yīng)用
3、程序的框架。其基本設(shè)計(jì)思想來(lái)自于俄勒岡(Oregon)研究生學(xué)院有關(guān)視頻管道的創(chuàng)意,同時(shí)也借鑒了DirectShow的設(shè)計(jì)思想。GStreamer的開(kāi)發(fā)框架使它有可能被用來(lái)編寫(xiě)任何類(lèi)型的流媒體應(yīng)用程序。基于GStreamer的程序開(kāi)發(fā)框架使得編寫(xiě)任意類(lèi)型的流媒體應(yīng)用程序成為了可能。在編寫(xiě)處理音頻、視頻或者兩者皆有的應(yīng)用程序時(shí),GStreamer可以讓你的工作變得簡(jiǎn)單。GStreamer并不受限于音頻和視頻處理,它能夠處理任意類(lèi)型的數(shù)據(jù)流。管道的設(shè)計(jì)對(duì)于一般應(yīng)用的濾鏡(filter)綽綽有余。這使得GStreamer成為一個(gè)優(yōu)秀的框架,它
4、甚至可以用來(lái)設(shè)計(jì)出對(duì)延時(shí)有很高要求的高端音頻應(yīng)用程序。GStreamer最顯著的用途是在構(gòu)建一個(gè)播放器上。GStreamer已經(jīng)支持很多格式的文件了,包括:MP3,Ogg/Vorbis,MPEG-1/2,AVI,Quicktime,mod等等。從這個(gè)角度看,GStreamer更象是一個(gè)播放器。但是它主要的優(yōu)點(diǎn)確是在于:它的可插入組件能夠很方便的接入到任意的管道當(dāng)中。這個(gè)優(yōu)點(diǎn)使得利用GStreamer編寫(xiě)一個(gè)萬(wàn)能的可編輯音視頻應(yīng)用程序成為可能。GStreamer框架是基于插件的,有些插件中提供了各種各樣的多媒體數(shù)字信號(hào)編解碼器,也有些提供
5、了其他的功能。所有的插件都能夠被鏈接到任意的已經(jīng)定義了的數(shù)據(jù)流管道中。GStreamer的管道能夠被GUI編輯器編輯,能夠以XML文件來(lái)保存。這樣的設(shè)計(jì)使得管道程序庫(kù)的消耗變得非常少。GStreamer核心庫(kù)函數(shù)是一個(gè)處理插件、數(shù)據(jù)流和媒體操作的框架。GStreamer核心庫(kù)還提供了一個(gè)API,這個(gè)API是開(kāi)放給程序員使用的---當(dāng)程序員需要使用其他的插件來(lái)編寫(xiě)他所需要的應(yīng)用程序的時(shí)候可以使用它。1.2.誰(shuí)應(yīng)該讀該指南?該指南敘述了如何為GStreamer編寫(xiě)新的模塊。本指南針對(duì)以下幾種人:·那些想給GStreamer增加新的數(shù)據(jù)處理方
6、法的人。例如,可能有人想創(chuàng)建一個(gè)新的可見(jiàn)的工具---數(shù)據(jù)類(lèi)型轉(zhuǎn)換器,或者新的編碼器或者解碼器?!つ切┫胫С中碌妮斎胼敵鲈O(shè)備的人。例如:某人可能會(huì)想增加將數(shù)據(jù)輸出到新的視頻輸出系統(tǒng)或從一個(gè)數(shù)碼相機(jī)或耳機(jī)中讀取數(shù)據(jù)的功能。·那些想通過(guò)任何方法擴(kuò)展GStreamer的人。你必須事先了解插件系統(tǒng)是如何工作的,這樣你才能知道插件系統(tǒng)對(duì)其它代碼有什么限制。讀完了該手冊(cè),你也許會(huì)因?yàn)椴寮梢宰鋈绱硕嗟氖露械襟@訝。如果你只是想使用GStreamer的已有功能,或者只想使用那些基于GStreamer程序,那么你可以不用再看下去了。如果你只關(guān)注與使用現(xiàn)有
7、的插件去便寫(xiě)新的程序──現(xiàn)在有許多這樣的插件──你也許想看的是《GStreamer應(yīng)用程序開(kāi)發(fā)手冊(cè)》如果你只是想獲得那些基于GStreamer的程序的幫助,那么你應(yīng)該查看那些程序的用戶(hù)手冊(cè)。1.3.預(yù)備知識(shí)該指南假定你已經(jīng)稍微了解了GStreamer的基本工作原理。你也許希望首先閱讀《GStreamer應(yīng)用程序開(kāi)發(fā)手冊(cè)》,以便獲得對(duì)GStreamer編程概念的了解。另外,不要忘了查看GStreamer網(wǎng)站上的已有文檔。為了理解這份手冊(cè),你必須對(duì)C語(yǔ)言有一個(gè)基本的了解。因?yàn)镚Streamer是基于GObject編程模型,所以本指南假定你也
8、已經(jīng)對(duì)GObject編程有了一個(gè)基本的了解。你或許也想看一下EricHarlow's的《DevelopingLinuxApplicationswithGTK+andGDK》一書(shū)。1.4.該指南的結(jié)構(gòu)為了幫助