一、前言
隨著多媒體硬體環境和軟體環境的不斷完善,目前,大部分電腦軟體開發都涉及多媒體軟體技術的應用。
進行多媒體應用程式設計,從原理上來說,可以採用從C 到多媒體專用開發系統(如TOOLBOOK、AUTHORWARE、DIRECTOR)等多種層次的工具。然而,由於多媒體軟體涉及的媒體複雜多元、開發週期短且需要多種專業人員參與,因此,為了能進行實用且高效的開發,必須選用簡單易用、開發效率高的軟體。
VisualBasic是Microsoft公司開發的Windows程式設計工具軟體。由於它具有先進的設計思想、快速易掌握的使用方法及控制媒體對象手段靈活多樣等特點,受到了多媒體軟體開發人員的關注和青睞,也因此成為多媒體應用程序開發的理想工具。
二、VisualBasic的多媒體控制MCI.OCX
MCI(媒體控制介面)是Microsoft公司為實現Windows系統下設備無關性而提供的媒體控制介面標準。使用者可以方便地使用MCI控制標準的多媒體設備。
MCI包含在Windows多媒體擴充的MMSYSTEM模組中,用來協調事件間以及MCI裝置驅動程式間的通訊,提供了與裝置無關的介面屬性。通常應用程式是透過指定一個MCI設備類型來區分MCI設備,設備類型指明了目前實際使用設備的物理類型,不同的設備類型使用不同的控制項屬性來進行描述(見附表1)。
從使用的控制方式上來說,MCI設備分為複合和簡單兩類。一個簡單MCI設備並不需要設備元素。例如,CD音訊和音碟機就是在一個已經安裝好了的硬碟上工作的,它們不需要應用程式為其操作的媒體內容提供任何資訊。但對於複合的MCI設備,就需要應用程式提供設備元素,也就是一個包含全部路徑名的來源資料檔或目的檔。
VisualBasic語言的CustomControl(使用者控制元件)概念體現了當今軟體設計的發展潮流--物件導向技術,程式設計者可以在VisualBasic的工具箱(Toolbox)中嵌入各式各樣五花八門的使用者控件,每個使用者控制部件都有一定的屬性和操作方法,程式設計者透過屬性的設定和方法的控製完成特定的功能。為了方便控制多媒體,專業版VisualBasic工具箱中提供了一個用於多媒體目的的使用者控制項--MCI.OCX。
多媒體MCI控制MCI.OCX專用於對多媒體控制介面MCI設備的多媒體資料檔案實施記錄和回放,從目的效果上來說,該控制透過一組按鈕來發出種種設備控制命令以實現對諸如:音訊面板、MIDI音序器、CD-ROM驅動器、音訊CD播放機、錄影帶播放、錄音帶錄影等設備的控制。在VisualBasic程式設計時,當在表中加入多媒體MCI控制項時(在工具箱內雙擊MCI控制項),則出現下列按鈕群:向前(PRev)、向後(Next)、播放(Play)、暫停( Pause)、返回(Back)、單步(Step)、停止(Stop)、記錄(Record)和出帶(Eject)。
應用程式對MCI的這組按鈕操作非常靈活方便,如當我們開啟一個MCI設備後,就可以根據該設備類型的屬性隨時從控制項中選擇合適的狀態按鈕來表示即刻設備的物理狀態。所有MCI控制項可以有下列幾種方式來編程:⑴控制項及其各按鈕的可見性和啟用性;⑵可變或完全對控制項進行重新定義;⑶在一個視窗表格中可以同時控制多個裝置。
三、多媒體控制部件MCI.OCX的調用
在VisualBasic3.0專業版中,多媒體控制MCI.OCX(在VisualBasic3.0和4.0中,多媒體控制的副檔名為.VBX)是作為可選用元件提供的。為了使用它,首先要執行FileAddFile選單指令,把Windowssystem目錄下的MCI.OCX加入工具箱(Toolbox)中,這時會在工具箱中出現對應的MCI.OCX圖示。若使用的是VisualBasic4.0版(或5.0版),選擇oolsCustomControls選單或直接鍵入Ctrl T,即可出現對話框,在AvailableControls列錶框中選取MicrosoftMultimediaControls條目旁的檢查框,同樣會在工具箱中出現MCI .OCX圖示。
雙擊工具箱中的多媒體控制項MCI.OCX圖標,呼叫MCI.OCX控制項之後,表單FORM將出現一排灰色的媒體控制按鈕(九個)。
四、VisualBasic多媒體應用程式設計步驟
多媒體控制MCI.OCX包含有一組進階的與裝置無關的控制指令。在使用此多媒體控制時,首先用OPEN指令開啟MCI裝置(多媒體裝置)並建立一個與之對應的檔案,以便來進行錄影或放等操作(但是對諸如CDAudio、VCR和錄影帶不能使用對應檔案)。一旦設備開啟成功,就可以向它發出各種操作命令(請參閱附表的按鈕命令)來完成指定的工作任務。最後記住,要用Close指令來關閉設備和資料檔。
使用MCI.OCX來進行多媒體應用程式開發是很方便的,因為大多數屬性都是容易理解的,其中Command屬性特別重要,它是在運行過程中向多媒體設備發出命令。格式為:
Form.Mmcontrol.Command=cmdstring$
其中,cmdstring$變數是如下執行指令名稱:Open、Close、Play、Pause、Stop、Back、Step、Prev、Next、Seek、Record、Eject、Sound和Save。一旦給其命令設置,它就立刻執行,所發生的錯誤存在Error屬性中。
以下以播放DEMO.WAV(波形檔)檔案為例,說明VisualBasic多媒體應用程式設計步驟。
首先,建立一個包含有多媒體控制(MCI.OCX)的表格(Form),於是螢幕上顯示出形狀類似錄音機的控制鍵,不過這時多媒體控制部件是不能馬上拿來用的(各鍵呈灰色) ,須透過程式碼改變鍵的狀態。
其次,在Form_Load過程中,插入對應程式碼。如下
SubForm_Load()
'在發出OPEN指令前要設定多媒體設備的屬性
Form1.MMControl1.Notify=False
Form1.MMControl1.Wait=True
Form1.MMControl1.Shareable=False
Form1.MMControl1.DeviceType="WaveAudio"
Form1.MMControl1.FileName="c:windowss
Mmdatademo.wav"
Form1.MMControl1.Command="Open"
EndSub
最後,執行上述程序,控制鍵呈現黑色,這時就可以使用Play、Record等鍵操作資料檔DEMO.WAV了。例如滑鼠點選Play鍵就能聽到.WAV音效(電腦要裝有發音裝置)。
透過上述陳述,不難發現,VisualBasic利用多媒體控制MCI.OCX設貧嗝教逵τ貿?序很容易掌握。
五、VisualBasic多媒體應用程式設計實例
1.播放CD音樂
在許多多媒體軟體系統中,都提供了雷射唱盤的播放軟體,利用多媒體控制MCI.OCX,我們可以輕鬆地編制出符合自己使用要求的簡易雷射唱盤播放機。
表1給出了簡易CD播放器的主要控制部件定義,其後是對應於各個觸發事件的原始程式碼。
完整的來源程式清單如下:
`CD播放機實用程式
`運行程式前請在CD-ROM驅動器中裝入雷射唱碟'“LOAD”按鈕觸發事件
PrivateSubCommand1_Click()
`裝入CD唱片
OnErrorGoToMCI_ERROR
MMControl1.Command="Open"
OnErrorGoTo0
`設定時間格式
MMControl1.TimeFormat=vbMCIFormatTmsf
`關閉LOAD按鈕,顯示圖片
Command1.Enabled=False
Picture1.Picture=Picture3.Picture
`設定初始軌道數
Label1.Caption="1"
ExitSub
MCI_ERROR:
DisplayErrorMessageBox
ResumeMCI_EXIT
MCI_EXIT:
UnloadCD
EndSub
PrivateSubForm_Load()
MMControl1.Wait=True
MMControl1.UpdateInterval=0
`設定設備類型
MMControl1.DeviceType="CDAudio"
`設定缺省軌道數為0
Label1.Caption="0"
ndSub
PrivateSubForm_Unload(CancelAsInteger)
MCITest.Show
EndSub
'“出帶”按鈕觸發事件
PrivateSubMMControl1_EjectClick(CancelAsInteger)
Command1.Enabled=True
Picture1.Picture=Picture2.Picture
MMControl1.UpdateInterval=0
OnErrorGoToMCI_ERROR2
MMControl1.Command="Eject"
MMControl1.Command="Close"
OnErrorGoTo0
Label1.Caption="0"
Label3.BackColor=&H404040
ExitSub
MCI_ERROR2:
DisplayErrorMessageBox
ResumeNext
EndSub
'“向前”按鈕觸發事件
PrivateSubMMControl1_NextCompleted(ErrorCodeAsLong)
Label1.Caption=Str$(MMControl1.Track)
EndSub
'“暫停”按鈕觸發事件
PrivateSubMMControl1_PauseClick(CancelAsInteger)
MMControl1.UpdateInterval=0
Label3.BackColor=&H404040
EndSub
'“播放”按鈕觸發事件
PrivateSubMMControl1_PlayClick(CancelAsInteger)
MMControl1.UpdateInterval=1000
Label1.Caption=Str$(MMControl1.Track)
EndSub
'“向後”按鈕觸發事件
PrivateSubMMControl1_PrevCompleted(ErrorCodeAsLong)
Label1.Caption=Str$(MMControl1.Track)
EndSub
PrivateSubMMControl1_StatusUpdate()
Label1.Caption=Str$(MMControl1.PositionAnd&HFF)
IfMMControl1.Mode=vbMCIModePlayThen
Label3.BackColor=&H80FF&
Else
Label3.BackColor=&H404040
EndIf
EndSub
'“停止”按鈕觸發事件
PrivateSubMMControl1_StopClick(CancelAsInteger)
MMControl1.UpdateInterval=0
Label3.BackColor=&H404040
MMControl1.To=MMControl1.Start
MMControl1.Command="Seek"
MMControl1.Track=1
Label1.Caption="1"
EndSub
2、播放AVI(音訊視訊介面)文件
電影(包括聲音和影像)是廣大電腦工作者最關心的媒體訊息之一,電影處理技術也是多媒體關鍵技術之一。而在多媒體系統中,AVI(AudioVideoInterface,音訊視訊介面)檔案是儲存電影(包括聲音和影像)的標準格式,這些AVI檔案一般是透過擷取即時視訊訊號得來的,也可以透過掃描器來擷取影像或使用動畫製作軟體得到。於是,螢幕視窗上的音訊視訊操作,就變成了對AVI檔案(檔案後綴為AVI)的處理。在實際工作中,播放AVI檔案(即影片)的方法有許多種,而其中以利用VisualBasic的多媒體控制方法最為簡單、方便。以下以一個具體實例來說明如何播放AVI檔案:假設使用者目前目錄下有名字為DEMO.AVI的視訊音訊文件,則利用VisulBasic播放該影片需要經過以下步驟:
(1)在VisualBasic的窗體中加入一個MMControl多媒體控制、一個PictureBox圖片框控制項和兩個ComandButton指令按鈕元件;
(2)設定各個控制項的屬性,其中窗體命名為Form1,MMControl多媒體控制項命名為MMControl1、PictureBox圖片框控制項命名為Picture1、兩個ComandButton指令按鈕控制項分別命名為Play和Close;
(3)編寫各觸發事件原始程式碼並且運行。原始程式碼為:
PrivateSubPlay_Click()
MMControl1.Filename="DEMO.AVI"
MMControl1.DeviceType=="AVIVIDEO"
MMControl1.hWndDisplay=Picture1.hWnd
MMControl1.Command="OPEN"
MMControl1.To=1
MMControl1.Command="SEEK"
MMControl1.Command="PLAY"
EndSub
PrivateSubClose_Click()
MMControl1.Command="STOP"
MMControl1.Command="CLOSE"
EndSub
值得注意的是:在播放AVI檔案之前,首先應該把AVI(音訊視訊)驅動程式安裝在Windows下。 AVI的驅動程式名為MCIAVI.DRV,必須將它拷貝到WINDOWSSYSTEM目錄下,同時在SYSTEM.INI檔案的[MCI]部分加上:
AVIVIDEO=MCIAVI.DRV
這樣,執行Windows時,Windows會自動地將AVI的驅動程式安裝好。
以上僅描述了利用多媒體控制部件播放音訊檔案(.WAV)、CD唱片和音訊視訊檔案(.AVI)的操作過程。實際上利用多媒體控制元件同樣可以播放動畫檔案(.FLI、.FLC)、MIDI檔案等其他媒體資訊。
六、結束語
透過前面論述,不難看出:利用VisualBasic提供的多媒體控制元件MCI.OCX,廣大電腦使用者可以方便、快速、高效率地開發出各種多媒體應用程式。但需要強調的是:開發設計VisualBasic多媒體應用程序,除了可以利用多媒體控制部件以外,還可以採用其他手段,例如通過調用API函數等等(鑑於篇幅,這裡未做討論)。可見,VisualBasic確實是專業與非專業多媒體軟體開發人員共同擁有的理想開發工具。
附表1MCI設備類型定義
設備類型設備描述
CDAudio 雷射唱盤播放設備
DAT 數位化磁帶音訊播放機
DigitalVideo動態數位視訊影像設備
Animation 動畫播放設備
Other 未給出標準定義的MCI設備
Overlay 類比視訊影像疊加設備
Sequence MIDI音序產生器
VCR 可以使用程式控制的磁碟錄影機
VideoDisc 可以使用程式控制的雷射視盤機
WaveAudio 播放數位化波形音訊的設備???
附表2多媒體控制部件特有事件列表
事件說明
Done 完成MCI指令動作(Notify為真)
ButtonClick 點擊按鈕
ButtonCompleted按鈕執行指令完成
ButtonGetFocus 按鈕獲得輸入焦點
ButtonLostFocus按鈕失去輸入焦點
StatusUpdate 更新媒體控制物件的狀態資訊->