亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用MCI實現(xiàn)多媒體程序設計

        2001-10-11 16:49:32
        沿海企業(yè)與科技 2001年4期
        關鍵詞:指令多媒體設備

        鐘 寧

        媒體是指信息的載體,是信息的存在和表現(xiàn)形式,包括數(shù)字、文字、聲音、圖形和圖像等。隨著計算機技術的發(fā)展,人們不再使用單一的文字作為信息的載體,而是通過各種各樣的媒體如圖形、圖像、音頻、視頻來傳遞、存儲信息。利用VC6.0使用API函數(shù)來實現(xiàn)對多媒體控制接口MCI的調用來編寫多媒體數(shù)字視頻應用程序,可以滿足大多數(shù)應用在性能上的要求。

        MCI是MicrosoftWindows定義的多媒體接口標準。MCI向Windows提供高層次的,獨立于設備的,控制各種多媒體設備的命令。通過MCI命令,可以直接對多媒體外部設備進行控制,如控制光驅及聲卡播放CD盤音樂、控制多媒體動畫播放、控制視頻卡視頻信號采集等。MCI封裝了各種多媒體設備的具體控制細節(jié),編程人員完全可以在不了解各種多媒體構造、工作原理和如何控制的條件下,只通過對MIC函數(shù)進行操作就完全有效地對多媒體設備進行控制,大大縮短了開發(fā)多媒體應用程序的時間,提高了開發(fā)效率。MCI是一種訪問多媒體設備的高層次方法,獨立于設備,使得原有的函數(shù)不會因為硬件設備的品牌、各類控制參數(shù)的變更而不再適用,大大提高了程序的可移植性和可靠性。另外,MCI提供了功能強大的,可以在C語言中直接調用的函數(shù)庫。其庫文件包含在VC++的子目錄下面,不需要另行購買。

        MCI的訪問可以通過兩種方式:一種是使用消息命令接口函數(shù);另一種是使用字符串接口函數(shù)。它們的不同之處在于有著不同的命令結構和發(fā)送信息到多媒體設備的不同原理。任何一種方式都可以達到同樣的結果,具體的方式的選擇可根據(jù)編程人員的習慣來定。

        MCI提供的設備控制指令接近于自然語言,MCI是Windows為多媒體應用程序開發(fā)人員所提供支持底層API的應用組件,可以通過VC6.0等高級語言調用。應用程序通過MCI向多媒體設備發(fā)出命令字符串,控制媒體設備,或從媒體設備上得到相關的信息。MCI指令字符串語法格式如下:

        Commanddevice_nameargument

        Command表示MCI動作指令,常用的有Open、Close、Play、Pause、Step、Back、Setp、Prev、Next、Record、Status、Save等。

        device_name為設備類型、媒體文件名或別名。

        argument為命令參數(shù)。

        對于一個多媒體設備或文件,首先要用Open命令打開,然后用Play命令播放,最后用Close命令關閉,以釋放設備。這三條基本命令的語法如下:

        Opendevice[aliasdevice_id][typedevice_type][wait]

        Playdevice_id[formposition][toposition][wait]

        Closedevice.id

        Win32API即為Microsoft32位平臺的應用程序編程接口,所有在Win32平臺上運行的應用程序都可以調用這些函數(shù)。Windows系統(tǒng)提供了100多個具有多媒體處理能力的API函數(shù),而VC6.0可以直接使用WindowsAPI函數(shù)的功能,通過使用API函數(shù),以實現(xiàn)對MCI命令的調用。

        在Windows系統(tǒng)提供的眾多媒體處理能力的API函數(shù)中,比較重要的有MCISendCommand()(傳送MCI指令消息給MCI,并返回執(zhí)行結果信息),MCISendString()(向一個MCI設備發(fā)送字符串命令來控制設備,并返回執(zhí)行結果消息),MCIGetErrorString()(解釋返回錯誤代碼的具體含義),MCIGetDeviceID()(打開一個設備后,返回這個設備的ID號),MCIExecute()(傳送MCI指令字符串給MCI,不返回執(zhí)行結果消息。若執(zhí)行過程有錯誤,出現(xiàn)對話框給出錯誤信息)。

        1、MCISendCommand()函數(shù)傳遞指令信息速度快,可以非常深入的控制多媒體設備。但編程比較復雜。MCISendCommand()函數(shù)使用的語法如下:

        DWORDMCISendCommand(MCIDEVICEIDIDDevice,UINTuMsg,DWORDfdwConnand,DWORDdwParam);

        Iddevice:標識一個MCI設備。當MCI使用MCI_OPEN控制消息打開一個多媒體設備時,可以不傳入這個參數(shù),只需要指定為空。如果打開正常,MCI會自動創(chuàng)建一個32位的整數(shù)來標識已經打開的多媒體設備。

        uMsg:標識向設備發(fā)出消息的類型,具體的消息有MCI_OPEN,MCI_PLAY等等。

        FdwConnand:與uMsg消息相關,用來指定消息的具體操作方式,為消息標志。

        DwParam:是一個指向消息數(shù)據(jù)結構的指針,其結構由具體的消息類型來決定。

        如果函數(shù)執(zhí)行成功,返回值為空,否則返回錯誤代碼信息。錯誤代碼的高位包含了設備的ID,低位值是錯誤的代碼。

        2、MCISendString()函數(shù)傳遞指令字符串,使用方便,但由于要將指令字符串轉換成相應的指令消息,因而速度相對較慢。MCISendString()函數(shù)使用的語法如下:

        MCIERRORMCISendString(LPCTSTRMCICommand,LPCTSTRReturnInfo,UINTInfoBufferLength,HANDLECallbackWindow);

        MCICommand:MCI控制命令,是以NULL結尾的字符串。如open,close,play,save。

        ReturnInfo:字符串緩沖區(qū)指針,用來接受返回信息,如果沒有返回信息則被置為NULL。

        InfoBufferLength:返回信息緩沖區(qū)長度。

        CallbackWindow:通知信息窗口句柄。

        MCISendString()函數(shù)發(fā)送MCI命令到MCI設備,MCI設備成功執(zhí)行MCI命令返回UNLL,否則返回錯誤代碼。

        3、MCIGetErrorString()是對返回的錯誤信息代碼進行描述。使用語法如下:

        BOOLMCIGetErrorString(DWORDfdwError,LPCTSTRlpszErrorText,UINTcchErrorText);

        fdwError:由fdwError函數(shù)返回的錯誤代碼。

        lpszErrorText:用來接受錯誤代碼描述的由NULL結尾的字符串指針。

        cchErrorText:lpszErrorText字符串的長度。

        如果成功則返回NULL,否則,表示錯誤代碼無法描述。

        4、MCIGetDeviceID()返回一個已打開設備的ID號。其使用語法為:

        MCIDEVICEIDMCIGetDeviceID(LPCTSTRlpszDevice);

        LPszDevice:用來指定打開MCI設備的設備名。

        函數(shù)調用成功,則返回該設備的標識號,否則,返回空值。

        5、MCIExecute()是VisualC提供的調用MCI指令的函數(shù),MCIExecute()的函數(shù)格式為:MCIExecute("..."),其中引號內即MCI指令部分。這里我們根據(jù)怎么利用MCI指令控制視頻卡采集視頻信號,介紹MCIExecute()調用MCI的六條指令,它們分別是:

        openoverlayaliasvideo:打開視頻混疊設備

        windowvideostateshow:視頻窗口顯示

        freezevideo:禁止采集視頻進入視頻緩沖器

        unfreezevideosavevideofilename:允許幀緩沖器獲得視頻數(shù)據(jù)

        savevideofilename:將視頻緩沖器內容存入磁盤文件

        closevideo:關閉視頻混疊設備

        其中,video是打開視頻混疊設備時取的別名,打開后,對視頻混疊設備均以該別名進行標識,該別名也可以由其他名字代替,或不用別名而直接用overlay來標識。

        下面給出利用MCI函數(shù)實現(xiàn)CD的幾種基本操作的程序代碼。

        (1)打開CD音頻設備

        采用消息命令通過MciSendCommand()函數(shù)打開一個CD音頻設備。

        MCI_OPEN_PARMSOpenP;

        OpenP.lpstrDeviceType=(LPCSTR)MCI_DEVITYPE_CD_AUDIO;

        OpenP.wDeviceID=0;

        DWORDDflag=MciSendCommand(UNLL,MCI_WAIT|MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_OPEN_SHAREEABLE,&OpenP;);

        MCI_OPEN表示為發(fā)送打開命令;MCI_OPEN_TYPE表示在OpenP.lpstrElementName中指定了文件的類型,調用指定打開一個CD音頻設備,MCI_DEVITYPE_CD_AUDIO是CD設備的代號。函數(shù)調用結束,在OpenP.wDeviceID中返回了打開設備的設備標識號(ID號)。

        (2)播放CD音頻設備

        采用MCI命令消息播放CD音頻,可以靈活地對波形音頻播放進行控制方式,具體的控制方式可以通過dwFlags標識給定。

        MCI_PLAY_PARMSplayParms;

        PlayParms.dwFrom=MIC_MAKE_TMSF(0,0,0);

        MciSendCommand(m_wDeviceID,MCI_PLAY,MCI_FROM,(DWORD)(LPVOID)&playParms;);

        通過向設備發(fā)送MCI_PLAY可以打開CD音頻設備。MCI_MAKE_TMSF宏把0分、0秒、0幀的初始時間轉換為dwFrom格式,該程序代碼使設備從0位置開始播放。

        (3)關閉CD音頻設備

        MciSendCommand(m_wDeviceID,MCI_STOP,UNLL,UNLL);

        Dflag=MciSendCommand(m_wDeviceID,MCI_CLOSE,MCI_WAIT,NULL);

        關閉CD音頻之前首先要發(fā)送MCI_WAIT標識表示關閉設備之后函數(shù)才返回。

        (作者單位:廣西區(qū)交通廳征費稽查局微機辦)

        猜你喜歡
        指令多媒體設備
        聽我指令:大催眠術
        諧響應分析在設備減振中的應用
        借助多媒體探尋有效設問的“四度”
        ARINC661顯控指令快速驗證方法
        測控技術(2018年5期)2018-12-09 09:04:26
        LED照明產品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        多媒體在《機械制圖》課中的應用
        消費導刊(2018年10期)2018-08-20 02:56:28
        基于MPU6050簡單控制設備
        電子制作(2018年11期)2018-08-04 03:26:08
        500kV輸變電設備運行維護探討
        多媒體達人煉成記
        河南電力(2016年5期)2016-02-06 02:11:40
        適切 適時 適度——說說語文課堂的多媒體使用
        語文知識(2015年9期)2015-02-28 22:01:42
        久久综合九色综合久99| 精品少妇一区二区三区四区| 麻豆精品在线视频观看| 亚洲成av人片不卡无码| 中年熟妇的大黑p| 国产又色又爽又刺激视频| 亚洲av网站首页在线观看| 中文字幕一二三四五六七区| 高潮内射双龙视频| 成人性生交大片免费看r| 99亚洲乱人伦精品| 日本韩国三级在线观看| 亚洲性色av一区二区三区| 国产99久久精品一区二区| 国产免费网站看v片元遮挡| 国产性感主播一区二区| 久久国产精品亚洲婷婷片| 天天综合网天天综合色| 国产精品99久久久精品免费观看| 亚洲av性色精品国产| 国产精品国产三级国产av中文| 国产乱码一二三区精品| 婷婷九月丁香| 午夜在线观看一区二区三区四区| 精品厕所偷拍一区二区视频| 国产69精品久久久久999小说| 美女一级毛片免费观看97| 日本一区二区三区在线观看视频 | 97se色综合一区二区二区| 性欧美暴力猛交69hd| 午夜影院91| 青青草视频在线观看绿色| 日本护士xxxx视频| 久久免费视频国产| 国产蜜臀精品一区二区三区| 亚洲中文字幕av天堂自拍| 国产天美传媒性色av| 亚洲欧美成人中文在线网站| 久久91精品国产一区二区| 色视频综合无码一区二区三区| 国产亚洲亚洲精品777|