1、Visual Basic多媒体程序设计多媒体程序设计 Visual Basic是一个功能强大的编程环境,且与Windows系统紧密结合,对多媒体编程提供了丰富的支持。利用Visual Basic进行多媒体开发主要有两种方法:利用多媒体控件和Windows API函数。1.多媒体控件多媒体控件 Visual Basic提供了几种用于多媒体开发的控件,主要包括以下几种:(1)Animation控件(2)MCI控件(3)ActiveMovie控件(4)PictureClip控件(5)MCIWnd控件(1)Animation控件控件 Animation控件也称为无声控件,用该控件可以播放无声动画文件
2、也不是所有的无声动画文件都可以播放,它只能播放未经压缩的或者用RLE格式压缩的无声动画文件。(2)MCI控件控件 MCI控件可用于管理多媒体控制接口(MCI)设备,这些设备包括声卡、MIDI发生器、CD-ROM驱动器、音频播放器、视频播放器和视频磁带录放器。MCI控件具有一组执行MCI命令的下压式按钮,包括播放、暂停、向后步进、向前步进、停止、录制和弹出等。(3)ActiveMovie控件控件 ActiveMovie控件可以播放MPEG、AVI、MIDI和WAV等媒体文件,该控件是MCI控件的增强版本 ActiveMovie控件还自带时间数字显示和进度控制,并可以随意改变播放的起点。(4)Pi
3、ctureClip控件控件 PictureClip控件用于存储快速显示的位图文件,在建立动画或需要存储大量的位图文件时会用到它。(5)MCIWnd控件控件 MCIWnd控件的功能与MCI控件类似,但MCIWnd控件播放复合型多媒体设备,不能播放简单型设备。2.多媒体多媒体API函数函数 使用MCI控件开发Windows系统下的多媒体程序,具有简单、快捷、方便的特点。但在实际程序设计中,常会碰到一些利用MCI控件不好解决的问题。Visual Basic提供了直接调用Windows的API函数的功能,通过调用API函数,可以实现对系统的各个层次的功能调用。Windows的动态链接库文件winmm.
4、dll文件中包含了100多个具有多媒体处理功能的API函数,这些函数大多为低级的程序接口,可以用于处理语音、合成音乐、动画、视频等。常用的常用的MCI高级高级API函数函数 mciExecute:用于向MCI传送一个命令字符串,以执行各种播放操作。mciSendString:也是向MCI传送一个命令字符串,并可接受反馈信息。mciGetErrorString GetShortPathName本章内容本章内容 1 Animation控件 2 MCI控件 3 MediaPlayer控件 4多媒体API函数 1 Animation控件控件 Animation 控件是一个动画播放控件,Windows下
5、的文件复制进度栏就是使用 Animation 控件的一个实例,在执行复制操作时,纸页从一个文件夹“飞”到另一个文件夹,非常形象地告诉用户系统正在进行拷贝动作。1.1 Animation控件介绍 1.2 Animation控件应用实例 1.1 Animation控件介绍控件介绍(1)AutoPlay属性 将将AutoPlay属性设置为属性设置为True时,一旦加载时,一旦加载.avi文件,文件,Animation控件会自动连续循环地播放这个控件会自动连续循环地播放这个.avi文件。文件。(2)Center属性 Center属性为属性为True时,根据图像的大小,在控件中心显时,根据图像的大小,在
6、控件中心显示示.avi文件;当设置为文件;当设置为False时,时,.avi动画定位在控件的动画定位在控件的左上角。左上角。(3)Open方法 Open方法打开一个要播放的方法打开一个要播放的.avi文件。如果文件。如果AutoPlay属属性设置为性设置为True,则一打开就开始播放,在关闭,则一打开就开始播放,在关闭.avi文件或文件或设置设置AutoPlay属性设置为属性设置为False之前,它都一直重复播之前,它都一直重复播放。放。(4)Play方法 Play方法使方法使Animation控件播放控件播放.avi文件。并且可以设置文件。并且可以设置重复播放次数和开始、结束帧。重复播放次数
7、和开始、结束帧。Animation控件介绍(续)控件介绍(续)(5)Stop方法 Stop方法使方法使Animation控件终止播放控件终止播放.avi文件。文件。Stop方法仅终止那些用方法仅终止那些用Play方法启动的动画。对方法启动的动画。对通过设置通过设置AutoPlay属性为属性为True的自动播放,使用的自动播放,使用Stop方法会返回错误。可以通过设置方法会返回错误。可以通过设置AutoPlay属性为属性为False来终止播放。来终止播放。(6)Close方法 Close方法使方法使Animation控件关闭当前打开的控件关闭当前打开的.avi文件。如果没有加载任何文件,则文件。
8、如果没有加载任何文件,则Close方法不方法不执行任何操作,也不会产生任何错误。执行任何操作,也不会产生任何错误。1.2 Animation控件应用实例控件应用实例【例 1】利用Animation控件设计一个简单的播放.avi动画的程序。If cmdPlay.Caption=播放 Then Animation1.Open App.Path&clock.avi 加载动画文件 Animation1.Play cmdPlay.Caption=停止 Else Animation1.Stop cmdPlay.Caption=播放 End If说明说明 avi是Microsoft公司开发的一种数字音频与视
9、频文件格式,现已被大多数操作系统直接支持。avi格式允许视频和音频交错在一起同步播放,但avi文件没有限定压缩标准,由此导致avi文件格式不具有兼容性。不同压缩标准生成的avi文件必须使用对应的解压缩算法才能进行播放,故本例只能播放不含声音的未压缩或使用行程编码(RLE)压缩的avi文件。2 MCI控件控件 MCI是微软Windows定义的多媒体接口标准。MCI接口包括CDAudio、Scanner、VCR、Videodisc、DAT、DigitalVideo、MMMovie、Sequencer、WaveAudio等多媒体的主要产品,支持环境是Windows 9x及以上版本。MCI的最大优点是
10、应用系统与设备无关性。对于标准多媒体设备,安装相应的Windows的MCI Driver,Windows即可对该设备进行操作访问;对于非标准的多媒体设备,有厂家提供所配的MCI Driver也可以操作。由于MCI与设备的无关性,在多媒体应用系统的开发中,无需了解每种产品细节就能开发出通用的多媒体应用系统。应用程序通过指定一个MCI设备的类型来区分不同的多媒体设备设备类型指明了设备的物理类型。MCI控件控件 2.1 MCI控件介绍 2.2 MCI控件应用实例 2.1 MCI控件介绍控件介绍 MCI控件具有一组执行MCI命令的下压式按钮。从左到右,依次是Prev、Next、Play、Pause、B
11、ack、Step、Stop、Record 和 Eject按钮,用于管理MCI设备的录制和播放等(1)DeviceType属性属性 MCI控件所支持的设备类型包括两种:简单设备和复合设备。一个简单的设备并不需要设备元素。例如,CD音频就是一个已经安装好的设备,它们不需要应用程序为其操作的媒体内容提供任何信息。对于复合的MCI设备,就需要应用程序提供设备元素,即一个包含全部路径名的源数据文件或目的文件。(2)Command属性属性 MCI控件使用MCI命令实现对各种多媒体设备的控制,MCI命令是一套高层与设备无关的命令。其中许多命令直接与MCI控件的按钮直接对应。在用DeviceType属性标识了
12、程序中想要使用的设备之后,就可用Command属性把MCI命令发送给对应设备了。MCI控件本质上是该命令集的Visual Basic接口,如Play或Close等命令在Win32API的MCI命令结构中都有等价的命令,Play对应MCI_PLAY。表 3 列出了MCI控件使用的MCI命令,并列出了它们对应的Win32命令。实际使用时,可以用启用这些命令。如:MMControl1.Command=”Play”MCI控件使用的控件使用的MCI命令命令 命令命令MCI 命令命令描述描述OpenMCI_OPEN打开打开MCI设备设备CloseMCI_CLOSE关闭关闭MCI设备设备PlayMCI_PL
13、AY用用MCI设备进行播放设备进行播放PauseMCI_PAUSE MCI_RESUME暂停播放暂停播放继续播放继续播放StopMCI_STOP停止停止MCI设备设备BackMCI_STEP向后步进可用的曲目向后步进可用的曲目StepMCI_STEP向前步进可用的曲目向前步进可用的曲目PrevMCI_SEEK使用使用Seek命令跳到当前曲目的起始位置命令跳到当前曲目的起始位置NextMCI_SEEK使用使用Seek命令跳到下一个曲目的起始位置命令跳到下一个曲目的起始位置SeekMCI_SEEK向前或向后查找曲目向前或向后查找曲目RecordMCI_RECORD录制录制MCI设备的输入设备的输入
14、EjectMCI_SET从从CD驱动器中弹出音频驱动器中弹出音频CDSaveMCI_SAVE保存打开的文件保存打开的文件(3)FileName属性属性 指定Open命令将要打开的或者Save命令将要保存的文件。如果在运行时要改变FileName属性,就必须先关闭然后再重新打开MCI控件。(4)Tracks、Track、TrackLength、TrackPosition 属性属性 Tracks规定当前MCI设备上可用的曲目个数;Track规定关于TrackLength和TrackPosition属性返回信息的曲目,该属性仅用于获得某个特定曲目的有关信息,与当前曲目无关。TrackLength规定
15、Track属性给出的曲目的长度;TrackPosition规定Track属性给出的曲目的起始位置。(5)UpdateInterval属性属性 规定两次连续的StatusUpdate事件之间的毫秒 数,如 果 毫 秒 数 是 0,表 明 没 有StatusUpdate事件发生。(6)Error和和ErrorMessage属性属性 通过Error和ErrorMessage属性可以处理MCI控件产生的错误,并在每个命令后可以检查错误情况。例如,在Open命令之后,可用下面的代码检查Error属性的值,以判断是否存在CD驱动器。如果没有可用的CD驱动器,则返回错误信息。例如:If Form1.MMCo
16、ntrol1.Error Then MsgBox Form1.MMControl1.ErrorMessage,vbCritical,“CD播放器不能正常工作”End If(7)ButtonVisible属性属性 当MCI 控件是可见(Visible属性被设置为True)时,指定某个Button是否显示或隐藏。如果MCI 控件是不可见,该属性就不起作用。(8)ButtonClick事件事件 当用户在MCI 控件的按钮上按下并释放鼠标按钮时发生,Button可以是Back、Eject、Next、Pause、Play、Prev、Record、Step 或 Stop中的任意一种。(9)StatusUp
17、date事件事件 允许应用程序更新显示,以通知用户当前MCI设备的状态。通过这一事件应用程序可以从Position、Length和Mode等属性中获得状态信息。按UpdateInterval 属性所给定的时间间隔自动地发生。(10)Mode属性属性 返回打开的MCI 设备的当前模式。MCI 控件的Mode值。值值设备模式设备模式描述描述524mciModeNotOpen设备没有打开设备没有打开525mciModetop设备停止设备停止526mciModePlay设备正在播放设备正在播放527mciModeRecord设备正在记录设备正在记录528mciModeeek设备正在搜索设备正在搜索52
18、9mciModePause设备暂停设备暂停530mciModeReady设备准备好设备准备好 2.2 MCI控件应用实例控件应用实例【例 2】利用MCI控件设计一个音频播放器。3 MediaPlayer控件控件 使用MediaPlayer控件是播放视频最简捷的方法,MediaPlayer控件是Visual Basic 0新增加的多媒体控件,具有强大的多媒体播放功能,其操作方法类似于Windows操作系统附件中的Windows Media Player播放器。3.1 MediaPlayer控件介绍 3.2 MediaPlayer控件应用实例 3.1 MediaPlayer控件介绍控件介绍(1)A
19、utoStart属性:用于指定MediaPlayer控件是否可以自动播放多媒体文件。如果AutoStart属性设置为True,则程序运行后可自动播放,否则,必须用Play方法播放。(2)AutoRewind属性:用于指定是否自动回退,即在播放文件后滑动尺的滑块是否能回到开始位置。如果设置为True,可自动回退。(3)FileName属性:用于指定要播放的文件名,可以在属性窗口中设置,也可以在运行期间设定。如果在属性窗口中已为FileName属性指定文件名,并且AutoStart属性也已设置为True,则程序一运行就会自动播放该文件。(4)PlayCount属性:用于指定播放次数,该属性值必须大
20、于0。MediaPlayer控件介绍(续)控件介绍(续)(5)ShowAudioControls属性:该属性的值设置为True时,显示与声音有关的两个按钮,否则隐藏这两个按钮。(6)ShowControls属性:该属性的值设置为True时,显示控制按钮、滑动尺等;如果设置为False,则隐藏整个控制面板,即使其他属性设置为True。(7)ShowDisplay属性:该属性的值设置为True时,显示节目、剪辑、作者和版权等信息,否则不显示。(8)ShowPositionControls属性:用来指定位置移动按钮的显示和隐藏,如果设置为True,则显示这些按钮,否则隐藏这些按钮。(9)ShowSt
21、atusBar属性:用来指定是否显示状态条,默认为False。MediaPlayer控件介绍(续)控件介绍(续)(10)ShowTracker属性:用来指定是否显示滑动尺,默认为False。(11)Play方法:用于播放多媒体文件,其格式为 MediaPlayer1.Play。与MCI控件相似的是,MediaPlayer控件可以播放多种格式的媒体文件。(12)Pause方法:用于暂停播放多媒体文件,其格式为 MediaPlayer1.Pause。(13)Stop方法:用于停止播放多媒体文件,其格式为 MediaPlayer1.Stop。3.2 MediaPlayer控件应用实例控件应用实例【例
22、 3】利用MediaPlayer控件设计一个视频播放器。说明说明 MediaPlayer是一个功能非常强大的多媒体控件,可以播放包括avi、wav、mpg、mp3、m3u等在内的10多种格式的视频、音频文件,例如,我们可以很方便地利用它来设计一个MP3播放器。4多媒体多媒体API函数函数 调用API函数之前,首先要用Declare语句说明将要调用的函数,函数说明通常放在一个模块(Module)中,以便在其他模块或窗体文件中进行调用。语法格式 形式一:形式一:Declare Sub FunctionName Lib Filename(arguments)形式二:形式二:Declare Funct
23、ion FunctionName Lib Filename(arguments)FunctionName函数名称,Filename所在的动态链接库(dll)的名称。形式一有返回值给应用程序,形式二无返回值 Windows系统的winmm.dll等动态链接库文件中存在大量用于多媒体编程的API函数本节内容本节内容 4.1 常用多媒体API函数简介 4.2 MCI指令概述 4.3 MCI音频指令 4.4 MCI音频指令应用实例 4.5 MCI MIDI指令 4.6 MCI MIDI指令应用实例 4.7 MCI AVI指令 4.8 MCI AVI指令应用实例 4.9 MCI CD Audio指令 4
24、.10 MCI CD指令应用实例 4.1 常用多媒体常用多媒体API函数简介函数简介 1.mciExecute()函数()函数2.mciSendString()函数()函数3.mciGetErrorString()函数()函数4.GetShortPathName()函数()函数1.mciExecute()函数()函数 函数的说明如下:Public Declare Function mciExecute Lib winmm.dll Alias mciExecute(ByVal lpstrCommand As String)As Long 参数lpstrCommand表示MCI指令字符串,实际调用
25、时,只要送入某一MCI指令字符串即可,如:m%=mciExecute(”open CDAudio alias CD”)该语句的功能是打开一个CD设备。如果在执行mciExecute()时出现错误,则MCI将给出一个对话框,并且返回一个非零的错误代码。可用mciSendString()函数处理该错误信息,。2.mciSendString()函数()函数 函数的说明如下:Public Declare Function mciSendString Lib winmm.dll Alias mciSendStringA(ByVal lpstrCommand As String,ByVal lpstrRe
26、turnString As String,ByVal uReturnLength As Long,ByVal hwndCallback As Long)As Long 参数lpstrCommand表示MCI指令字符串;参数lpstrReturnString指向一个预先分配的缓冲区,用来接收MCI命令的执行结果,该参数可以设置成vbNullString,表示不接收MCI命令的执行结果;参数uReturnLength表示缓冲区的大小,如果lpstrReturnString参数可以设置成vbNullString,则该参数可设置为0;参数hwndCallback为传入hWnd,用以接收MCI命令执行过
27、程的通知码,如果不需要通知码,则可设置为0。如果mciSendString()函数调用成功,则返回0;如果调用不成功,它将会返回一个非零的错误代码。3.mciGetErrorString()函数()函数 函数的说明如下:Public Declare Function mciGetErrorString Lib winmm.dll Alias mciGetErrorStringA(ByVal dwError As Long,ByVal lpstrBuffer As String,ByVal uLength As Long)As Long mciGetErrorString()函数的功能是解释MC
28、I错误代码的含义。l 参数dwError是错误代码,来自mciSendString函数的返回值;l 参数lpstrBuffer为描述错误的字符串;l 参数uLength为参数lpstrBuffer的字符串的长度。如果函数调用成功,则返回非0值,否则返回0值。4.GetShortPathName()函数()函数 函数的说明如下:Public Declare Function GetShortPathName Lib kernel32 Alias GetShortPathNameA(ByVal lpszLongPath As String,ByVal lpszShortPath As String
29、,ByVal cchBuffer As Long)As Long GetShortPathName()函数的功能是把文件名转换为对应的短文件名。l 参数lpszLongPath为长文件名;l 参数lpszShortPath为短文件名;l 参数cchBuffer为参数lpszShortPath的字符串的长度。如果函数调用成功,则返回短文件名的字节数;否则返回0值。GetShortPathName()函数()函数 这个函数与MCI指令没有直接关系,在播放长文件名的媒体文件时要用到它。若在长文件名中含有空格,则MCI驱动程序不能对它进行正确解释,因而无法播放,必须把它转换成相应的短文件名才能放到MC
30、I指令中。例如:文件名:C:WINNTMediaThe Microsoft Sound.wav 转换为:C:WINNTMediaTHEMIC1.WAV 一般来说,只使用上述几个函数就可以编写多媒体应用程序了。但是,在调用这些函数执行多媒体操作时,必须提供适当的参数,其中最主要的参数是MCI指令字符串。4.2 MCI指令概述指令概述 MCI指令是以文字为基础的程序接口,它用自然语言的方式将MCI指令组合成一段文字,这样的一段文字即为MCI指令串。把MCI指令字符串作为参数传送给mciExecute等API函数,便可实现对多媒体设备的控制。1.MCI1.MCI命令的分类命令的分类MCI命令总共分为
31、四大类:系统命令(System Commands):直接由MCI解释并执行此类命令,如break、sound、sysinfo等。请求命令(Required Commands):此类命令可取得多媒体设备的相关信息或开启、关闭这些设备等,如capability、info、status、open、close等。基本命令(Basic Commands):对多媒体设备除、开启关闭之外的媒体控制功能,如load、pause、set、play、record、resume、save、seek、stop等。扩展命令(Extended Commands)扩展包含两个方面,一是特殊多媒体设备类型的扩展;其二是请求命
32、令和基本命令的扩展。2.MCI命令字符串的语法格式命令字符串的语法格式 MCI指令字符串有 3个部分,其语法格式:command device_name arguments command表示所使用的MCI指令,如play、open、record、save等;device_name指出所使用的设备类型、文件名称或别名。对于复合型设备,设备名必须是文件名,并不能省略扩展名,扩展名必须是使用标准扩展名,MCI根据文件的扩展名判断所使用的设备类型。别名是为设备或者文件另外取的名字,它主要是为了简化MCI字符串、避免重复输入设备名或文件名,如,下面的语句将打开一个avi文件,并给它一个别名AVI:op
33、en c:testclock.avi alias AVI 下面的操作便可以对这个别名进行,语句可以写成:下面的操作便可以对这个别名进行,语句可以写成:play AVI wait close AVI arguments参数,并不是每一个MCI命令都必须使用到的,应视需求而定。例如使用Play命令就要用到from及to这两个参数来表示起始及结束的位置。如,播放CD光盘上第l首到第5首曲目,其命令格式为:play cdaduio from l to 5 3.四个常用参数四个常用参数 shareable参数 all参数 new参数 wait参数(1)shareable参数参数 使用shareable参
34、数,可让不同的应用程序同时使用相同的多媒 体 设 备。如:open cdaudio shareable 如果把一个设备设定为可共享设备,则不能在程序中测试这个设备的状态,因为它随时都可能被其他程序使用而改变状态。需要注意的是,并不是每种设备都可以设置为可共享的,大多数复合型设备无法与其他程序共享,虽然可以多次打开同一个文件,但每次都要给它赋予一个不同的别名。(2)all参数参数 对于某些指令,可以在命令格式中设备名部分使用all参数。这样MCI会依次把这个指令传送给每个已经打开的设备。例如:close all 将关闭所有已打开的多媒体设备。(3)new参数参数 new参数用于指定新建一个文件,
35、比如在录音时,具体文件名可以在save指令存储该文件给定,如下列一段代码即为打开一个新文件给语音设备使用,然后开始录音,停止录音,保存录音,关闭录音设备。Open new type waveaudio alias sounds Record sounds Stop sounds Save sounds c:testtest.wav Close sounds(4)wait参数参数 对于下列这段代码,如果缺少wait参数,执行后你听不到任何声音。这是因为一般情况下,执行MCI指令之后,会立即将控制权交回,也就是执行play命令后,会立即执行stop命令,即播放刚开始就被终止。有了wait参数,指定
36、的多媒体设备执行完这个指令后,才将控制权交回应用程序。open c:winntMediatada.wav alias sounds play sounds wait stop sounds4.在立即窗口中练习在立即窗口中练习MCI指令指令为了解MCI指令的功能,可以在立即窗口中反复练习MCI指令字符串:新建工程文件,执行“工程”菜单中“添加模块”命令,打开模块代码窗口。在标准模块窗口中声明API函数:Public Declare Function mciExecute Lib winmm.dll Alias mciExecute(ByVal lpstrCommand As String)As
37、Long 执行“视图”菜单中“立即窗口”命令(或按Ctrl+G),打开“立即”窗口。在“立即”窗口中输入要执行的MCI指令字符串,如图6-9所示。4.3 MCI音频指令音频指令 1.open指令指令 功能:是打开音频设备或语音文件。功能:是打开音频设备或语音文件。指令格式:指令格式:open 设备名设备名 参数参数notifywait 例如,下面的语句将打开语音文件,并赋予别名例如,下面的语句将打开语音文件,并赋予别名sound:open C:winntMediatada.wav alias sound type waveaudio 2.play指令指令 功能:是播放语音。功能:是播放语音。指
38、令格式:指令格式:play 设备名设备名 参数参数notifywait 参数可以是参数可以是 from postion1 to position2,如果省略,如果省略,则从开始位置或当前位置开始播放至文件结束。例如,则从开始位置或当前位置开始播放至文件结束。例如,下面的语句将从文件的第下面的语句将从文件的第10秒开始至秒开始至50秒(秒(sound为为open命令中使用的别名,并假定文件长度超过命令中使用的别名,并假定文件长度超过50秒):秒):play sound from 30000 to 50000 MCI音频指令(续)音频指令(续)3.save指令指令 功能:是保存当前的语音内容。功能
39、:是保存当前的语音内容。指令格式:指令格式:save设备名设备名 参数参数notifywait 参数为参数为filename,用于指定保存数据的文件名及路径。,用于指定保存数据的文件名及路径。如:如:save sound C:testtest.wav 4.record指令指令 功能:是开始录音,在使用本指令之前,需用功能:是开始录音,在使用本指令之前,需用open指指令打开一个文件以供存储数据。令打开一个文件以供存储数据。指令格式:指令格式:record设备名设备名 参数参数notifywait 参数可以取的值见表参数可以取的值见表 7 5.pause指令指令 功能:是暂停播放或录音。指令格式
40、:功能:是暂停播放或录音。指令格式:pause 设备名。设备名。MCI音频指令(续)音频指令(续)resume指令指令 功能:是恢复执行功能:是恢复执行pause指令暂停的操作。指令暂停的操作。指令格式:指令格式:resume 设备名。设备名。7.close指令指令 功能:是关闭语音设备。功能:是关闭语音设备。指令格式:指令格式:close 设备名。设备名。8.set指令指令 功能:是设置语音设备的各种状态。功能:是设置语音设备的各种状态。指令格式:指令格式:set 设备名设备名 参数参数notifywait 参数常见的取值见表参数常见的取值见表 89.seek指令指令 功能:是对语音文件定位
41、。功能:是对语音文件定位。指令格式:指令格式:seek 设备名设备名 参数参数notifywait 参数可以取的值见表参数可以取的值见表 9MCI音频指令(续)音频指令(续)10.status指令指令 功能:是取得语音设备的相关信息。功能:是取得语音设备的相关信息。指令格式:指令格式:status 设备名设备名 参数参数notifywait 参数常见的取值见表参数常见的取值见表 10 4.4 MCI音频指令应用实例音频指令应用实例【例 4】利用Windows API函数及MCI音频指令设计一个小小录音器。4.5 MCI MIDI指令指令 一般情况下,MIDI序列发生器通过驱动程序mciseq.
42、drv处理与MIDI有关的MCI指令,因此常把MIDI序列发生器称为MCISEQ设备。但它只能播放midi音乐,不能录音。MCI MIDI指令指令1.open指令指令 功能:是打开并初始化功能:是打开并初始化MIDI序列发生器。序列发生器。指令格式:指令格式:open 设备名设备名 参数参数 例如,下面的语句将打开文件例如,下面的语句将打开文件canyon.mid,并赋予别名,并赋予别名MIDI:open C:winntMediacanyon.mid alias MIDI type sequencer2.play指令指令 功能:是播放功能:是播放MIDI音乐。音乐。指令格式:指令格式:play
43、 设备名设备名 参数参数 例如,播放例如,播放MIDI音乐片段可用下面语句(时间格式为音乐片段可用下面语句(时间格式为ms):):play MIDI from 30000 to 50000 3.pause指令指令 功能:是暂停播放。功能:是暂停播放。指令格式:指令格式:pause 设备名。设备名。MCI MIDI指令(续)指令(续)4.resume指令指令 功能:是恢复执行功能:是恢复执行pause指令暂停的操作。指令暂停的操作。指令格式:指令格式:resume 设备名。设备名。5.close指令指令 功能:是关闭功能:是关闭MIDI序列发生器。序列发生器。指令格式:指令格式:close 设备
44、名。设备名。set指令指令 功能:是设置功能:是设置MIDI序列发生器的各种状态。序列发生器的各种状态。指令格式:指令格式:set 设备名设备名 参数参数notifywait7.seek指令指令 功能:查找功能:查找MIDI文件中指定的位置。文件中指定的位置。指令格式:指令格式:seek 设备名设备名 参数参数 参数可以取的值见表参数可以取的值见表 11 MCI MIDI指令(续)指令(续)8.status指令指令 功能:是取得功能:是取得MIDI序列发生器的信息。序列发生器的信息。指令格式:指令格式:status 设备名设备名 参数参数 参数常见的取值见表参数常见的取值见表 12 4.6 M
45、CI MIDI指令应用实例指令应用实例【例 5】利用Windows API函数及MCI MIDI指令设计一个MIDI播放器。4.7 MCI AVI指令指令 前面介绍了用于播放WAV文件和MIDI音乐的MCI指令。这两种指令只能播放声音,没有动态画面。AVI指令可用来播放AVI文件,具有和电影类似的效果,下面是常用的MCI AVI指令,在指令格式中,设备名一般为avi文件,可为其指定一个别名(alias)。此外,每个指令都可带notify和wait参数。MCI AVI指令指令1.configure指令指令 功能:是打开并显示一个对话框,用来设置功能:是打开并显示一个对话框,用来设置AVI的播放。
46、的播放。指令格式:指令格式:configure设备名设备名 例如,下面的命令将打开设置播放别名为例如,下面的命令将打开设置播放别名为AVI的对话框。的对话框。configure AVI2.open指令指令 功能:是打开功能:是打开AVI播放设备。播放设备。指令格式:指令格式:open 设备名设备名 参数参数 参数常见的取值见表参数常见的取值见表 13 例如,下面的语句将打开文件例如,下面的语句将打开文件Clock.avi,并赋予别名,并赋予别名AVI:open c:winntClock.avi alias AVI type AVIVideoMCI AVI指令(续)指令(续)3.play指令指令
47、 功能:是播放功能:是播放AVI。指令格式:指令格式:play 设备名设备名 参数参数 参数可以取的值见表参数可以取的值见表 14 例如,以全屏幕方式播放第例如,以全屏幕方式播放第50150帧可用下面语句:帧可用下面语句:play AVI from 50 to 150 fullscreen 4.pause指令指令 功能:是暂停播放。指令格式:功能:是暂停播放。指令格式:pause 设备名设备名5.put指令指令 功能:是定义功能:是定义AVI的原窗口和目标窗口。的原窗口和目标窗口。指令格式:指令格式:put 设备名设备名 参数参数 参数可以取的值见表参数可以取的值见表 15 例如,显示例如,显
48、示200300AVI的上半部分画面可用下面语的上半部分画面可用下面语句:句:put AVI source at 0,0,200,150 window AVI state showMCI AVI指令(续)指令(续)realize指令指令 功能:是设置播放功能:是设置播放AVI时所引用的调色板。时所引用的调色板。指令格式:指令格式:realize 设备名设备名 参数参数 参数可以取的值见表参数可以取的值见表 167.update指令指令 功能:是重画当前画面。功能:是重画当前画面。指令格式:指令格式:update 设备名设备名 参数参数 参数为参数为at rectangle指定要重画的区域,指定要
49、重画的区域,rectangle是以是以x1,y1,x2,y2形式表示的区域,其中形式表示的区域,其中x1,y1表示区域的左上表示区域的左上角,角,x2,y2表示区域的右上角。它们都是以像素为单位。表示区域的右上角。它们都是以像素为单位。8.where指令指令 功能:是取得播放功能:是取得播放AVI原窗口和目标窗口的坐标。原窗口和目标窗口的坐标。指令格式:指令格式:where 设备名设备名 参数参数 如果参数为如果参数为destination,则取得目标窗口的坐标;如果,则取得目标窗口的坐标;如果参数为参数为source,则取得原窗口的坐标。,则取得原窗口的坐标。MCI AVI指令(续)指令(续
50、)9.windows指令指令 功能:是取得播放功能:是取得播放AVI原窗口目标窗口的坐标。原窗口目标窗口的坐标。指令格式:指令格式:windows 设备名设备名 参数参数 参数常见的取值见表参数常见的取值见表 1710.setaudio指令指令 功能:是设置播放动态视频时的音量。功能:是设置播放动态视频时的音量。指令格式:指令格式:setaudio 设备名设备名 参数参数 参数可以取的值见表参数可以取的值见表 18 例如,把播放时的音量设置为例如,把播放时的音量设置为3可以用下面的语句:可以用下面的语句:setaudio AVI volume to 311.setvideo指令指令 功能:是设