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

下载本文档

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

文档简介

1、1 目录1、mp3 播放器原理 ,2 2、相关 api 函数简介 ,2 3、设计要求 ,5 4、设计步骤及程序代码,6 5、运行结果分析及截图,9 6、心得体会 ,10 7、参考文献 ,11 2 1、mp3 播放器原理mp3 播放器是利用数字信号处理器dsp(digital sign processer )来完成处理传输和解码 mp3 文件的任务的。 dsp 掌管随身听的数据传输,设备接口控制,文件解码回放等活动。 dsp 能够在非常短的时间里完成多种处理任务,而且此过程所消耗的能量极少(这也是它适合于便携式播放器的一个显著特点)。首先将 mp3 歌曲文件从内存中取出并读取存储器上的信号到解码

2、芯片对信号进行解码通过数模转换器将解出来的数字信号转换成模拟信号再把转换后的模拟音频放大低通滤波后到耳机输出口,输出后就是我们所听到的音乐了。2、相关 api 函数简介:mcisendstring 是 用 来 播 放 多 媒 体 文 件 的api指 令 , 可 以 播 放mpeg,avi,wav,mp3,等等,下面介绍它的使用方法:该函数有四个参数:第一个参数:要发送的命令字符串。字符串结构是:命令设备别名 命令参数 . 第二个参数:返回信息的缓冲区,为一指定了大小的字符串变量. 第三个参数:缓冲区的大小,就是字符变量的长度 . 第四个参数:回调方式,一般设为零返回值:函数执行成功返回零,否则

3、返回错误代码一、常用命令1.打开( open) ,格式: open 设备名 type 设备型式 alias 别名 dim mname as string mname = f:mpegmpeg1.avi mcisendstring open mname type mpegvideo alias movie parent %u style %u notify,0&, 0, 0 其中:open 操作命令mname 全路径文件名type mpegvideo 是指打开mpeg,avi 等类型,如果不加这一句,就是打开wav,mp3 等alias movie 定义了该操作的别名为movie,后续操

4、作只要指明别名即可parent %u 源style %u 样式notify 通知2.播放( play) ,格式: play 设备名 from 起点to 终点 mcisendstring play movie, 0&, 0, 0 mcisendstring play movie fullscreen, 0&, 0, 0 全屏播放3 3.暂停( pause ) :mcisendstring pause movie, 0&, 0, 0 4.继续( resume ) :mcisendstring resume movie, 0&, 0, 0 5.停止( stop) :m

5、cisendstring stop movie, 0&, 0, 0 6.关闭( colse) :mcisendstring close movie, 0&, 0, 0 7.前进到下一个位置:mcisendstring step movie, 0&, 0, 0 8.后退到上一个位置:mcisendstring step movie reverse, 0&, 0, 0 9.前进或后退n 個位置 (其中 n0 即表示后退 ) mcisendstring step movie by & str(n), 0&, 0, 0 10.获取当前播放位置:dim s

6、t as string*64 mcisendstring status movie position, st, len(st), 0 11. 获取媒体的总长度:mcisendstring status movie length, st, len(st), 0 l=val(st) l 就是所播放文件的长度12.获取播放信息:dim st as string*64 mcisendstring status movie mode, st, len(st), 0 if left(st, 7) = stopped then (处理代码 ) 播放完毕13.循环播放:mcisendstring play m

7、ovie repeat, 0&, 0, 0 二、控制声音大小:dim v as long mcisendstring status movie volume, v , 0, 0 v 是获取的音量大小值。v = 50 mcisendstring setaudio movie volume to & v, &0, 0, 0 v 是设置的音量值4 三、设置播放位置 .(需事先设定时间格式 ),格式:seek 设备名 to 位置 | to start | to end dim p1 as long, p2 as long p1 = 100: p2 = 3000 mcisends

8、tring seek movie to , p1, 0, 0 p1 是当前起始位置,单位:毫秒mcisendstring seek movie to start, 0&, 0, 0 定位到开头位置mcisendstring play movie, 0&, 0, 0 定位后再播放或者:mcisendstring play movie from p1 to p2,0&, 0, 0 p1是起始位置, p2是停止位置。单位:毫秒mcisendstring seek movie to end, 0&, 0, 0 定位到最后位置四、在指定控件上播放视频:mcisendstr

9、ing open a vi 文件名 parent hwnd style child, 0&, 0, 0 其中, hwnd 是控件的句柄执行上述命令之后, 影片会被放置在控件的左上角, 且影片的大小不受控件大小的影响,如果想要改变影片播放的位置及大小,可以在執行play 指令前先执行put 指令,格式如下:mcisendstring put a vi 文件名 window at x y width height, 0&, 0, 0 其中: x、y 为影片左上角坐标, width、height 为影片的宽高度五、如果播放视频还可控制亮度dim b as long mcisendst

10、ring status movie brightness, b, 0, 0 b是获取的亮度值。b = 50 mcisendstring setvideo movie brightness to & b, &0, 0, 0 b是设置的亮度值六、录音设置:录音前,用以下语句初始化1.设为 8 位:mcisendstring set wave bitpersample 8, , 0, 0 2.设为 11025hz mcisendstring set wave samplespersec 11025, , 0, 0 3.设为立体声:mcisendstring set wave chan

11、nels 2, , 0, 0 4.实现 pcm 格式(不一定正确):mcisendstring set wave format tag pcm, 0, 0 5.开始录音:mcisendstring close movie,0&,0,0 mcisendstring open new type wa veaudio alias movie,0&,0,0 5 mcisendstring record movie,0&,0,0 6.保存录音到 c:123.wav mcisendstring stop movie,0&,0,0 mcisendstring save mov

12、ie c:123.wav,0&,0,0 mcisendstring close movie,0&,0,0 七、开关光驱:mcisendstring set cdaudio door open, , 0, 0 打开mcisendstring set cdaudio door close, , 0, 0 关闭八、其它1.设置设备的各种状态( set)set alias_nameaudio all offaudio all ontime format ms: set命令用来设置设备的各种状态.如:静音,有声音 ,时间格式为毫秒等 . 2.取得设备的状态( status)status

13、alias_namelengthmodeposition: status命令用来取得设备的状态.如:该媒体文件的长度 ,该媒体文件所处状态 ,该媒体文件的当前位置等. 的长度 ,该媒体文件所处状态 ,该媒体文件的当前位置等3.、设计要求:以 vb 或 vc+为编程工具,制作一个简单的mp3 播放器。实现 mp3 播放器的基本功能: play(播放)、pause( 暂停 )、stopplay( 停止播放 )、back( 向后跳跃 )、prew(向前跳跃 )。6 3、设计步骤及程序代码:启动 vb 程序,在窗体上放置6 个命令按钮,三个标签,一个公用对话框、一个进度条、一个状态栏和一个计时器。按钮

14、 open mp3 file 是用来打开对话框选择mp3 文件,其他 5 个按钮分别为play(播放)、pause( 暂停)、stopplay(停止播放 )、back(向后跳跃 )、 prew(向前跳跃 )。label1 用来表示歌曲当前时间; label2放在时度条的最左边, caption属性为 00:00;lable3放在时度条的右边,用来表示歌曲总长。下面就可以编写代码了。首先在窗体的通用声明部分声明函数private declare function mcisendstring lib winmm.dll alias mcisendstringa(byval lpstrcommand

15、 as string,byval lpstrretumstring as string,byval ureturnlength as long,byval hwndcallback as long) as long dim mfn as string 下面就是各个对象的代码了:private sub form_load() mfn= play.enabled=false pause.enabled=false stopplay.enabled=false back.enabled=false prew.enabled=false timer1.enabled=false timer1.inte

16、rval=500 end sub private sub open_click() on error goto err with commondialog1 .cancelerror=true .filter=音乐文件 |*.mp3;*.wav;*.mid .flags=cdlofnnochangedir and cdlofnpathmustexist .action=1 stopplay_click 停止按钮同时可以设备初始化mfn=.filename 这个程序中文件名一定不能带空格form1.caption=.filename play.enabled=true end with play

17、_click exit sub err: end sub private sub play_click() on error resume next dim t as long 7 t=mcisendstring(open + mfn,0&,0,0) open后边的空格一定不能丢dim ret as string * 128 t=mcisendstring(status + mfn + length,ret,128,0) 显示歌曲总长ret=left(ret,8) if ret then progressbar1.min=0 progressbar1.max=val(ret) labe

18、l3.caption=gettime(val(ret) end if play.enabled=false pause.enabled=true stopplay.enabled=true back.enabled=true prew.enabled=true t=mcisendstring(status + mfn + mode,ret,128,0) 得到设备的当前状态,是播放还是暂停等等ret=left(ret,8) statusbar1.panels(1).text=ret 在状态栏显示播放状态t=mcisendstring(play + mfn + form + str(progres

19、sbar1.value),0&,0,0) 开始播放timer1.enabled=true end sub private sub pause_click() t%=mcisendstring(pause + mfn,0&,0,0) 发出暂停的命令play.enable=true pause.enabled=false stopplay.enabled=true back.enabled=false prew.enabled=false end sub private sub stopplay_click() t%=mcisendstring(stop + mfn,0&,

20、0,0) t%=mcisendstring(close + mfn,0&,0,0) 停止播放play.enabled=true pause.enabled=false stopplay.enabled=false back.enabled=false prew.enabled=false 8 end sub private sub back_click() t%=mcisendstring(play + mfn + from + str(progressbar1.value-(progressbar1.max10),0&,0,0) 向后跳一小段再播放end sub privat

21、e sub prew_click() t%=mcisendstring(play + mfn + from + stri(progressbar1.value+(progressbar1.max10),0&,0,0) 向前跳一小段再播放end sub private sub timer1_timer() dim t as long dim ret as string * 128 t=mcisendstring(status + mfn + position,ret,0,0) 得到当前播放位置ret=left(ret,8) progressbar1.value=val(ret) labe

22、l1.caption=gettime(val(ret) 显示歌曲当前时间if progressbar1.value=progressbar1.max then stopplay_click end if t=mcisendstring(status + mfn + mode,ret,128,0) ret=left(ret,8) statusbar1.panels(1).text=ret end sub private sub form_unload(cacel as integer) t%=mcisendstring(stop + mfn,0&,0,0) t%=mcisendstrin

23、g(close + mfn,0&,0,0) end sub private function gettime(position as long) as string 这个函数的功能是把以长整型表示的时间转换为电子钟式的*:* dim min,sec min=position/1000 min=min/60 sec=min-int(min) min=int(min) sec=60 * sec / 100 sec=int(sec * 100) gettime=str(min) + : + str(sec) 9 end function 5、运行结果截图10 6、心得体会这次课程设计我做的题

24、目是制作一个简单的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

提交评论