11. 多媒體

本章要介紹如何把聲音和視訊放進應用程式裡。

要執行本章中所介紹的範例程式,系統必須配備音效卡和媒體驅動程式,另外,需要一個WAV檔以及一個AVI檔來播放聲音和視訊。

如何播放聲音檔(WAV)?
 

在Visual Basic中我們有好幾種方式可以播放聲音檔,在這裡我們討論兩種最簡單的方法:第一種,使用Windows提供的mciExecute API函式,第二種使用Visual Basic提供的Multimedia控制項。

mciExecute函式
 

以下的程式告訴你如何宣告mciExecute函式,然後利用它來播放WAV檔。把這段程式放進新專案的空白的表單裡,執行這個專案,然後在表上的任何一處按一下滑鼠左鍵。

Option Explicit

Private Declare Function mciExecute _
Lib "winmm.dll" ( _
    ByVal lpstrCommand As String _
) As Long

Private Sub Form_Click()
    Dim intX
    intX = mciExecute("Play C:\Windows\Media\Office97\whoosh.wav")
    `Change filename to name of your sample WAV file
End Sub

我們也可以用mciExecute函式來執行其他與多媒體相關的指令,稍候我們就會看到如何用這個函式來放播視訊檔。

Multimedia控制項
 

Visual Basic提供的Multimedia控制項是播放聲音檔的絕佳工具,而且只要稍微修改範例程式,就可以用這個控制項來播放AVI檔和MMM(Multimedia Movie)檔,甚至可以控制多媒體硬體設備,在這裡我們只討論聲音檔的播放。

如果要執行以下的範例程式,必須要在一張空白的表單上產生一個Multimedia控制項。如果這個控制項不在工具箱中(在工具箱上顯示的名稱是MMControl),那麼要在「設定使用元件」對話方塊中加入Microsoft Multimedia Control 6.0。

把MMControl控制項的Name屬性設定為mciTest,Visible屬性設為False,在表單上加入以下這段程式碼,這樣這個隱藏的控制項就可以播放背景音效了。如果想知道MMControl控制項上哪一個按鈕有什麼功能,請參考Visual Basic的線上說明。

Option Explicit

Private Sub Form_Click()
    With mciTest
        .FileName = "C:\Windows\Media\Office97\Whoosh.wav"
        `Change filename to name of your sample WAV file
        .Command = "Sound"
    End With
End Sub

如何播放視訊(AVI)檔?
 

在一個已經設定好可以播放AVI檔的系統上播放AVI檔非常容易,只要呼叫Windows的mciExceute API函式,或是使用Visual Basic的Multimedia控制項就可以。

mciExecute函式
 

以下的程式碼告訴你如何宣告mciExecute API函式,然後用它來播放一個視訊檔。和前面提到的步驟一樣,把以下的程式碼加入到張表單上,執行這個專案,然後在表單上任何一處按一下滑鼠左鍵,就可看到播放的視訊。筆者假定你把Windows 95的光碟放在D槽,而且播放由Windows 95提供的樣本視訊檔。如果你的視訊檔在別處,可以自行修改程式。這個程式幾乎和前面提到播放WAV檔的程式一模一樣。

Option Explicit

Private Declare Function mciExecute _
Lib "winmm.dll" ( _
    ByVal lpstrCommand As String _
) As Long

Private Sub Form_Click()
    Dim x
    x = mciExecute("Play D:\Funstuff\Videos\Welcome1.avi")
    `Change filename to name of your sample AVI file
End Sub

圖11-1所顯示的是執行中的表單和視訊檔。


 

 圖11-1 播放中的視訊檔

Multimedia控制項
 

Visual Basic的Multimedia控制項是一個播放視訊檔的好工具,Visual Basic的線上說明對Multimedia控制項上面的按鈕有詳細的說明,而在這裡筆者要告訴你如何藉由程式讓隱藏的控制項播放視訊檔。

首先,在新專案的表單上放入一個Multimedia控制項,把這個控制項的屬性Name設定為mciTest,屬性Visible設定為False,然後把以下的程式碼加到表單中,執行這個專案,在表單上任何一處按一下滑鼠左鍵,就會看到執行的結果。如果你的AVI檔所在的位置和程式中的位置不同,請改變這個部分。

Option Explicit

Private Sub Form_Click()
    With mciTest
        .FileName = "D:\Funstuff\Videos\Welcome1.avi"
        .Command = "Open"
        .Command = "Play"
    End With
End Sub

Private Sub mciTest_Done(NotifyCode As Integer)
    mciTest.Command = "Close"
End Sub

本來筆者要把Close陳述放在Play陳述式後面,結果發現視訊檔打開後立刻就結束了。我們後來用了Done事件程序解決了這個問題,在視訊檔播放結束後,系統會驅動Done事件,這時我們就可以關閉這個視訊檔了。

如何播放音樂CD?
 

Multimedia控制項讓Visual Basic應用程式可以方便地播放音樂CD;如果把Multimedia控制項的Visible屬性設為True,你就可以看見CD音響的操作面板,而如果把Visible設為False,會把這個界面隱藏起來,但仍然可以從程式中播放音樂。

以下這個範例是以第二種方式來處理音樂播放的工作。在圖11-2中,你可以看到一張只有一個Previous按鈕和一個Next按鈕的表單。當程式啟動時,CD中的第一首曲子就會自動播放;如果按下Previous或Next按鈕,程式會跳到前一首或下一首曲子的開始,目前正播放第幾首和CD上總共有幾首,都會顯示在表單上。如果你關閉表單,音樂即停止播放。

要達到上述這些功能並不需要用到大量的程式碼,而且即使要多加一些功能也並不困難,Multimedia控制項提供了相當豐富的屬性和物件方法,足以應付各種需求。在這個範例中,我們只用了一些最基本的功能。

首先,請建立一個新的標準執行檔專案,將表單的Name屬性設為frmMusic,存檔為MUSIC.FRM,而將專案存成MUSIC.VBP。把表單的Caption屬性設為"Music Machine",然後加上四種控制項:標籤控制項lblMusic、計時器控制項tmrMusic、Multimedia控制項mciMusic以及兩個指令按鈕控制項cmdPrev和cmdNext。圖11-2是設計階段中的表單,圖11-3則是程式執行的情形。請把以下這段程式碼加到表單中。

`MUSIC.FRM
Option Explicit

Private Sub cmdNext_Click()
    mciMusic.Command = "Next"
End Sub

Private Sub cmdPrev_Click()
    mciMusic.Command = "Prev"
End Sub

Private Sub Form_Load()
    With mciMusic
        .DeviceType = "CDAudio"
        .Command = "Open"
        .Command = "Play"
    End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
    With mciMusic
        .Command = "Stop"
        .Command = "Close"
    End With
End Sub

Private Sub tmrMusic_Timer()
    With mciMusic
        lblMusic.Caption = "Track No.:   " & .Track & _
            vbCrLf & "No. Tracks: " & .Tracks
    End With
End Sub

Music應用程式把Multimedia控制項的DeviceType屬性設為CDAudio,告訴Multimedia控制項準備播放一張音樂CD。在程式中,我們用Tracks和Track分別將CD中的資訊顯示在表單上,而常被用到屬性則是Command。Command屬性讓應用程式實際地指揮Multimedia控制項執行設備控制的動作,在這個程式中我們用到了Open、Play、Next、Prev、Stop和Close等命令,但實際上還有更多的命令可供我們使用,請參考線上手冊中有關Multimedia控制項的資訊。


 

 圖11-2 設計階段中的Music表單


 

 圖11-3 執行階段中的Music表單