国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

MCI(媒體控制接口)相關(guān)知識(shí)

2019-11-17 05:39:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  MCI(Media Control Interface)媒體控制接口是MircroSoft提供的一組多媒體設(shè)備和文件的標(biāo)準(zhǔn)接口,它的好處是可以方便地控制絕大多數(shù)多媒體設(shè)備包括音頻、視頻、影碟、錄像等多媒體設(shè)備,而不需要知道它們的內(nèi)部工作狀況。但是古人云:成也蕭何,敗也蕭何。MCI雖然看上去高大全,但對(duì)于一些高級(jí)應(yīng)用來(lái)說(shuō),它是遠(yuǎn)遠(yuǎn)不夠的。

MCI的控制方式:

一般說(shuō)來(lái),程序員使用兩個(gè)函數(shù)就可以與MCI打交道了:

MCIERROR mciSendCommand(MCIDEVICEID wDeviceID, UINT uMsg, DWord dwFlags, DWORD dwParam);
命令字符串方式,用接近于日常生活用語(yǔ)的方式發(fā)送控制命令,適用于高級(jí)編程如VB、TOOLBOOK等。

MCIERROR mciSendString(LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback);
命令消息方式,用專(zhuān)業(yè)語(yǔ)法發(fā)送控制消息,適用于VC等語(yǔ)言編程,此方式直接與MCI設(shè)備打交道。

對(duì)于mciSendCommand,第一個(gè)參數(shù)指定了設(shè)備標(biāo)識(shí),這個(gè)標(biāo)識(shí)會(huì)在程序員打開(kāi)MCI設(shè)備時(shí)由系統(tǒng)提供。第二個(gè)參數(shù)指定將如何控制設(shè)備,具體請(qǐng)查閱后面“MCI指令”一欄。第三個(gè)參數(shù)為訪(fǎng)問(wèn)標(biāo)識(shí),第四個(gè)參數(shù)一般是一個(gè)數(shù)據(jù)結(jié)構(gòu),標(biāo)識(shí)程序在訪(fǎng)問(wèn)MCI時(shí)要的一些信息。有關(guān)具體資料,請(qǐng)查閱本光盤(pán)配套書(shū)。

對(duì)于mciSendString,第一個(gè)參數(shù)為一串控制字符串,返回信息由系統(tǒng)填入第二個(gè)參數(shù),第三個(gè)參數(shù)指明返回信息的最大長(zhǎng)度,若對(duì)MCI裝置設(shè)定了"notify"標(biāo)志則需要在第四個(gè)參數(shù)填上返回窗口句柄。

舉例:
mciSendCommand(DeviceID, MCI_CLOSE, NULL, NULL); // 關(guān)閉一個(gè)MCI設(shè)備
mciSendString("open aaa.avi", 0, 0, 0); // 打開(kāi)文件"aaa.avi"

MCI的設(shè)備類(lèi)型:

設(shè)備描述                    描述字符串      說(shuō)明
MCI_ALL_DEVICE_ID                           所有設(shè)備
MCI_DEVTYPE_ANIMATION       Animation       動(dòng)畫(huà)設(shè)備
MCI_DEVTYPE_CD_AUDIO        Cdaudio         CD音頻
MCI_DEVTYPE_DAT             Dat             數(shù)字音頻
MCI_DEVTYPE_DIGITAL_VIDEO   Digitalvideo    數(shù)字視頻
MCI_DEVTYPE_OTHER           Other           未定義設(shè)備
MCI_DEVTYPE_OVERLAY         Overlay         重疊視頻
MCI_DEVTYPE_SCANNER         Scanner         掃描儀
MCI_DEVTYPE_SEQUENCER       Sequencer MIDI  序列器
MCI_DEVTYPE_VCR             Vcr             合式錄像機(jī)
MCI_DEVTYPE_VIDEODISC       Videodisc       激光視盤(pán)
MCI_DEVTYPE_WAVEFORM_AUDIO  waveaudio Wave  音頻

對(duì)于未在上面定義的MCI設(shè)備,用戶(hù)可查看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~1/XING/XINGMP~1/xmdrv95.dll

其中最后兩句分別指明了Apple的QuickTime設(shè)備,設(shè)備名為"QTWVidio"、MPEG影像設(shè)備,設(shè)備名為"MPEGVideo"。
//------------------------------
// 廣告時(shí)間:
// 歡迎訪(fǎng)問(wèn) C++ Builder 研究 - http://www.ccrun.com
//------------------------------
在MCI編程中,既可以將設(shè)備描述當(dāng)設(shè)備名,也可以將描述字符串當(dāng)設(shè)備名,一個(gè)極端偷懶的辦法是程序員不要在程序中指定設(shè)備名,Windows將自動(dòng)根據(jù)文件擴(kuò)展名識(shí)別設(shè)備類(lèi)型。
舉個(gè)例子來(lái)說(shuō),打開(kāi)一個(gè)多媒體文件有以下三種方式:

[1]:自動(dòng)識(shí)別:打開(kāi)一個(gè)"WAV"文件
MCI_OPEN_PARMS mciOpen;
mciOpen.lpstrDeviceType = 0;
mciOpen.lpstrElementName = "aaa.wav";
mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)&mciOpen);

[2]:指定設(shè)備描述:打開(kāi)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]:指定描述字符串: 打開(kāi)一個(gè)AVI文件
MCI_OPEN_PARMS mciOpen;
mciOpen.lpstrDeviceType = "avivideo";
mciOpen.lpstrElementName = "aaa.avi";
mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE MCI_OPEN_ELEMENT, (DWORD)&mciOpen);

注重三種打開(kāi)方式中,函數(shù)第三個(gè)參數(shù)的區(qū)別,后面會(huì)講到這種區(qū)別。

MCI指令

MCI_BREAK        設(shè)置中斷鍵,缺省是”CTRL+BREAK"
MCI_CAPTURE      抓取當(dāng)前幀并存入指定文件,僅用于數(shù)字視頻
MCI_CLOSE        關(guān)閉設(shè)備
MCI_CONFIGURE    彈出配置對(duì)話(huà)框,僅用于數(shù)字視頻
MCI_COPY         拷貝數(shù)據(jù)至剪貼板
MCI_CUE          延時(shí)播放或錄音
MCI_CUT          刪除數(shù)據(jù)
MCI_DELETE       刪除數(shù)據(jù)
MCI_ESCAPE       僅用于激光視頻
MCI_FREEZE       將顯示定格
MCI_GETDEVCAPS   獲取設(shè)備信息
MCI_INDEX        當(dāng)前屏幕顯示與否,僅用于VCR設(shè)備
MCI_INFO         獲取字符串信息
MCI_LIST         獲取輸入設(shè)備數(shù)量,支持?jǐn)?shù)字視頻和VCR設(shè)備
MCI_LOAD         裝入一個(gè)文件
MCI_MARK         取消或做一個(gè)記號(hào),與MCI_SEEK配套
MCI_MARK         取消或做一個(gè)記號(hào),與MCI_SEEK配套
MCI_MONITOR      為數(shù)字視頻指定報(bào)告設(shè)備
MCI_OPEN         打開(kāi)設(shè)備
MCI_PASTE        粘帖數(shù)據(jù)
MCI_PAUSE        暫停當(dāng)前動(dòng)作
MCI_PLAY         播放
MCI_PUT          設(shè)置源、目的和邊框矩形
MCI_QUALITY      定義設(shè)備缺省質(zhì)量
MCI_RECORD       開(kāi)始錄制
MCI_RESERVE      分配硬盤(pán)空間
MCI_RESTORE      拷貝一個(gè)bmp文件至幀緩沖
MCI_RESUME       使一個(gè)暫停設(shè)備重新啟動(dòng)
MCI_SAVE         保存數(shù)據(jù)
MCI_SEEK         更改媒體位置
MCI_SET          設(shè)置設(shè)備信息
MCI_SETAUDIO     設(shè)置音量
MCI_SETTIMECODE  啟用或取消VCR設(shè)備的時(shí)間碼
MCI_SETTUNER     設(shè)置VCR設(shè)備頻道
MCI_SETVIDEO     設(shè)置video參數(shù)
MCI_SIGNAL       在工作區(qū)上設(shè)置指定空間
MCI_STATUS       獲取設(shè)備信息
MCI_STEP         使播放設(shè)備跳幀
MCI_STOP         停止播放
MCI_SYSINFO      返回MCI設(shè)備信息
MCI_UNDO         取消操作
MCI_UNFREEZE     使使用MCI_UNFREEZE的視頻緩沖區(qū)恢復(fù)運(yùn)動(dòng)
MCI_UPDATE &nb


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 都兰县| 抚顺市| 桃江县| 蓬溪县| 通河县| 杭锦后旗| 蒙阴县| 桓仁| 江都市| 高安市| 富宁县| 禄丰县| 武汉市| 含山县| 锡林浩特市| 洛川县| 蒙山县| 连江县| 图们市| 文化| 神池县| 台山市| 延庆县| 靖安县| 涪陵区| 叶城县| 江城| 定远县| 兴和县| 光山县| 维西| 太白县| 阿图什市| 申扎县| 香港 | 伽师县| 深泽县| 南充市| 油尖旺区| 武义县| 蓬莱市|