VB制作MP3播放器_第1页
VB制作MP3播放器_第2页
VB制作MP3播放器_第3页
VB制作MP3播放器_第4页
VB制作MP3播放器_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1、MP3播放器原理,22、相关API函数简介,23、设计要求,54、设计步骤及程序代码,65、运行结果分析及截图,96、心得体会,,,107、参考文献,111、MP3播放器原理MP3播放器是利用数字信号处理器DSP(DigitalSignProcesser)来完成处理传输和解码MP3文件的任务的。DSP掌管随身听的数据传输,设备接口控制,文件解码回放等活动。DSP能够在非常短的时间里完成多种处理任务, 而且此过程所消耗的能量极少(这也是它适合于便携式播放器的一个显著特点)。首先将MP3歌曲文件从内存中取出并读取存储器上的信号-到解码芯片对信号进行解码-通过数模转换器将解出来的数字信号转换

2、成模拟信号-再把转换后的模拟音频放大-低通滤波后到耳机输出口,输出后就是我们所听到的音乐了。2、相关API函数简介:mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面介绍它的使用方法:该函数有四个参数:第一个参数:要发送的命令字符串。字符串结构是:命令设备别名命令参数.第二个参数:返回信息的缓冲区,为一指定了大小的字符串变量.第三个参数:缓冲区的大小,就是字符变量的长度.第四个参数:回调方式,一般设为零返回值:函数执行成功返回零,否则返回错误代码一、常用命令1.打开(Open),格式:Open设备名type设备型式alias别名Di

3、mmNameasstringmName=f:mpegmpeg1.avimciSendStringopenmNametypeMPEGVideoAliasmovieparent%uStyle%unotify,0&,0,0其中:open操作命令mName全路径文件名typeMPEGVideo是指打开MPEG,AVI等类型,如果不加这一句,就是打开WAV,MP3等Aliasmovie定义了该操作的别名为movie,后续操作只要指明别名即可parent%u源Style%u样式notify通知2.播放(Play),格式:Play设备名from起点to终点mciSendStringplaymovie

4、,0&,0,0mciSendStringplaymoviefullscreen,0&,0,0全屏播放3.暂停(Pause:mciSendStringpausemovie,0&,0,04.继续(ResumR:mciSendStringresumemovie,0&,0,05.停止(Stop):mciSendStringstopmovie,0&,0,06.关闭(Colse):mciSendStringclosemovie,0&,0,07.前进到下一个位置:mciSendStringstepmovie,0&,0,08.后退到上一个位置:mciSe

5、ndStringstepmoviereverse,0&,0,09.前进或后退N他位置(其中N0即表示后退)mciSendStringstepmovieby&str(N),0&,0,010.获取当前播放位置:DimSTAsString*64mciSendStringstatusmovieposition,st,len(st),011 .获取媒体的总长度:mciSendStringstatusmovielength,st,len(st),0l=val(st)L就是所播放文件的长度12.获取播放信息:DimSTAsString*64mciSendStringstatusmov

6、iemode,ST,Len(ST),0IfLeft(ST,7)=stoppedThen(处理代码)播放完毕13.循环播放:mciSendStringplaymovierepeat,0&,0,0二、控制声音大小:DimVAsLongmciSendStringstatusmovievolume,V0,0V是获取的音量大小值。V=50mciSendStringsetaudiomovievolumeto&V&0,0,0V是设置的音量值三、设置播放位置.(需事先设定时间格式),格式:Seek设备名to位置|tostart|toendDimP1asLong,P2asLongP1=1

7、00:P2=3000mciSendStringseekmovieto,P1,0,0PH:当前起始位置,单位:毫秒mciSendStringseekmovietostart,0&,0,0定位到开头位置mciSendStringplaymovie,0&,0,0定位后再播放或者:mciSendStringplaymovieFROMP1toP2,0&,0,0P1是起始位置,P2是停止位置。 单位:毫秒mciSendStringseekmovietoend,0&,0,0定位到最后位置四、在指定控件上播放视频:mciSendStringopenAVI文件名parenthWn

8、dstylechild,0&,0,0其中,hWnd是控件的句柄执行上述命令之后,影片会被放置在控件的左上角,且影片的大小不受控件大小的影响,如果想要改变影片播放的位置及大小,可以在新行play指令前先执行put指令,格式如下:mcisendStringputN文件名windowatXYWidthHeight,0&,0,0其中:X、Y为影片左上角坐标,Width、Height为影片的宽高度五、如果播放视频还可控制亮度DimBAsLongmciSendStringstatusmoviebrightness,B,0,0配获取的亮度值。B=50mciSendStringsetvideo

9、moviebrightnessto&B,&0,0,0B是设置的亮度值六、录音设置:录音前,用以下语句初始化1.设为8位:mciSendStringsetwavebitpersample8,0,02.设为11025HzmciSendStringsetwavesamplespersec11025,0,03.设为立体声:mciSendStringsetwavechannels2,0,04.实现PCM格式(不一定正确):MCISENDSTRINGsetwaveformattagpcm,0,05.开始录音:mciSendStringclosemovie,0&,0,0mciSend

10、StringopennewtypeVAVEAudioaliasmovie,0&,0,0mciSendStringrecordmovie,0&,0,06.保存录音到c:123.wavmciSendStringstopmovie,0&,0,0mciSendStringsavemovieC:123.wav”,0&,0,0mciSendStringclosemovie,0&,0,0七、开关光驱:mciSendStringsetcdaudiodooropen,0,0打开mciSendStringsetcdaudiodoorclose,0,0关闭八、其它1.设置设备

11、的各种状态(Set)Setalias_nameaudioalloffaudioallontimeformatms:Set品令用来设置设备的各种状态.如:静音,有声音,时间格式为毫秒等.2.取得设备的状态(StatusStatusalias_namelengthmodeposition:Statu品令用来取得设备的状态.如:该媒体文件的长度,该媒体文件所处状态该媒体文件的当前位置等.的长度,该媒体文件所处状态该媒体文件的当前位置等3 .、设计要求:以VB或VC+为编程工具,制作一个简单的MP3播放器。实现MP3播放器的基本功能:Play(播放)、Pause(暂停)、Stopplay(停止播放)、

12、Back(向后跳跃卜Prew(向前跳跃)。3、设计步骤及程序代码:启动VB程序,在窗体上放置6个命令按钮,三个标签,一个公用对话框、一个进度条、一个状态栏和一个计时器。按钮OpenMP3File是用来打开对话框选择MP3文件, 其他5个按钮分别为Play(播放)、Pause暂停)、Stopplay(停止播放卜Back(向后跳跃)、Prew(向前跳跃)。Labell用来表示歌曲当前时间;label2放在时度条的最左边,Caption属性为00:00;lable3放在时度条的右边,用来表示歌曲总长。下面就可以编写代码了。首先在窗体的通用声明部分声明函数PrivateDeclareFunctionm

13、ciSendStringLibwinmm.dllAliasmciSendStringA(ByvallpstrCommandAsString,ByVallpstrRetumStringAsString,ByValuReturnLengthAslong,ByValhwndCallbackaslong)AslongDimmfnAsString下面就是各个对象的代码了:PrivateSubForm_load()mfn=play.Enabled=Falsepause.Enabled=FalseStopplay.Enabled=Falseback.Enabled=Falseprew.Enabled=Fal

14、seTimer1.Enabled=FalseTimer1.Interval=500EndSubPrivateSubopen_Click()OnErrorGotoerrWithCommonDialog1.CancelError=True旧如二音乐文件|*.mp3;*.wav;*.mid.Flags=cdlOFNNoChangeDirAndcdlOFNPathMustExist.Action=1stopplay_Click停止按钮同时可以设备初始化mfn=.FileName这个程序中文件名一定不能带空格Form1.Caption=.FileNameplay.Enabled=TrueEndWithp

15、lay_ClickExitSuberr:EndSubPrivateSubplay_Click()OnErrorResumeNextDimtAsLongt=mciSendString(open+mfn,0&,0,0)Open后边的空格一定不能丢DimretAsString*128t=mciSendString(status+mfn+length,ret,128,0)显示歌曲总长ret=Left(ret,8)IfretThenProgressBar1.Min=0ProgressBar1.Max=Val(ret)Label3.Caption=gettime(Val(ret)EndIfplay

16、.Enabled=Falsepause.Enabled=TruestopplayEnabled=Trueback.Enabled=Trueprew.Enabled=Truet=mciSendString(status+mfn+mode,ret,128,0)得到设备的当前状态,是播放还是暂停等等ret=Left(ret,8)StatusBar1.Panels(1).text=ret在状态栏显示播放状态t=mciSendString(play+mfn+form+Str(ProgressBar1.Wlue),0&,0,0)开始播放Timer1.Enabled=TrueEndSubPrivat

17、eSubpause_Click()t%=mciSendString(pause+mfn,0&,0,0)发出暂停的命令play.Enable=Truepause.Enabled=FalsestopplayEnabled=Trueback.Enabled=Falseprew.Enabled=FalseEndSubPrivateSubstopplay_Click()t%=mciSendString(stop+mfn,0&,0,0)t%=mciSendString(close+mfn,0&,0,0)停止播放play.Enabled=Truepause.Enabled=False

18、stopplayEnabled=Falseback.Enabled=Falseprew.Enabled=FalseEndSubPrivateSubback_Click()t%=mciSendString(play+mfn+from+Str(ProgressBar1.Wlue-(ProgressBar1.Max10),0&,0,0)向后跳一小段再播放EndSubPrivateSubprew_Click()t%=mciSendString(play+mfn+from+Stri(ProgressBar1.Wlue+(ProgressBar1.Max10),0&,0,0)向前跳一小段再

19、播放EndSubPrivateSubTimer1_Timer()DimtAsLongDimretAsString*128t=mciSendString(status+mfn+position,ret,0,0)得到当前播放位置ret=left(ret,8)ProgressBar1.Wlue=Val(ret)Label1.Caption=gettime(Val(ret)显示歌曲当前时间IfProgressBar1.Value=ProgressBar1.MaxThenstopplay_ClickEndIft=mciSendString(status+mfn+mode,ret,128,0)ret=Le

20、ft(ret,8)StatusBar1.Panels(1).Text=retEndSubPrivateSubForm_Unload(CacelAsInteger)t%=mciSendString(stop+mfn,0&,0,0)t%=mciSendString(close+mfn,0&,0,0)EndSubPrivateFunctionGettime(positionAsLong)AsString这个函数的功能是把以长整型表示的时间转换为电子钟式的*:*Dimmin,secmin=position/1000min=min/60sec=min-Int(min)min=Int(mi

21、n)sec=60*sec/100sec=Int(sec*100)gettime=Str(min)+:+Str(sec)EndFunctionpaused6、心得体会这次课程设计我做的题目是制作一个简单的MP3播放器,要求具有播放、暂停、停止播放、快进、倒退等基本功能。沈维聪老师讲解的时候说这个题目很简单。可是我做的时候发现其实并不简单。我在网上找了很多相关的资料,还看了一些制作MP3播放器的教学视频,可是还是看不懂怎么做。最后我终于找到一篇制作MP3播放器的帖子,我按照上面的说法用VB来做,花了两天的时间,结果程序竟然编译出错,不能运行。我完全是按照帖子上做的,也不知道是哪里出错了。况且我对VB其实也不熟。我请教了很多同学,结果大家都说不会VB没办法,虽然这次我的制作不太成功,但是我努力过,探索过,付出过。这次课程设计还是有很大收获的。起码我对VB的基本操作已经很熟悉了,知道怎么添加左边工具栏没有的控件,还有如何加载API函数以及如何声明API函数。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实习, 我才真正领略到“艰苦奋斗”这一词的真正含义, 我才意识到老一辈电子设计为我们的社会付出。我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论