中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)MCI 接口编程实验

中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright1999) MCI接口编程实验 一、实验目的 熟悉Windows下声卡编程的基本过程及原理,掌握Windows下MCI编程的基本知识。 二、预备知识 VC5编程方法、MCI编程方法。 三、实验原理 设计多媒体程序,关键是对多种媒体设备的控制和使用,在Windows3..1和Windows95系 统中,对多媒体设备进行控制主要有三种方法:第一种方法是使用微软公司窗口系统中对多 媒体支持的MCI,即媒体控制接口,MCI是多媒体设备和多媒体应用软件之间进行设备无 关的沟通的桥梁.在VB和VC中,MCI都得到了很好的支持。第二种方法,通过调用Windows 的API(应用程序接口)多媒体相关函数实现媒体控制.第三种方法是使用OLE(Object Linking &Embedding),即对象链接与嵌入技术,它为不同软件之间共享数据和资源提供了有力的手 段。 我们在本实验中用最简单的方法来实现声音的播放和录制一媒体控制接口编程。有关知 识请阅读附录中“VC多媒体”部分。 四、实验要求 本实验非常简单和基础,请已经熟悉VC和MCI这些内容的同学耐心地再做一遍。请同 学们参照示例中的程序代码,编制自己的声卡程序并应用各种声音播放的方法。具体要求如 下: 1.学会使用PlaySound()、SndPlaySound()来播放WAV文件: 2. 学会使用mciSendCommand()或mciSendString()来播放WAV文件: 3.学会使用mciSendCommand()或mciSendString()来录制WAV文件: 4.实验完成以后,需要实验室老师检查通过。 5.在意思清楚、完整的前提下,思考题的回答越精炼越好。 6. 在以上基本要求完成的前提下,有能力的同学可以试一下用MCI接口播放其他格式的文 件:制作一个媒体播放器。 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh(@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 1999) MCI 接口编程实验 一、实验目的 熟悉 Windows 下声卡编程的基本过程及原理,掌握 Windows 下 MCI 编程的基本知识。 二、预备知识 VC5 编程方法、MCI 编程方法。 三、实验原理 设计多媒体程序,关键是对多种媒体设备的控制和使用,在 Windows3.1 和 Windows95 系 统中,对多媒体设备进行控制主要有三种方法:第一种方法是使用微软公司窗口系统中对多 媒体支持的 MCI,即媒体控制接口,MCI 是多媒体设备和多媒体应用软件之间进行设备无 关的沟通的桥梁。在 VB 和 VC 中,MCI 都得到了很好的支持。第二种方法,通过调用 Windows 的 API(应用程序接口)多媒体相关函数实现媒体控制。第三种方法是使用 OLE(Object Linking & Embedding),即对象链接与嵌入技术,它为不同软件之间共享数据和资源提供了有力的手 段。 我们在本实验中用最简单的方法来实现声音的播放和录制—媒体控制接口编程。有关知 识请阅读附录中“VC 多媒体”部分。 四、实验要求 本实验非常简单和基础,请已经熟悉 VC 和 MCI 这些内容的同学耐心地再做一遍。请同 学们参照示例中的程序代码,编制自己的声卡程序并应用各种声音播放的方法。具体要求如 下: 1. 学会使用 PlaySound()、SndPlaySound()来播放 WAV 文件; 2. 学会使用 mciSendCommand()或 mciSendString()来播放 WAV 文件; 3. 学会使用 mciSendCommand()或 mciSendString()来录制 WAV 文件; 4. 实验完成以后,需要实验室老师检查通过。 5. 在意思清楚、完整的前提下,思考题的回答越精炼越好。 6. 在以上基本要求完成的前提下,有能力的同学可以试一下用 MCI 接口播放其他格式的文 件;制作一个媒体播放器。 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn

中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright1999) 五、使用示例 1.sndPlaySound("ding.wav",SND SYNC); 2.PlaySound("chord.wav",NULL,SND SYNC ) 3.使用两个高级MCI函数 a.播放MDI文件示例 HWND hwnd; MCI OPEN PARMS mciopen; MCI OPEN PARMS mciplay; DWORD rtrn; char b[80]; hwnd=GetActiveWindow()->m hWnd: mciopen.IpstrElementName ="e:\test\test.rmi"; mciopen.IpstrDeviceType ="sequencer"; rtrn =mciSendCommand(0,MCI OPEN,MCI OPEN TYPEMCI OPEN ELEMENT, (DWORD)(LPVOID)&mciopen); if(rtrn !=0){ mciGetErrorString(rtrn,(LPSTR)b,80); ::MessageBox(hwnd,b,"MCI ERROR!",MB_OK); } wDevicelD=mciopen.wDevicelD; mciplay.dwCallback =(DWORD)hwnd; rtrn =mciSendCommand(wDevicelD,MCI PLAY,MCI NOTIFY,(DWORD)(LPVOID)&mciplay); if (rtrn !=OL) mciGetErrorString(rtrn,(LPSTR)b,80): MessageBox(hwnd,b,"MCI Error",MB OK): mciSendCommand(wDevicelD,MCI CLOSE,0,NULL); ∥停止播放 HWND hwnd; MCI GENERIC PARMS mcistop; hwnd=GetActive Window()->m_hWnd; mcistop.dwCallback =(DWORD)hwnd; mciSendCommand(MCI DEVTYPE SEQUENCER,MCI STOP,0,(DWORD)(LPVOID)&mcistop); } 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.cdu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 1999) 五、使用示例 1. sndPlaySound("ding.wav",SND_SYNC); 2. PlaySound("chord.wav",NULL,SND_SYNC ); 3. 使用两个高级 MCI 函数 a. 播放 MIDI 文件示例 { HWND hwnd; MCI_OPEN_PARMS mciopen; MCI_OPEN_PARMS mciplay; DWORD rtrn; char b[80]; hwnd=GetActiveWindow()->m_hWnd; mciopen.lpstrElementName = "e:\\test\\test.rmi"; mciopen.lpstrDeviceType = "sequencer" ; rtrn = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciopen); if(rtrn != 0){ mciGetErrorString(rtrn,(LPSTR)b,80); ::MessageBox(hwnd,b,"MCI ERROR!",MB_OK); } wDeviceID = mciopen.wDeviceID; mciplay.dwCallback = (DWORD)hwnd; rtrn = mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciplay); if (rtrn != 0L){ mciGetErrorString(rtrn,(LPSTR)b,80); ::MessageBox(hwnd,b,"MCI Error",MB_OK); mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL); } } //停止播放 { HWND hwnd; MCI_GENERIC_PARMS mcistop; hwnd=GetActiveWindow()->m_hWnd; mcistop.dwCallback = (DWORD)hwnd; mciSendCommand(MCI_DEVTYPE_SEQUENCER,MCI_STOP,0,(DWORD)(LPVOID)&mcistop); } 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn

中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright1999) b. 录音示例 HWND hwnd: MCI OPEN PARMS mciopen; MCI RECORD PARMS mcil: MCI SAVE PARMS mcisave; DWORD rtrn; char b[80]; hwnd=GetActive Window()->m hWnd: mciopen.IpstrElementName "e:\ding.wav"; mcisave.Ipfilename ="e:\ding.wav"; mciopen.IpstrDeviceType ="waveaudio"; rtrn mciSendCommand(0,MCI OPEN,MCI OPEN_TYPEMCI OPEN ELEMENT, (DWORD)(LPVOID)&mciopen); ifrtrn!=0) mciGetErrorString(rtrn,(LPSTR)b,80); MessageBox(hwnd,b,"MCI ERROR!",MB OK); } wDevicelD mciopen.wDevicelD; mcil.dwCallback =(DWORD)hwnd; rtrn=mciSendCommand(wDeviceID,MCI RECORD,MCI NOTIFY,(DWORD)(LPVOID)&mcil): if (rtrn I=OL){ mciGetErrorString(rtrn,(LPSTR)b,80); MessageBox(hwnd,b,"MCI Error",MB OK), mciSendCommand(wDevicelD,MCI CLOSE,0,NULL); ∥保存到文件并停止录音 HWND hwnd; MCI SAVE PARMS mcisave: MCI_OPEN_PARMS mciopen; DWORD rtrn; char b[80]: hwnd=GetActive Window()->m hWnd; mciopen.lpstrElementName ="e:\ding.wav": mcisave.lpfilename="e:\ding.wav"; mciopen.IpstrDeviceType ="waveaudio"; mcisave.dwCallback =(DWORD)hwnd: 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 1999) b. 录音示例 { HWND hwnd; MCI_OPEN_PARMS mciopen; MCI_RECORD_PARMS mci1; MCI_SAVE_PARMS mcisave; DWORD rtrn; char b[80]; hwnd=GetActiveWindow()->m_hWnd; mciopen.lpstrElementName = "e:\\ding.wav"; mcisave.lpfilename = "e:\\ding.wav"; mciopen.lpstrDeviceType = "waveaudio"; rtrn = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciopen); if(rtrn != 0){ mciGetErrorString(rtrn,(LPSTR)b,80); ::MessageBox(hwnd,b,"MCI ERROR!",MB_OK); } wDeviceID = mciopen.wDeviceID; mci1.dwCallback = (DWORD)hwnd; rtrn = mciSendCommand(wDeviceID,MCI_RECORD,MCI_NOTIFY,(DWORD)(LPVOID)&mci1); if (rtrn != 0L){ mciGetErrorString(rtrn,(LPSTR)b,80); ::MessageBox(hwnd,b,"MCI Error",MB_OK); mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL); } } //保存到文件并停止录音 { HWND hwnd; MCI_SAVE_PARMS mcisave; MCI_OPEN_PARMS mciopen; DWORD rtrn; char b[80]; hwnd=GetActiveWindow()->m_hWnd; mciopen.lpstrElementName = "e:\\ding.wav"; mcisave.lpfilename = "e:\\ding.wav"; mciopen.lpstrDeviceType = "waveaudio"; mcisave.dwCallback = (DWORD)hwnd; 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn

中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright1999) rtrn =mciSendCommand(wDevicelD,MCI SAVE,MCI NOTIFY,(DWORD)(LPVOID)&mcisave); if (rtrn !=OL) mciGetErrorString(rtrn,(LPSTR)b,80); :MessageBox(hwnd b,"MCI Error save",MB OK): mciSendCommand(wDevicelD,MCI CLOSE,0,NULL); } c.实验示例 现给出VC5下的声卡编程样本程序test.exe及其源代码。请同学们参照。 六、思考题 1什么是MCI接口?简述MCI所囊括的内容。 2 Windows下播放波形文件可以采用几种方法,各有什么优缺点? 3简述Windows下多媒体程序开发的特点。 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 1999) rtrn = mciSendCommand(wDeviceID,MCI_SAVE,MCI_NOTIFY,(DWORD)(LPVOID)&mcisave); if (rtrn != 0L){ mciGetErrorString(rtrn,(LPSTR)b,80); ::MessageBox(hwnd,b,"MCI Error save",MB_OK); mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL); } } c. 实验示例 现给出 VC5 下的声卡编程样本程序 test.exe 及其源代码。请同学们参照。 六、思考题 1 什么是 MCI 接口?简述 MCI 所囊括的内容。 2 Windows 下播放波形文件可以采用几种方法,各有什么优缺点? 3 简述 Windows 下多媒体程序开发的特点。 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)视频编辑实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)多媒体素材制作实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)MCAI1.0 演示实验.pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F33F 程序员参考手册(高性能数字信号控制器).pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F 数字信号控制器入门用户指南.pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F 4011_4012 数据手册(高性能16位数字信号控制器).pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC 语言工具入门.pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F 系列参考手册(高性能数字信号控制器).pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)实验用开发板手册 APP009(manual)dsPIC30F4011/4012/2010 Motor Control Family Evaluation Board.pdf
- 银川能源学院:数据科学与大数据技术专业剖析(曹骜).pdf
- 电子工业出版社:“十一五”国家重点图书出版规划项目(安全技术大系)《黑客反汇编揭密》PDF电子书(【俄】Kris Kaspersky,第二版,共四篇二十一章).pdf
- 清华大学出版社:安全技术经典译丛(美)Justin Clarke《SQL注入攻击与防御》PDF电子书(SQL Injection Attacks and Defense).pdf
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)注入攻击与防御(SQL攻击与防御).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)区块链简介(区块链详解).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)通过不同途径搜索密码比较算法和实际破解例.ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)破解和混合编程实例 Hacker Reverse Engineering.ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)黑客反向工程导论(陈凯明).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)防黑客技术简介(基本的”防”黑客技术 Basic Hacker Technique).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(作业习题)历年黑客反向工程作业题目选编.docx
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(PPT课件讲稿)进程.ppt
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)WAVE 文件格式分析实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)基于 WindowsAPI 的视频捕捉卡操作.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)基于 SDK 的视频压缩卡操作.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)DirectXDraw 实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)JPEG 静图像压缩实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)Mp3 音乐文件播放实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)动图像传输实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)多媒体电子邮件传输实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)PC-PC 的 IP 电话实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)实验十六 Android 下的音频编程.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)实验十七 Android 下的摄像头编程.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)实验十八 Android 下使用 Tensorflow 模型.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)实验十九 SDL+ffmpeg 播放 mp4.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)附录一 3DMAX 动画制作.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)附录二 Visual C++下的多媒体开发.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)附录三 常用多媒体设备技术参数.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)附录三 多媒体电子邮件.pdf
- 中国科学技术大学:《数字信号处理》课程教学资源(实验要求)实验1 信号及系统基本特性分析.pdf
- 中国科学技术大学:《数字信号处理》课程教学资源(实验要求)实验2 FFT 算法实现.pdf
- 中国科学技术大学:《数字信号处理》课程教学资源(实验要求)实验3 滤波器设计与滤波器特性分析.pdf