版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1VB播放音频的方法6.2MP3的播放方法6.3两个实例本章小结练习六众所周知,VB是功能非常强大的多媒体开发工具,它有着丰富的函数和方法,可处理各种各样的多媒体信息,能够很灵活地操作声音等多媒体素材。在VB中用于输出声音的方法比较多,主要有以下四种。
6.1VB播放音频的方法
1.利用Beep语句使扬声器发声
在使用VB开发应用程序时,根据应用环境的需要,有时我们并不需要在应用程序中大量地使用声音,而只需在特定的场合出现声音,如Windows的警告声等。
Beep语句是VB提供的一条利用计算机扬声器发声的语句,它虽然只能够发出简单的蜂鸣声,但在应用程序中却大量用于输出警告的信息。如下例中,允许用户在文本框中输入数字,当用户输入错误时,系统会报警提示。
除了Beep语句外,在VB中调用Windows的一些有关发声的API函数,也可以让计算机的蜂鸣器发出不同频率、时长的声音,从而奏出美妙的音乐。其中最常用的有关发声的API函数是Beep,其声明格式如下:其中dwFreq为声音频率,dwDuration为发声时间。在VB的通用过程中声明上述函数后,就可以在程序中对它进行调用。
2.利用OLE2.0控件播放音频
VB是第一个支持对象连接与嵌入(OLE)的开发工具,利用OLE可以简单地在应用程序中插入声音文件,这也是使用VB开发多媒体软件常用的方法。从VB的工具箱中我们可以找到OLE 2.0控件。双击OLE 2.0控件时,会弹出“InsertObject”窗口,在窗口中选择对象类型ObjectType为声音文件,选择“CreatefromFile”指定硬盘上声音文件的位置,同时确认Link方式。这些步骤其实是在设置OLE 2.0的属性,我们通过打开属性窗口,设置其中的Class、SourceDoc、SourceItem等属性,也可完成这一工作。按F5键运行程序,双击OLE对象时就会发声。与播放各种声音文件相关的属性为Action,通过设置Action属性可以打开、驱动、删除相应的声音对象。在下面的例子中,运行程序后便可调用声音文件:
3.利用VB的多媒体控件MCI32播放音频及MIDI音乐
使用MCI32是VB开发多媒体软件的主要方法,利用MCI32在应用程序中加入声音文件是很容易的事。MCI32控件在工具箱里的名称是MMControl,如果在工具箱里找不到它,则用添加控件的方法在部件中选中“MicrosoftMultimediaControl6.0”,就可以增加MMControl控件。
下面是利用MMControl控件设计播放WAV文件的程序。设计步骤如下:
(1)新建一个工程。
(2)在Form1上建立一个MMControl控制对象MMControl1(见图6-1)。图6-1在Form1上建立一个MMControl控制对象MMControl1
(3)设置MMControl1的属性。在MMControl1控件上,通过单击鼠标右键,在弹出式菜单中选中属性,就可出现MMControl1控件的属性页窗口。我们可以在该窗口的控件页中设置MMControl1的属性值,将倒带、快进、步进、回倒、暂停、播放、录音、停止按钮设为可视(见图6-2),便会出现倒带、快进、步进、回倒、暂停、播放、录音、停止按钮。图6-2将部分按钮设为可视(4)在Form_Load中编写以下程序:为了正确管理多媒体资源,在退出应用程序之前,应该关闭那些已经打开的MCI设备。如果将下面的语句放到Form_Unload过程,那么在退出包含MultimediaMCI控件的窗体之前,就可以关闭那些已经打开的MCI设备。
程序说明:
(1) MMControl1.DeviceTypeMCI是指定多媒体文件的类型,如:AVIVideo、CDAudio、DAT、DigitalVideo、MMMovie、Sequencer、VCR、WaveAudio等。
(2) MMControl1.Filename是设定要播放WAV文件的路径及文件名。
(3) MMControl1.Command是MMControl的控制命令。以下是一些常用的控制命令:
(4)由于本程序利用MMControl的Button,因此只用到Open控制命令。
(5)程序执行后,按Play按钮就会播放语音,中途可按暂停或停止按钮。
(6)播放完毕后,要按倒带按钮才可以重新播放。
使用MCI32控件播放MIDI的方式与播放WAV的方式是一样的。下面的程序可以用来播放MIDI音乐:
4.调用API函数播放WAV文件、MIDI音乐及CD音乐
API函数非常多,读者可以用VB中的“API文本浏览器”查找所需的API函数,然后把它复制到自己的模块程序中。
在调用API函数的时候,要分辨清楚16 bit和32 bit所用的动态链接库(DLL),不然会发生版本不对的错误(这个错误的错误码为48),从而造成程序无法执行。为了避免发生这种错误,我们可以在定义函数的模块程序中加入下列“前置判断”:在Windows系统中,有关多媒体功能的动态链接库中,16bit使用的是MMSystem.DLL,32bit使用的是WINMM.DLL。
sndPlaySound函数是播放WAV文件的API函数。下面给出sndPlaySound函数的定义及常数的定义。
函数的定义:
sndPlaySound函数需要两个参数:第一个参数soundfilename是要播放的WAV文件的名称;第二个参数是一个表明播放方式的标识常量。经常使用的标识意义如下:
SND_SYNC:播放WAV文件,播放完毕后将控制转移回应用程序中。
SND_ASYNC:播放WAV文件,然后将控制立即转移回应用程序中,而不管对WAV文件的播放是否结束。
SND_NODEFAULT:不播放缺省的WAV文件,以免发生某些意外的错误。
SND_MEMORY:播放以前已经加载到内存中的WAV文件。
SND_LOOP:循环播放WAV文件。
SND_NOSTOP:在开始播放其它的WAV文件之前,需要完成对本WAV文件的播放。
注意:
(1)上面的函数定义及常数定义用在标准模块程序中,也可用在程序窗体的通用声明部分,这时应将函数定义中的Public改成Private,将常数定义中的Public删除。
(2) SND_LOOP标识通常需要同SND_ASYNC共同使用,即在两个标识之间添加“and”符号,以免在对WAV文件进行播放的时候将系统挂起。
下面介绍使用API函数mciExecute播放MIDI音乐的方法。首先在程序窗体的通用声明部分或标准模块中添加如下声明语句:
mciExecute函数只需要一个参数lpstrCommand,它是一个命令字符串,用于指明播放声音文件的命令。例如,希望从头到尾完整地播放CANYON.MID音乐文件,则该字符串就是“playC:\WINDOWS\MEDIA\CANYON.MID”,其中play为命令,C:\WINDOWS\MEDIA\CANYON.MID为音乐文件的路径以及文件名称,如下所示:
DimTempAsLong
Temp=mciExecute(“play
C:\WINDOWS\MEDIA\CANYON.MID")如果希望对声音文件的某一部分进行播放,则可以使用from..to.. 播放区间子句来控制播放区间。例如,若要播放CANYON.MID文件的5~15秒的区间,则可以使用如下的语句:
mciExecute函数也可以用来对WAV文件进行播放,方法同上。下面给出使用API函数sndPlaySound及mciExecute播放声音的完整程序,程序界面如图6-3所示。图6-3使用API函数播放音乐控件设计
通过按下F5键来执行样例程序。如图6-4所示,单击“sndPlaySound播放”命令按钮,则使用sndPlaySound函数来播放C:\WINDOWS\MEDIA目录下的TADA.WAV声音文件;单击“mciExecute播放”命令按钮,则使用mciExecute函数来播放C:\WINDOWS\MEDIA目录下的CANYON.MID文件的5~15秒的部分。
下面我们结合实例介绍如何使用API多媒体函数mciSendString来播放CD音乐,如图6-5所示。图6-4单击“sndPlaySound播放”按钮,则使用sndPlaySound函数播放声音文件图6-5播放CD控件设计
程序运行后,先插入CD光盘,然后单击“播放CD第一首歌”命令按钮,就可听到该CD的第一首歌了。
总的说来,以上四种方法的复杂程度及对系统的要求和消耗的系统资源各有不同。因而,作为一个VB程序员,在编写程序时应能熟练而准确地使用上述四种方法,并能在一定的场合选择恰当的一种方法,从而为自己的程序增添效果。
MP3自问世以来,因其声音还原好、压缩比率高而深受欢迎,将MP3使用在多媒体应用软件中会大大减少存储空间。那么,怎样在自己的应用程序中播放MP3文件呢?实际上,使用ActiveX控件mp3play.ocx(一个播放MP3文件的控件,可在网上下载)就可以在VB中很容易地实现MP3文件的播放。下面介绍该控件的使用方法。
(1)新建一个工程。单击“工程”\“部件”菜单,在出现的控件对话框中选中“Dialog-MedieaMp3PlayActiveXControl”,将Mp3Play.ocx控件添加到VB的工具箱中。此时,在工具箱中可以看到新增加了一个蓝色小喇叭图标,这就是mp3play.ocx控件。6.2MP3的播放方法
(2)单击工具箱中的MP3控件,将其添加到窗体中,名称设为MP3Play1,属性Visible设为False。
(3)在窗体中添加“播放”命令按钮,其名称为command1,属性Caption为“播放MP3”。在其Click事件中填写以下代码:
在窗体中添加“停止播放”命令按钮,其名称为command2,属性Caption为“停止播放”。在其Click事件中填写以下代码:
程序执行后,单击“播放MP3”按钮,将播放所指定的MP3音乐。若要停止,单击“停止播放”按钮即可。上面介绍了播放MP3文件的一个简单例子。在这个例子中,我们使用了Mp3Play.ocx控件的三个最常用的方法Mp3Play1.Open、Mp3Play1.Play及Mp3Play1.Stop。下面进一步介绍Mp3Play.ocx控件的常用方法和属性。
Authorize(Name,Password)方法:输入认证的名字及密码,否则,只能播放30秒。如果输入正确,则返回0;否则返回5。调用方法如下:
ReturnValue=Mp3Play1.Authorize("Password","Keyword")
Open(Inputfile,Outputfile)方法:打开MP3声音文件。如果仅仅是播放MP3,则Outputfile输出文件应为空(“”);如果要输出波形文件,则outputfile(输出文件)应为波形文件名。如果执行成功,则返回0;否则返回错号。调用方法如下:
ReturnValue=Mp3Play1.Open(“C:\Song.mp3”,“”)
或
ReturnValue=Mp3Play1.Open(“C:\Song.mp3”,“C:\Song.wav”)
Close方法:关闭MP3文件。
GetVolumeLeft,GetVolumeRight属性:返回系统的音量大小,长整型(long0~65 536)。
GetVolumeLeftP,GetVolumeRightP属性:返回系统音量的百分比(0~100)。
GetWaveLengthSecs属性:返回声音文件总的播放时间长度(秒)。
SetVolume方法:设置系统的左右音量值(long0~65 536)。调用方法如下:
ReturnValue=Mp3Play1.SetVolume(32768,32768)
Pause方法:暂停(一次暂停,二次播放)。
Play方法:播放。如果成功,则返回0。
PlayFromToS(SecondA,SecondB)方法:从开始SecondA播放声音文件到SecondB。最大的SecondB可以从属性GetWaveLengthSecs中得到。如果运行成功,则返回0。
Stop方法:停止播放声音文件和编码(decoding)。如果执行成功,则返回0。
只要我们灵活运用如上所述的方法和属性,就不难设计出属于自己的“MP3播放程序”。下面给出一个完整的“MP3播放程序”,从程序中可以清楚地看到Mp3Play.ocx控件的方法和属性的运用情况。
窗体中各控件的布局如图6-6所示。其中Mp3Play控件为MP3播放控件,Mp3Enc控件为MP3编码控件。图6-6窗体中各控件的布局
程序运行后,单击“打开”按钮,选定要播放的Mp3文件,再单击“播放”按钮,就可以听到美妙的Mp3音乐了(见图6-7)。图6-7Mp3Player6.3.1声音点播机
在进行多媒体应用软件的开发时,经常会用到后缀名为 .MID和 .WAV的声音和音乐文件。为了选择这些声音或音乐文件,一般是用Windows附件中的媒体播放器逐次地打开它们,操作起来十分繁琐。下面的程序是一个“声音点播机”,界面美观,操作快捷高效,用鼠标单击文件名即可播放(见图6-8)。6.3两个实例图6-8声音点播机控件设计图6-9声音点播机的设计结果6.3.2播放资源文件中的WAV声音
VB提供的方法可使我们很容易地使用资源文件中的字符、图片等。我们可以用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江警官职业学院《品牌形象专项设计一》2023-2024学年第一学期期末试卷
- 中国民用航空飞行学院《现代交换技术》2023-2024学年第一学期期末试卷
- 郑州旅游职业学院《当代资本主义》2023-2024学年第一学期期末试卷
- 小学预算编制收支审批制度
- 浙江传媒学院《应用程序设计实验》2023-2024学年第一学期期末试卷
- 漳州城市职业学院《长跑》2023-2024学年第一学期期末试卷
- 深度学习在元数据分析中的探索
- 双十二品牌提升策略模板
- 专业基础-房地产经纪人《专业基础》点睛提分卷3
- 2024-2025学年江苏省无锡市江阴市八年级(上)期末数学试卷
- 医疗废物管理条例-题及答案
- 眼内炎患者的护理查房ppt
- 理论力学-上海交通大学中国大学mooc课后章节答案期末考试题库2023年
- SRD控制器使用说明书
- 雨水暗沟施工方案实用文档
- 浙教版七年级下册科学全册课件
- 非计划性拔管风险评估表二
- 外贸财务对账单英文版-带公式
- 北教版四年级综合实践下册 第十一课饮料中的学问
- 英语苏教版译林五年级下册单词默写表
- 企业组织机构架构图
评论
0/150
提交评论