程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> MCI(媒體控制接口)相關知識

MCI(媒體控制接口)相關知識

編輯:C語言基礎知識

  MCI(Media Control Interface)媒體控制接口是MircroSoft提供的一組多媒體設備和文件的標准接口,它的好處是可以方便地控制絕大多數多媒體設備包括音頻、視頻、影碟、錄像等多媒體設備,而不需要知道它們的內部工作狀況。但是古人雲:成也蕭何,敗也蕭何。MCI雖然看上去高大全,但對於一些高級應用來說,它是遠遠不夠的。
  
  MCI的控制方式:
  
  一般說來,程序員使用兩個函數就可以與MCI打交道了:
  
  MCIERROR mciSendCommand(MCIDEVICEID wDeviceID, UINT uMsg, DWord dwFlags, DWORD dwParam);
  命令字符串方式,用接近於日常生活用語的方式發送控制命令,適用於高級編程如VB、TOOLBOOK等。
  
  MCIERROR mciSendString(LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback);
  命令消息方式,用專業語法發送控制消息,適用於VC等語言編程,此方式直接與MCI設備打交道。
  
  對於mciSendCommand,第一個參數指定了設備標識,這個標識會在程序員打開MCI設備時由系統提供。第二個參數指定將如何控制設備,具體請查閱後面“MCI指令”一欄。第三個參數為訪問標識,第四個參數一般是一個數據結構,標識程序在訪問MCI時要的一些信息。有關具體資料,請查閱本光盤配套書。
  
  對於mciSendString,第一個參數為一串控制字符串,返回信息由系統填入第二個參數,第三個參數指明返回信息的最大長度,若對MCI裝置設定了"notify"標志則需要在第四個參數填上返回窗口句柄。
  
  舉例:
  mciSendCommand(DeviceID, MCI_CLOSE, NULL, NULL); // 關閉一個MCI設備
  mciSendString("open aaa.avi", 0, 0, 0); // 打開文件"aaa.avi"
  
  MCI的設備類型:
  
  設備描述                    描述字符串      說明
  MCI_ALL_DEVICE_ID                           所有設備
  MCI_DEVTYPE_ANIMATION       Animation       動畫設備
  MCI_DEVTYPE_CD_AUDIO        Cdaudio         CD音頻
  MCI_DEVTYPE_DAT             Dat             數字音頻
  MCI_DEVTYPE_DIGITAL_VIDEO   Digitalvideo    數字視頻
  MCI_DEVTYPE_OTHER           Other           未定義設備
  MCI_DEVTYPE_OVERLAY         Overlay         重疊視頻
  MCI_DEVTYPE_SCANNER         Scanner         掃描儀
  MCI_DEVTYPE_SEQUENCER       Sequencer MIDI  序列器
  MCI_DEVTYPE_VCR             Vcr             合式錄像機
  MCI_DEVTYPE_VIDEODISC       Videodisc       激光視盤
  MCI_DEVTYPE_WAVEFORM_AUDIO  waveaudio Wave  音頻
  
  對於未在上面定義的MCI設備,用戶可查看system.ini文件中[mci]部分,例如:
  
  [mci]
  cdaudio=mcicda.drv
  sequencer=mciseq.drv
  waveaudio=mciwave.drv
  avivideo=mciavi.drv
  videodisc=mcipionr.drv
  vcr=mcivisca.drv
  ActiveMovie=mciqtz.drv
  QTWVideo=mciqtw.drv
  MPEGVideo=C:PROGRA~1XINGXINGMP~1xmdrv95.dll
  
  其中最後兩句分別指明了Apple的QuickTime設備,設備名為"QTWVidio"、MPEG影像設備,設備名為"MPEGVideo"。
  //------------------------------
  // 廣告時間:
  // 歡迎訪問 C++ Builder 研究 - http://www.ccrun.com
  //------------------------------
  在MCI編程中,既可以將設備描述當設備名,也可以將描述字符串當設備名,一個極端偷懶的辦法是程序員不要在程序中指定設備名,Windows將自動根據文件擴展名識別設備類型。
  舉個例子來說,打開一個多媒體文件有以下三種方式:
  
  [1]:自動識別:打開一個"WAV"文件
  MCI_OPEN_PARMS mciOpen;
  mciOpen.lpstrDeviceType = 0;
  mciOpen.lpstrElementName = "aaa.wav";
  mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
  
  [2]:指定設備描述:打開CD播放器
  MCI_OPEN_PARMS mciOpen;
  mciOpen.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_CD_AUDIO ;
  mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE MCI_OPEN_TYPE_ID, (DWORD)&mciOpen);
  
  [3]:指定描述字符串: 打開一個AVI文件
  MCI_OPEN_PARMS mciOpen;
  mciOpen.lpstrDeviceType = "avivideo";
  mciOpen.lpstrElementName = "aaa.avi";
  mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
  
  注重三種打開方式中,函數第三個參數的區別,後面會講到這種區別。
  
  MCI指令
  
  MCI_BREAK        設置中斷鍵,缺省是”CTRL+BREAK"
  MCI_CAPTURE      抓取當前幀並存入指定文件,僅用於數字視頻
  MCI_CLOSE        關閉設備
  MCI_CONFIGURE    彈出配置對話框,僅用於數字視頻
  MCI_COPY         拷貝數據至剪貼板
  MCI_CUE          延時播放或錄音
  MCI_CUT          刪除數據
  MCI_DELETE       刪除數據
  MCI_ESCAPE       僅用於激光視頻
  MCI_FREEZE       將顯示定格
  MCI_GETDEVCAPS   獲取設備信息
  MCI_INDEX        當前屏幕顯示與否,僅用於VCR設備
  MCI_INFO         獲取字符串信息
  MCI_LIST         獲取輸入設備數量,支持數字視頻和VCR設備
  MCI_LOAD         裝入一個文件
  MCI_MARK         取消或做一個記號,與MCI_SEEK配套
  MCI_MARK         取消或做一個記號,與MCI_SEEK配套
  MCI_MONITOR      為數字視頻指定報告設備
  MCI_OPEN         打開設備
  MCI_PASTE        粘帖數據
  MCI_PAUSE        暫停當前動作
  MCI_PLAY         播放
  MCI_PUT          設置源、目的和邊框矩形
  MCI_QUALITY      定義設備缺省質量
  MCI_RECORD       開始錄制
  MCI_RESERVE      分配硬盤空間
  MCI_RESTORE      拷貝一個bmp文件至幀緩沖
  MCI_RESUME       使一個暫停設備重新啟動
  MCI_SAVE         保存數據
  MCI_SEEK         更改媒體位置
  MCI_SET          設置設備信息
  MCI_SETAUDIO     設置音量
  MCI_SETTIMECODE  啟用或取消VCR設備的時間碼
  MCI_SETTUNER     設置VCR設備頻道
  MCI_SETVIDEO     設置video參數
  MCI_SIGNAL       在工作區上設置指定空間
  MCI_STATUS       獲取設備信息
  MCI_STEP         使播放設備跳幀
  MCI_STOP         停止播放
  MCI_SYSINFO      返回MCI設備信息
  MCI_UNDO         取消操作
  MCI_UNFREEZE     使使用MCI_UNFREEZE的視頻緩沖區恢復運動
  MCI_UPDATE &nb
  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved