DirectShow系列講座之一——DirectShow系統概述 (轉)
DirectShow系列講座之一——DirectShow系統概述 (轉)[@more@]流的處理,以其複雜性和技術性,一向廣受工業界的關注。特別伴隨著因特網的普及,流媒體在上的廣泛應用,怎樣使流媒體的處理變得簡單而富有成效逐漸成為了焦點問題。選擇一種合適的應用方案,事半功倍。此時,的DirectShow,給了我們一個不錯的選擇。
DirectShow是微軟公司提供的一套在平臺上進行流媒體處理的開發包,與開發包一起釋出。目前,DirectX最新版本為8.1。
那麼,DirectShow能夠做些什麼呢?且看,DirectShow為多媒體流的捕捉和回放提供了強有力的支援。運用DirectShow,我們可以很方便地從支援WDM模型的採集卡上捕獲資料,並且進行相應的後期處理乃至到中。它廣泛地支援各種媒體格式,包括A、Mpeg、Avi、Dv、、Wave等等,使得多媒體資料的回放變得輕而易舉。另外,DirectShow還整合了DirectX其它部分(比如DirectDraw、DirectSound)的技術,直接支援的,影片的非線性編輯,以及與數字攝像機的資料。更值得一提的是,DirectShow提供的是一種開放式的開發環境,我們可以根據自己的需要定製自己的。
接下去,我們需要對DirectShow有個整體的印象。參見以下DirectShow的系統示意圖:
圖中央最大的一塊即是DirectShow系統。DirectShow使用一種叫Filter Graph的模型來管理整個資料流的處理過程;參與資料處理的各個功能模組叫做Filter;各個Filter在Filter Graph中按一定的順序連線成一條“流水線”協同工作。大家可以看到,按照功能來分,Filter大致分為三類: Filters、TransfoFilters和Rendering Filters。Source Filters主要負責取得資料,資料來源可以是檔案、因特網、或者裡的採集卡、數字攝像機等,然後將資料往下傳輸;Transform Fitlers主要負責資料的格式轉換、傳輸;Rendering Filtes主要負責資料的最終去向,我們可以將資料送給音效卡、進行多媒體的演示,也可以輸出到檔案進行儲存。值得注意的是,三個部分並不是都只有一個Filter去完成功能。恰恰相反,每個部分往往是有幾個Fitler協同工作的。比如,Transform Filters可能包含了一個Mpeg的解碼Filter、以及影片色彩空間的轉換Filter、取樣頻率轉換Filter等等。除了系統提供的大量Filter外,我們可以定製自己的Filter,以完成我們需要的功能。下圖是一條典型的Avi檔案回放Filter Graph鏈路:
在DirectShow系統之上,我們看到的,即是我們的應用(Application)。應用程式要按照一定的意圖建立起相應的Filter Graph,然後透過Filter Graph Manager來控制整個的資料處理過程。DirectShow能在Filter Graph執行的時候接收到各種事件,並透過訊息的方式傳送到我們的應用程式。這樣,就實現了應用程式與DirectShow系統之間的互動。下圖給出了DirectShow應用程式開發的一般過程:
以上簡單介紹了DirectShow的系統結構,希望大家對這個強勁的應用已經有了大概的認識。如果你有興趣,可以詳細研究DirectX的幫助文件。DirectShow是一個強大的開發包;另外,它是基於COM的,因此要求程式設計師具有COM的一些基本知識。關於如何深入學習DirectShow應用結構以及開發自己的Filter,請參閱筆者的後續文章。筆者將從程式設計的角度,詳細講述來源於實際工作中的之談。
DirectShow是微軟公司提供的一套在平臺上進行流媒體處理的開發包,與開發包一起釋出。目前,DirectX最新版本為8.1。
那麼,DirectShow能夠做些什麼呢?且看,DirectShow為多媒體流的捕捉和回放提供了強有力的支援。運用DirectShow,我們可以很方便地從支援WDM模型的採集卡上捕獲資料,並且進行相應的後期處理乃至到中。它廣泛地支援各種媒體格式,包括A、Mpeg、Avi、Dv、、Wave等等,使得多媒體資料的回放變得輕而易舉。另外,DirectShow還整合了DirectX其它部分(比如DirectDraw、DirectSound)的技術,直接支援的,影片的非線性編輯,以及與數字攝像機的資料。更值得一提的是,DirectShow提供的是一種開放式的開發環境,我們可以根據自己的需要定製自己的。
接下去,我們需要對DirectShow有個整體的印象。參見以下DirectShow的系統示意圖:
圖中央最大的一塊即是DirectShow系統。DirectShow使用一種叫Filter Graph的模型來管理整個資料流的處理過程;參與資料處理的各個功能模組叫做Filter;各個Filter在Filter Graph中按一定的順序連線成一條“流水線”協同工作。大家可以看到,按照功能來分,Filter大致分為三類: Filters、TransfoFilters和Rendering Filters。Source Filters主要負責取得資料,資料來源可以是檔案、因特網、或者裡的採集卡、數字攝像機等,然後將資料往下傳輸;Transform Fitlers主要負責資料的格式轉換、傳輸;Rendering Filtes主要負責資料的最終去向,我們可以將資料送給音效卡、進行多媒體的演示,也可以輸出到檔案進行儲存。值得注意的是,三個部分並不是都只有一個Filter去完成功能。恰恰相反,每個部分往往是有幾個Fitler協同工作的。比如,Transform Filters可能包含了一個Mpeg的解碼Filter、以及影片色彩空間的轉換Filter、取樣頻率轉換Filter等等。除了系統提供的大量Filter外,我們可以定製自己的Filter,以完成我們需要的功能。下圖是一條典型的Avi檔案回放Filter Graph鏈路:
在DirectShow系統之上,我們看到的,即是我們的應用(Application)。應用程式要按照一定的意圖建立起相應的Filter Graph,然後透過Filter Graph Manager來控制整個的資料處理過程。DirectShow能在Filter Graph執行的時候接收到各種事件,並透過訊息的方式傳送到我們的應用程式。這樣,就實現了應用程式與DirectShow系統之間的互動。下圖給出了DirectShow應用程式開發的一般過程:
以上簡單介紹了DirectShow的系統結構,希望大家對這個強勁的應用已經有了大概的認識。如果你有興趣,可以詳細研究DirectX的幫助文件。DirectShow是一個強大的開發包;另外,它是基於COM的,因此要求程式設計師具有COM的一些基本知識。關於如何深入學習DirectShow應用結構以及開發自己的Filter,請參閱筆者的後續文章。筆者將從程式設計的角度,詳細講述來源於實際工作中的之談。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996730/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DirectShow系列講座之二——Filter原理 (轉)Filter
- DirectShow系列講座之三——開發自己的Filter (轉)Filter
- DirectShow Utility
- DirectShow之介面實戰篇(一) (轉)
- DirectShow之介面實戰篇(二) (轉)
- DirectShow之介面實戰篇(三) (轉)
- DirectShow技術描述與應用(3) (轉)
- DirectShow技術描述與應用(2) (轉)
- Oracle SQL效能最佳化系列講座之一(轉)OracleSQL
- C# DirectShow 播放多媒體C#
- DirectShow應用程式設計介紹(翻譯) (轉)程式設計
- PowerBuilder應用開發系列講座(1) (轉)UI
- Managed DirectX中的DirectShow應用(簡單Demo及原始碼)原始碼
- Oracle SQL效能最佳化系列講座之三(轉)OracleSQL
- Oracle SQL效能最佳化系列講座之二(轉)OracleSQL
- ORACLE系統概述(轉)Oracle
- 小學語文教學系列講座
- AWS系列之一 亞馬遜雲服務概述亞馬遜
- 編解碼器軟體支援 WMP,因為它使用 Directshow 編解碼器
- HP-UX 系統概述(轉)UX
- Oracle8i系統概述(轉)Oracle
- SVG 座標系統SVG
- 資訊系統專案管理系列之一:緒論專案管理
- Linux系統呼叫講義(轉)Linux
- windows xp 加密檔案系統(EFS)概述(轉)Windows加密
- 旅店管理系統中的類的概述 (轉)
- Oracle9i專題講座精華集粹(轉)Oracle
- OpenGL ES on iOS --- 座標系統與矩陣轉換iOS矩陣
- OpenGL系列教程之一:OpenGL(轉)
- Linux系統管理-系統概述Linux
- 鴻蒙系統系列教程2-鴻蒙OS系統分散式操作講解鴻蒙分散式
- UNIX作業系統概述及基本知識(轉)作業系統
- 異地容災系統技術概述(轉載)
- Qt - 座標系及轉換QT
- Donkey框架之一:概述框架
- 推薦系統概述
- ORACLE系統概述(5)Oracle
- ORACLE系統概述(4)Oracle