DirectShow 的原理及其應(yīng)用
- 期刊名字:微型電腦應(yīng)用
- 文件大?。?61kb
- 論文作者:鄭鴻,陳青山,張文淵
- 作者單位:上海交通大學(xué)自動(dòng)化
- 更新時(shí)間:2020-06-12
- 下載次數(shù):次
Microcomputer Applications Vol 17. No 8, 2001開(kāi)發(fā)應(yīng)用微型電腦應(yīng)用2001年第17卷第8期Directshow的原理及其應(yīng)用鄭鴻①陳青山②張文淵③摘要本文介紹了微軟提供的多媒體開(kāi)發(fā)工具因此,用戶可以以三種方式訪問(wèn) Direct show:COM接口,Direct show的工作原理,并給出了一個(gè)基于 Direct show的網(wǎng)媒體播放機(jī)控件或媒體控制接口(MCI),如圖1所示。絡(luò)MPEG-1解碼器的實(shí)例關(guān)鍵詞 Direct Show filter Filter Graph COM應(yīng)用程序概述ActiveMovie媒體控制接控件隨著數(shù)字視音頻處理、數(shù)字信息存儲(chǔ)技術(shù)的不斷發(fā)展,基過(guò)濾器圖表管理于數(shù)字編解碼的多媒體應(yīng)用已經(jīng)越來(lái)越深入到人們的日常生源過(guò)濾忑鞅換過(guò)濾思遞交過(guò)濾活中。為了向開(kāi)發(fā)人員提供功能更完備的處理軟件,在以前推出 Activemovie和Ⅴ ideo for windows的基礎(chǔ)上, Microsoft謀體源端媒體目的端公司推出了新一代多媒體開(kāi)發(fā)軟件包— Direct show。Direct show主要提供播放本地文件或 Internet服務(wù)器上國(guó)1 Directshow的休泉構(gòu)的多媒體數(shù)據(jù),以及從視音頻釆集卡等硬件設(shè)備中捕荻多媒體流的功能。它能夠播放多種壓縮格式的視音頻文件(或流)包括MPEG, Quick Time,AVl,WAV以及基于Ⅴ ideo for過(guò)濾器圖表的基本組成Windows和wDM( Windows Driver model)的視音頻捕獲個(gè)過(guò)濾器圖表是由不同類型的過(guò)濾器組合而成的。過(guò)Direct show的核心是被稱為過(guò)濾器(er)的插件式模濾器是一個(gè)執(zhí)行特殊任務(wù)的COM對(duì)象,例如從磁盤讀數(shù)據(jù)塊系統(tǒng)該系統(tǒng)配置在過(guò)濾器圖表( filter graph)中。過(guò)濾器圖大多數(shù)過(guò)濾器可類成表1中三種類型中的一種表管理器( filter graph manager)組件負(fù)責(zé)檢查這些過(guò)濾表1主要的過(guò)濾器及其功能的連接和控制過(guò)濾器間的數(shù)據(jù)流動(dòng)。類型功能二、 Directshow的體系結(jié)構(gòu)從源端(如磁盤文件, Internet服務(wù)器,VCR)讀源過(guò)濾器數(shù)據(jù),將其引入過(guò)濾器圖表Direct show自身是一種通過(guò)自定義或內(nèi)置的過(guò)濾器來(lái)控傳換過(guò)濾器獲得、處理、往前傳遞數(shù)據(jù)制和處理多媒體數(shù)據(jù)的體系結(jié)構(gòu)。該體系結(jié)構(gòu)定義了如何控制和處理過(guò)濾器內(nèi)部和相互間的多媒體數(shù)據(jù)流。每個(gè)過(guò)濾器交過(guò)濾遞交數(shù)據(jù):通常被遞交到一個(gè)硬件設(shè)備,但也都擁有輸入或輸出針。過(guò)濾器之間通過(guò)過(guò)濾器圖表結(jié)構(gòu)相互可以遞交到任何能夠接受媒體輸入的位置連接起來(lái)。應(yīng)用程序通過(guò)過(guò)濾器圖表管理器對(duì)象裝配過(guò)濾器圖表,并且在其中移動(dòng)數(shù)據(jù)。默認(rèn)情況下,過(guò)濾器圖表管理器過(guò)濾器圖表通過(guò)過(guò)濾器來(lái)傳遞多媒體數(shù)據(jù)。一個(gè)過(guò)濾器將自動(dòng)處理數(shù)據(jù)流。例如,它在需要時(shí)自動(dòng)插入正確的編解碼往下傳遞媒體數(shù)據(jù)到下一個(gè)過(guò)濾器。上游過(guò)濾器描述傳遞數(shù)器,并且自動(dòng)將轉(zhuǎn)換過(guò)濾器的輸出針連接到默認(rèn)的遞交過(guò)濾據(jù)的過(guò)濾器,下游的過(guò)濾器描述數(shù)據(jù)應(yīng)到達(dá)的下一個(gè)過(guò)濾器。器( rendering filter)。用戶也可以自定義過(guò)濾器而不使用這種差異很重要,因?yàn)槊襟w數(shù)據(jù)往下流動(dòng),而其它信息可以往Directshow提供的默認(rèn)連接上傳遞應(yīng)用程序可以通過(guò)過(guò)濾器圖表管理器所提供一組組件對(duì)對(duì)過(guò)濾器處理的每一個(gè)流,它至少實(shí)現(xiàn)到一個(gè)針上。針是象模型(COM)接口來(lái)訪問(wèn)過(guò)濾器圖表。可以直接調(diào)用過(guò)濾器中國(guó)煤化工表現(xiàn)為過(guò)濾器上的單向數(shù)表管理器接口來(lái)控制媒體流,獲得過(guò)濾器事件,或者也可以H據(jù)流CNMHG提供與其它針相連并傳送使用媒體播放機(jī)控件來(lái)播放媒體文件。數(shù)據(jù)的按上海交通大學(xué)自動(dòng)化系碩士研究生上海交通大學(xué)自動(dòng)化研究生上海方數(shù)擦通大學(xué)自動(dòng)化系研究員上海200Microcomputer Applications Vol 17. No 8, 2001開(kāi)發(fā)應(yīng)用微型電腦應(yīng)用2001年第17卷第8期dr.cpp四個(gè)文|輸出針輸入針?lè)N換過(guò)輸出輸入針這器件作為源過(guò)濾器基礎(chǔ),同時(shí)改寫(xiě) Asyncflt.h中 Cmem Strean類,在Read方法實(shí)現(xiàn)代碼中,加入從存儲(chǔ)MPEG-1包的內(nèi)圖2針連接示意圖存區(qū)拷貝數(shù)據(jù)進(jìn)入源過(guò)濾器緩存的代碼輸入針接收數(shù)據(jù)進(jìn)入過(guò)濾器,輸岀針向其它過(guò)濾器提供3.建立過(guò)濾器圖表管理器數(shù)據(jù)。源過(guò)濾器為文件中的毎個(gè)數(shù)據(jù)流提供一個(gè)輸出針。典型根據(jù)MPEG-1數(shù)據(jù)流分解程序,判定網(wǎng)絡(luò)數(shù)據(jù)包的媒的轉(zhuǎn)換過(guò)濾器,如壓縮/解壓縮( codec)過(guò)濾器,提供一個(gè)輸入體類型是否為指定類型。為簡(jiǎn)單起見(jiàn)我們?cè)O(shè)定 majortype針和一個(gè)輸出針,而音頻輸出過(guò)濾器僅擁有一個(gè)輸入針MEDIATYPE StreaMEDIASUBTYPE為了使過(guò)濾器圖表能夠正常工作,過(guò)濾器必須以正確的 MPEGISystem,當(dāng)然也可以根據(jù)分解程序的結(jié)果自動(dòng)設(shè)定媒順序相連數(shù)據(jù)流也必須以正確的次序啟動(dòng)和停止過(guò)濾器圖體類型。表管理器負(fù)責(zé)連接過(guò)濾器和控制媒體流。它能夠搜尋可以遞調(diào)用 CoCreateinstance方法創(chuàng)建過(guò)濾器圖表實(shí)例交指定媒體類型的過(guò)濾器配置,并且建立與之相應(yīng)過(guò)濾器圖CoCreateInstance CLSID. FilterGraph, NULL表過(guò)濾器圖表也能被預(yù)置在這種情況下過(guò)濾器圖表管理器 CLSCTX INPROC, IID IgraphBuilder,(void**8m不需要搜尋配置當(dāng)搜尋遞交配置時(shí),過(guò)濾器圖表管理器使用過(guò)濾器映射其中m-pig為 Ifilter Graph型指針,指向生成的過(guò)濾器器,首先讀注冊(cè)表決定可用的過(guò)濾器類型接著過(guò)濾器圖表圖表管理器不斷地試圖連接接受該數(shù)據(jù)類型的過(guò)濾器,直到數(shù)據(jù)然后調(diào)用m-pig的 AddFilter方法,將已生成的源過(guò)濾到達(dá)遞交過(guò)濾器每個(gè)過(guò)濾器都注冊(cè)有一個(gè)優(yōu)先值在都可以器加入過(guò)濾器圖表中。同時(shí)可以根據(jù)需要調(diào)用 m-pifg Query處理數(shù)據(jù)時(shí),優(yōu)先值最高的過(guò)濾器首先被使用Interface方法調(diào)用必需的接口,如 igraphBuilder等。每次調(diào)用四、基于 Directshow的網(wǎng)絡(luò)MPEG接口時(shí),應(yīng)調(diào)用 Addref方法,增加該接口的引用次數(shù)。停止解碼器設(shè)計(jì)調(diào)用該接口時(shí),應(yīng)調(diào)用 Release方法,降低該接囗的引用次數(shù),旦該接口的引用次數(shù)降為零,則系統(tǒng)將釋放為引用該接口我們利用 Direct show能夠?qū)崿F(xiàn)網(wǎng)絡(luò)視音頻數(shù)據(jù)實(shí)時(shí)解所創(chuàng)建的所有資源這在網(wǎng)絡(luò)多媒體中,往往是整個(gè)系統(tǒng)的核心組成部分,因4.啟動(dòng)解碼器此設(shè)計(jì)一個(gè)功能強(qiáng)大而穩(wěn)定的解碼器是非常重要的關(guān)鍵環(huán)調(diào)用的 igraphBuilder的 Render方法,將源過(guò)濾器的輸節(jié)。這里給出一個(gè)網(wǎng)絡(luò)MPEG-1解碼器的主要設(shè)計(jì)步驟,其出針的數(shù)據(jù)加入過(guò)濾器圖表結(jié)構(gòu)組成如圖3所示m-pigb->Render(m-rdr->Get Pin());結(jié)構(gòu)組成其中m-pigb為 IgraphBuiler型指針,m-rdr為指向源過(guò)濾器的指針然后只要調(diào)用Imeol的Run方法就可以啟動(dòng)解“輸出針上“輸入針這要輸出針輸入針器碼器。同時(shí)應(yīng)該利用 Video window接口設(shè)置圖像顯示的窗口句柄,以及圖像大小等,以便荻得理想的顯示效果圖2針連接示意國(guó)5.暫?;蛲V菇獯a、獲得解碼信息可以調(diào)用Control的 Pause和Stop方法暫停和停止解碼。如果想獲得更多關(guān)于解碼器的解碼信息,可以調(diào)用ideo接口。通過(guò)調(diào)用該接口的一些方法,如Get TypeInfo, get- Avg Time Per Frame, get- Bit Rate設(shè)計(jì)步驟iMage等方法,可以分別獲得當(dāng)前1.設(shè)計(jì)網(wǎng)絡(luò)接收模塊媒體類型、當(dāng)前幀率、位速率、當(dāng)前圖像大小、當(dāng)前圖像拷貝等創(chuàng)建UDP套接字并建立數(shù)據(jù)接收緩存隊(duì)列,用來(lái)存放重要中國(guó)煤化工些接口對(duì)接碼器進(jìn)行更高數(shù)據(jù)包級(jí)的CNMHG出了一些常用的接囗及其2.設(shè)計(jì)源過(guò)濾器主要功能源過(guò)濾器負(fù)責(zé)接收由網(wǎng)絡(luò)接收模塊采集的MPEG-1數(shù)(下轉(zhuǎn)第62頁(yè))據(jù),并將其遞交給MPEG-1分解過(guò)濾器們可勢(shì)費(fèi)搪yc例程(SDK附帶異步讀過(guò)濾器):以(上接第42頁(yè))表2常用的接口及其主要功能碼器。妾口名功能描述五、結(jié)束語(yǔ)IfilterGraph過(guò)濾器圖表的抽象描述繼承于 Ifitlter Graph,允許應(yīng)用程序調(diào)用Igraphbuilde本文主要講述了 Direct show的主要組成部分和工作原過(guò)濾器圖表管理器創(chuàng)建過(guò)濾器圖表允許應(yīng)用程序通過(guò)圖表中的過(guò)濾器控制理,并給出了一個(gè)用 Direct show實(shí)現(xiàn)的網(wǎng)絡(luò)MPEG-1解碼IMediacontrol器,對(duì)從事數(shù)字監(jiān)控及基于 Internet/LAN的視音頻處理以及媒體流從事多媒體軟件開(kāi)發(fā)的編程人員有一定的參考價(jià)值Video Window支持視頻遞交過(guò)濾器的視頻窗口特性獲得時(shí)長(zhǎng)、啟動(dòng)停止時(shí)間、速率、當(dāng)前位置Imedia Position參老立獻(xiàn)等信息中國(guó)煤化工Imedia event支持過(guò)濾器圖表和過(guò)濾器的事件通知CNMHG SDK 6. 0. Microsoft抽象一個(gè)已經(jīng)具有輸入輸出連接的對(duì)象I basic video并能對(duì)其進(jìn)行動(dòng)態(tài)整合2] Guy Eddon Henry,COM組件編程技術(shù)內(nèi)幕,北京希望電實(shí)際應(yīng)用該解碼器的結(jié)果表明,它能很好地完成解碼功子出版社,2000.4能,并能對(duì)解于數(shù)較理想的控制,是一套較成功的軟件解(收稿日期:2001年2月19日
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國(guó)甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護(hù)參考書(shū)十本免費(fèi)下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡(jiǎn)介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進(jìn)展 2020-06-12
-
精甲醇及MTO級(jí)甲醇精餾工藝技術(shù)進(jìn)展 2020-06-12
