[與此頁面相關聯的功能 MCI是舊版功能。 MediaPlayer已取代它。 MediaPlayer 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 MediaPlayer,而不是 MCI。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
播放 的命令(MCI_PLAY)將會開始播放裝置。 如果沒有任何旗標,此命令就會從目前的位置開始播放,並播放直到命令中斷或到達媒體或檔案結尾為止。 播放完畢後,目前的位置位於媒體結尾。 您也可以使用 seek (MCI_SEEK) 命令來變更目前的位置。
大部分支援 播放 命令的裝置也支援「從」(MCI_FROM)和「到」(MCI_TO)旗標。 這些旗標表示裝置應該啟動和停止播放的位置。 例如,下列命令會使用 mciSendString 函式,從第一個曲目開頭播放 CD 音頻光碟:
mciSendString("play cdaudio from 0", lpszReturnString,
lstrlen(lpszReturnString), NULL);
某些裝置類型會擴充此命令,以利用特定裝置的功能。 例如,播放 命令用於 影音光碟 裝置類型,包括 "快" (MCI_VD_PLAY_FAST)、"慢" (MCI_VD_PLAY_SLOW) 和 "掃描" (MCI_VD_PLAY_SCAN) 標誌。
播放 AVI 檔案
Windows 中的視訊檔案是由至少兩個交錯數據流所組成:視訊(圖片)數據流和音訊串流。 您可以使用 MCI 命令,輕鬆地播放這些音訊視訊交錯的檔案。 下列各節討論如何播放 AVI 檔案。
設定 MCIAVI 播放視窗
您的應用程式可以指定下列選項,以定義播放 AVI 檔案的播放視窗:
- 使用 MCIAVI 驅動程式的預設彈出視窗。
- 指定 MCIAVI 驅動程式可用來建立播放視窗的父視窗和視窗樣式。
- 指定 MCIAVI 驅動程式要用於播放的播放視窗。
- 在全螢幕顯示器上播放 AVI 檔案。
如果您的應用程式未指定任何視窗選項,MCIAVI 驅動程式會建立用來播放序列的預設視窗。 驅動程式會為開啟的 (MCI_OPEN) 命令建立此播放視窗,但在您的應用程式傳送命令以顯示視窗或播放檔案之前,它不會顯示視窗。 此預設播放視窗是一個彈出視窗,包含可調整大小的邊框、標題欄、厚框架、視窗 選單,以及 [最小化] 按鈕。
當應用程式發出 開啟 命令時,也可以指定父視窗句柄和視窗樣式。 在此情況下,MCIAVI 驅動程式會根據這些規格建立視窗,而不是預設彈出視窗。 您的應用程式可以指定 CreateWindow 函式可用的任何視窗樣式。 需要父窗口的樣式,例如WS_CHILD,應該包含父視窗句柄。
您的應用程式也可以建立自己的視窗,並透過使用 視窗(MCI_WINDOW)命令,向 MCIAVI 驅動程式提供控制代碼。 MCIAVI 驅動程式會使用此視窗,而不是建立自己的視窗。
當 MCIAVI 驅動程式建立播放視窗或從您的應用程式取得視窗句柄時,它不會顯示視窗,直到您的應用程式播放序列或傳送命令以顯示視窗為止。 您的應用程式可以使用 視窗 命令來顯示視窗,而不播放序列。 例如,下列命令會使用 mciSendString來顯示視窗:
mciSendString("window movie state show", lpszReturnString,
lstrlen(lpszReturnString), NULL);
在此範例中,“movie” 是數位視訊裝置的別名。
您的應用程式也可以全螢幕播放 AVI 檔案。 若要播放全螢幕,請將命令 播放 (MCI_PLAY) 修改為包含「fullscreen」 (MCI_MCIAVI_PLAY_FULLSCREEN)旗標。 當您的應用程式使用此旗標時,MCIAVI 驅動程式會使用 320 x 240 像素的全螢幕格式播放序列。 例如,下列命令會以全螢幕方式播放開啟的檔案(使用 “movie” 作為別名):
mciSendString("play movie fullscreen", lpszReturnString,
lstrlen(lpszReturnString), NULL);
變更 AVI 檔案的播放狀態
您的應用程式可以使用 seek (MCI_SEEK) 命令,將目前的位置移至 AVI 檔案中的開始、結束或任意位置。 MCIAVI 驅動程式有兩種搜尋模式:精確且不精確。 您的應用程式可以使用 set (MCI_SET) 命令來變更搜尋模式。 當您使用 設定「精確尋找」時,MCIAVI 驅動程式將精確搜尋至您的應用程式指定的影格。 如果檔案暫時壓縮,且您的應用程式未指定主要畫面格,這可能會導致延遲。 當您使用 設定「精確尋找關閉」時,MCIAVI 驅動程式會搜尋到時間壓縮檔案中最接近的關鍵畫格。
某些 MCI 命令可讓您的應用程式以其他方式改變 AVI 檔案的播放。 例如,根據預設,AVI 檔案會以正常速度播放,但您的應用程式可以使用 「speed」 旗標搭配 set 命令來增加或減少此速度。 對於 AVI 檔案,速度值為 1000 是典型的。 因此,若要以一半的典型速度播放電影,您的應用程式可以使用命令 設定「電影速度 500」:或者,它可以使用 設定“電影速度2000”,以兩倍的正常速度播放序列。
setaudio (MCI_SETAUDIO) 命令可讓您的應用程式控制 AVI 檔案的音訊部分。 您的應用程式可以在播放期間將音訊靜音,或在多個音訊串流檔案的情況下,選取播放的音訊串流。
MCIAVI 驅動程式有一個對話框可控制其部分播放選項。 使用者可用的一些選項包括選取視窗導向或全螢幕播放、選取搜尋模式,以及縮放影像。 您的應用程式可以使用 configure (MCI_CONFIGURE) 命令來顯示此對話方塊。
數據流處理程式
AVI 檔案中的數據會被視為一系列數據流。 AVI 檔案通常包含音訊和視訊串流,而且也可能有包含文字或其他自定義數據的自定義數據流。 MCIAVI 驅動程式可以針對這些數據流使用不同的處理程式。 如需自訂 AVI 檔案的詳細資訊,請參閱 自定義檔案和串流處理程式。