音乐播放器的设计与实现毕业论文.doc
毕业设计说明书学生姓名学 号学院 计算机科学与技术学院专 业计算机科学与技术(软件工程)题 目音乐播放器的设计与实现指导教师 (姓 名) (专业技术职称/学位)摘要: 随着生活水平的提高,娱乐已成为非常主流的话题,人们不仅需要通过音乐陶冶情操,而且越来越多的人倾向于使用音乐、视频等娱乐和放松自己,这大大促进了媒体软件的发展.本文旨在介绍研究常用数字音频编码和解码的相关知识,并结合VS2008编写多功能音乐播放器,了解音乐播放器功能的实现,掌握开发音乐播放器所需的相关知识,采用了面向对象软件工程方法,其开发主要包括应用程序界面设计和后台代码运行两个方面,实现了多功能音乐播放器在计算机上的应用,可以在很大程度上满足用户的需求.该系统主要具备:音乐播放控制、音乐文件控制、音量控制、下载控制、歌词控制、进度控制、音乐剪辑等功能模块。关键字:音乐播放器,音频编码格式,TechSmith Screen Capture Codec,FFmpeg ,C#,Visual Studio 2008Abstract:With the improvement of standards of living, entertainment has become very mainstream topics, it is required not only by music, edifying, and as more and more people tend to use music, video and other entertainment and relax, which greatly promoted the development of media software. This article aims to introduce the research knowledge of common digital audio encoding and decoding, and in conjunction with VS2008 prepared multifunctional music player, understand the functions of the music player to acquire related knowledge needed to develop music player, object-oriented software engineering methods are used, their development includes the application interface design and code to run in the background tracks to realize multifunctional music player application on your computer, you can to a large extent, meet the needs of users. The system mainly includes: a music player, music file control, volume control, control, control, schedule control of lyrics, music editing function module.Keywords: music player, audio coding format, techsmith screen capture codec, c#, visual studio 2008目 录1前言- 4 -1.1选题的背景及意义- 4 -1.2网络流行音乐播放器简介- 4 -2系统相关技术及开发平台介绍- 5 -2.1开发应用技术介绍- 5 -2.2开发及运行坏境- 7 -3系统的分析- 8 -3.1可行性分析- 8 -3.2常见的几种音频格式及其特点- 9 -3.3需求分析- 10 -4系统设计- 12 -4.1系统概要设计- 12 -4.2系统功能设计及描述- 12 -5系统功能实现- 14 -5.1歌曲添加模块- 15 -5.2歌曲列表模块- 19 -5.3播放控制模块- 20 -5.4音量控制模块- 23 -5.5进度控制模块- 24 -5.6滚动字幕模块- 24 -5.7歌曲下载模块- 29 -5.8歌曲剪辑模块- 31 -结 论- 35 -参 考 文 献- 36 -致谢- 37 -1前言 1.1选题的背景及意义音乐是情感的艺术,美妙动听的音乐来源于情感,又潜移默化地影响情感,让我们进入瑰丽多彩的虚化与现实的意境之中。向上追溯百年或千年,直至最原始的音乐诞生之初,我相信音乐是为了倾诉而不是表现,是自然的流露而不是技巧的夸张,是自我的沉醉而不是别人的掌声。因为爱与感动,因为生命的圆满与缺憾,因为思想的灵动与创造。所以音乐不单在乐谱上,更在我们的心中。众所周知任何格式的音乐都要通过音乐播放软件播放,那么音乐播放软件是通过什么样的原理实现音乐的播放的呢?音乐播放器就是音频解码器的可视化操作界面,其实质是针对各种音频编码格式的解码器。例如APE格式调用的是Monkey's Audio解码器,FLAC格式调用的是FLAC解码器,MP3调用的是lame解码器。大部分音乐播放器都支持多种音乐格式的文件,这是因为这些播放器将不同的音频解码器打包起来,并制作统一的播放界面,从而让使用者能够方便地播放和聆听各种音乐。伴随着改革开放人们的生活水平普遍提高如今音乐已成为越来越多人的心灵寄托。随着因特网在我国的普及随之而来的是各式各样的播放器软件。尽管未来的音乐播放器将具备各种丰富多彩的功能,但作为一款多媒体软件,音频应用才是最基本的,也是最能决定获取用户数量的因素。基于上述分析音质高,外形美观,小巧且功能强大是未来播放器发展的主流趋势。作为一个音乐爱好者兼软件工程专业的一员若能编写一款小巧功能强大的音乐播放器无疑是一件很有成就感的事情。1.2网络流行音乐播放器简介本小节举例介绍目前网络上流行的几款音乐播放器,比如国产千千静听,酷狗音乐等。比较分析了它们各自特有的功能,此外还集中介绍了常见的几种编码格式以及它们各自的特点。1.2.1千千静听千千静听是一款专为用户定制的全新一代的免费听歌下载音乐播放器软件。提供百万首歌曲免费试听下载,拥有最新、最流行的歌曲,提供第一时间音乐资讯;超高品质(320kbps)的音乐歌曲下载,给耳朵更优质的享受;超炫的智能语音搜歌功能让听歌更加快捷;免费的手机铃声歌曲下载;轻松拖拽歌词,保持歌词同步,支持边听边唱;支持在线播放下载;流量限额提醒功能。 软件特色:1、高精度音质,完美还原听觉 ;2、在线自动下载歌词,卡拉OK式同步显示 ;3、软件小、运行快、支持众多插件,自由编辑歌词,由你做主;4、自由转换MP3、WMA,APE,WAV等多种音频格式 ,批量修改歌曲标签信息;5、个性化皮肤,多种视觉效果享受永远免费。1.2.2酷狗音乐酷狗音乐是中国领先的数字音乐交互服务提供商,互联网技术创新的领军企业,致力于为互联网用户和数字音乐产业发展提供最佳的解决方案,公司的使命是成为亚太地区最大的数字音乐销售推广企业。自公司创建以来,一直在数字音乐发展上大胆尝试,先后与几十家唱片公司、版权管理机构合作探索发展,积累了数万首数字音乐版权,并在推动广范围的跨行业、跨平台合作上做出努力,在艰巨的全球音乐数字化进程中做出自身的贡献。全球最受欢迎的免费中文播放软件,流行音乐搜索平台。软件特色: 1、迷你界面、界面更酷、绚丽流行;保持了Windows Vista和XP下的完美表现,让人耳目一新;2、卡拉OK酷狗独创“卡拉OK”歌词显示,多种模式,边听边唱,让你听歌更好玩;3、支持本地音乐播放完美音质,支持所有的音频文件,本地文件拖放,同时支持网络高速下载和本地播放;4、超强搜索和下载优化歌曲搜索引擎,提高搜索准确度;智能化节约带宽,可关闭网络功能;5、流行音乐资讯酷狗榜单家族、狗友推荐、酷吧、狗窝,最新流行音乐一网打尽,好听的音乐来“找”你;6、个性化手机炫铃DIY,让拥有张扬个性的铃声7、音频格式我选择我的歌曲我制作,音质音效我决定8、收音机动感音乐识别体验精选多家电台,收听全球风云变化,更能识别电台中的音乐。2系统相关技术及开发平台介绍本系统是采用面向对象的软件开发方法,基于微软的Visual Studio .Net 开发平台,以C#作为本系统的开发语言实现音乐播放器预定的需求功能。2.1开发应用技术介绍2.1.1TechSmith Screen Capture Codec简介TechSmith Screen Capture Codec是TechSmith公司开发的Camtasia Studio的一个组件,用于压缩Camtasia Recorder中的视频文件,最大的优点是可以保证图像的质量,截取的屏幕经过多次压缩,还能保证高质量。 比传统的压缩方式相比,优势十分明显。 Camtasia Studio是TechSmith旗下一款专门录制屏幕动作的工具,无论在何种颜色模式下它都能轻松地对屏幕动作进行记录,包括声音、图像、鼠标的移动轨迹等。此外,它还能够对音频片段进行编辑、压缩、剪接从而实现多种音效的播放。它还能输出包括Flash(SWF/FLV)、AVI、WMV、M4V、CAMV、MOV、RM、GIF动画等多种常见格式,是制作视频演示的绝佳工具。其实Camtasia Studio已不仅仅是一个录屏工具了,它包括了5个组件:Camtasia录像器、菜单制作器、音频编辑器、剧场及播放器。本播放器在运行之前需要安装TechSmith Screen Capture Codec组件,此组件会和系统一起打包发行,用户也可以自己从网上下载更高版本的组件,只有安装此组件才能实现播放器中的歌词剪切功能。2.1.2FFmpeg简介FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。使用本播放器如果要对flv格式的文件进行播放则要安装FFmpeg。2.1.3Visual Studio .Net集成开发环境简介.NET平台为创建新一代分布式Web应用提供了所有工具和技术(表示技术、构件技术和数据库技术)。.NET平台支持标准的Internet协议,包括HTTP(超文本传输协议)、XML(可扩展标记语言)和SOAP(简单对象访问协议)等,从而实现了异构系统间应用程序的集成和通信,即用户和供应商可将在此平台上开发的产品和服务无缝地嵌入自身的业务进程和日常活动的信息架构中。.NET平台建立在开放系统结构基础之上,集Microsoft在软件领域的主要技术成就于一身。.NET平台包括一下4种核心技术:.NET Framework、.NET企业服务器、构件模块服务和Visual Studio .NET。.NET Framework是.NET平台核心中的核心,它为.NET平台下应用程序的运行提供基本框架,如果把Windows操作系统比作一幢摩天大厦的地基,那么.NET Framework就是摩天大厦中由钢筋和混凝土搭成的框架。.NET企业服务器是Microsoft为企事业单位提供的技术服务中的一部分,它包括Microsoft BizTalk Server、Microsoft Commerce Server、Host Integration Server、Exchange Server、SQL Server等技术的开发工具包。构建模块服务主要是Microsoft提供的COM+组件服务和XML Web服务技术,利用构建模块服务开发应用程序模块,可以迅速地组装一个功能完备的软件。Visual Studio .NET是.NET平台的主要开发工具,由于.NET平台是建立在开放系统结构基础之上的,因此应用程序开发人员也可以使用其它开发工具。 2.1.4C#语言简介C#(#原为音乐标记,读Sharp)是一种面向对象的编程语言,主要用于开发可以运行在.NET平台上的应用程序。C#语言是微软公司开发的基于.NET Framework的一种编程语言,它继承了C/C+优良传统,又借鉴了Java的很多特点。微软对C#的定义是:“C#是从C和C+派生出来的一种简单、现代、面向对象和类型安全的编程语言。C#主要是从C/C+编程语言家族移植过来的,C和C+的程序员能够很快熟悉它。C#试图结合Visual Basic的快速开发能力和C+的强大灵活的能力。”2C#是2000年6月微软公司发布的一种全新编程语言,是由Anders Hejlsberg和他的微软开发团队所设计,具体如下特点:l 通用,支持跨平台。C#程序的客户端可以运行在不同类型的客户端上,如PDA、手机等PC装置。l 简单,主要体现在垃圾收集、指代等特性上。垃圾收集机制将减轻开发人员对内存的管理负担,而指代功能更是可以让开发者不经过内部类就调用函数。利用C#的这些功能,可以使开发者通过较少的代码来实现更强大的应用程序,并且能够更好地避免错误发生,从而缩短了应用系统的开发周期。l 面向对象设计,C#具有封装、继承和多态等面向对象程序语言的特征。l 与Web应用紧密的结合,C#支持绝大多数的Web标准,如HTML、XML、SOAP等。这是C#最大的特点,使用它可以轻松开发各种企业级应用平台。l 安全性机制,消除软件开发中常见错误(如语法错误),.NET提供的垃圾回收器能够帮助开发者有效的管理内存资源。l 兼容性,C#遵循.NET的公共语言规范(CLS),能够保证与其它语言开发组件兼容。l 灵活的版本处理技术,C#在语言本身内置了版本控制功能,开发人员可以更加容易地开发和维护。l C#提供了完善的错误和异常触发机制。2.2开发及运行坏境l 硬件平台:CPU奔腾双核 (主频2.0GHz)内存1G32位PC机160G硬盘l 软件平台:操作系统:Windows XP Win7Win8开发工具:Visual Studio 2008。本软件占用系统空间小,能满足用户对常见音频格式文件的播放要求,还具有歌曲、歌词下载等功能,界面美观交互性好,易于用户理解操作,且不依赖于其它软件,消耗资源少易维护,程序有较好的健壮性和正确性。运行该软件所需的坏境配置不高,能满足绝大多数用户的需求。3系统的分析3.1可行性分析可行性研究(feasibility study)的目的,是弄清楚待开发的项目是不是可能实现和值得进行,通常由系统分析员完成,并需写出可行性论证报告。如结论认为可行,即可制定项目实施计划,同时开始软件开发;如结论认为不可行,则应提出终止该项目的建议。可行性论证其实是在高层次上进行的一次大大简化了的需求分析与设计。但它的目的不是去解决用户提出的问题,仅是确定这项开发是否值得进行,分析它存在哪些风险。换句话来说,在投入大量精力前研究成功的可能性,减小可能出现的风险。即使研究的结论是不值得进行,所花的精力也并不浪费,因为它避免了一次更大的浪费。下面我们将根据本系统的特点具体描述以下可行性分析。33.1.1 经济可行性开发一个基于计算机的系统主要是为了获取较好的经济效益和社会效益。因此对待开发系统的经济可行性论证就成为可行性研究的重要内容。成本-效益分析可用于评估系统的经济合理性,给出系统开发的成本估算,并将估算的成本与获得的利润进行比对,从经济的角度论证待开发系统是否可行。一般来说,基于计算机系统的成本主要由4部分组成:1) 购置并安装软硬件及有关设备的费用。2) 系统开发费用。3) 系统安装、运行和维护费用。4) 人员培训费用。5) 结合毕业设计的整个开发过程可知开发音乐播放器所需的全部软件平台都是免费的,所以在经济上是完全可行的。3.1.2 技术可行性技术可行性是可行性研究的关键内容。由于系统分析和定义过程与系统技术可行性评估过程同时进行,此时系统的功能、性能和目标的不确定性会给技术可行性论证带来许多困难。因此,技术可行性研究往往是系统开发过程中难度最大的工作。该音乐播放器是用C#语音开发的,调试比较简单,所需的计算机硬件配置要求不高,一般PC机完全能满足开发要求。软件方面:基于微软.net开发平台使用C#面向对象的编程语音,它开发速度快,简单易用,技术成熟,软件也容易从网上获得,完全能满足开发需求。3.1.3 法理可行性法律可行性主要研究新系统的开发和使用是否会侵犯他人权益,是否触犯了国家的法律法规。本次的毕业设计是由本人独立完成,开发的系统不会侵犯任何人的权益,所用的软件都是通过合法途径获取,因此完全符合法律法规。综上所述,本系统的开发从经济上、技术上、法律上都是完全可行的。3.2常见的几种音频格式及其特点MP3格式:MP3的全称是Moving Picture Experts Group Audio Layer 。MP3是Fraunhofer-IIS研究所的杰出成果。在MP3出现前,以有损方式进行音频编码最好的效果能够压缩到4:1。而强大的MP3可以实现12:1的高压缩比,正是因为这种性能的巨大提升,并且在实现高压缩比的同时还能够保持较好的音质,所以使得MP3迅速地流行起来。MP3是世界上第一个实用化的有损压缩编码方案,几乎所有的播放软件都支持它,也曾今产生了许多第三方的编码工具。MP3编码质量分为:固定码率(CBR),平均码率(ABR)和动态码率(VBR)。4特点:音质好,压缩比比较高,被大量软件和硬件支持,应用广泛。WMA格式:WMA就是Windows Media Audio编码后的文件,它是微软公司推出的与MP3格式齐名的一种新的音乐格式。WMA在压缩比和音质方面都超过了MP3,更是远胜于RA(Real Audio),即使在较低的采样频率下也能产生较好的音质。WMA针对的不是单机市场,而是网络!竞争对手就是网络媒体市场中著名的Real Networks。WMA格式有非常高的压缩率,一般为1:18,因此它的文件所占空间比相应的MP3文件少一半。这是通过提高音质、减少数据流量的方法来实现更高的压缩率的。此外它还有很强的防盗版功能。特点:低码率下的音质表现难有对手。4WAV格式:WAV是微软Windows系统本身自带的音频格式,因为Windows系统的普及性,此格式已经成了当前最主流的音频格式之一。WAV文件里面存放的每一块数据都有自己独立的标识,通过这些标识可以告诉用户究竟是什么数据。WAV格式的设计非常灵活,该格式本身与任何媒体数据都不冲突,只要有软件支持,我们甚至可以在WAV格式里面存放图像。在Windows平台上,通过ACM结构及相应的驱动程序,例如CODEC编码/解码器,可以在WAV文件中存放超过20种的压缩格式,比如ADPCM、GSM、CCITT G.711、G.723和MP3等。4特点:音质非常好,被大量软件所支持。RA格式:RA格式是Real Networks公司所开发的一种新型流式音频Real Audio文件格式。这是网上接触得非常多的一种格式,大部分音乐网站的在线试听都采用了Real Audio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的优点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。4特点:码率可控,支持多种音频编码,可边读边放。3.3需求分析软件需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。需求分析就是通过对应用问题及其坏境的分析与理解采用一系列的分析方法和技术将用户的需求逐步精确化、完全化、一致化,最终形成需求规模说明文档的过程。本节将从不同的角度描述系统的需求。3.3.1播放器的基本控制需求在着手开发系统之前首先要明确该系统应该实现的一些最基本的功能,然后逐步细化,为每个功能创建一个模块,再对各个模块进行开发。通过分析我们得出一款音乐播放器的基本控制如图3-1所示:图 3-1 播放器基本控制图3.3.2功能需求功能需求规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求 (behavioral requirement),因为习惯上总是用“应该”对其进行描述。功能需求描述是开发人员需要实现什么。功能需求定义一个软件系统或组件的功能,也是一个系统需提供的功能及服务。功能可以用一组输入、行为及输出的组合来表示。功能需求可以是计算、技术细节、数据处理或其他说明系统希望达成功能的内容。功能需求会以非功能性需求(或是质量需求)为其基础。结合音乐播放器所要实现的内容,我们列出用户操作的模块,其中每个模块对应一个功能。用户启动程序进入主界面,用户可以通过添加模块添加本地歌曲,可以一首一首添也可以添加整个歌曲文件夹。通过播放列表用户可以实现对歌曲的查找、播放、暂停、音量调节、静音。通过歌词模块可以实行歌曲歌词的显示、比对、歌词字体选择。此外用户还可以联网下载歌词、歌曲。其功能模块时序图如下3-2所示:图3-2 音乐播放器功能时序图4系统设计4.1系统概要设计在需求明确、准备开始编码之前,要做概要设计。概要设计的主要任务是把需求分析得到的DFD转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。概要设计有多种方法。在早期有模块化方法、功能分解方法;在60年代后期提出了面向数据流和面向数据结构的设计方法;近年来又提出面向对象的设计方法等。本系统采用模块化软件设计,自顶向下逐层把软件系统划分成若干模块。每个模块完成一个特定的功能,最后将所有模块按照某种方法组合成一个整体,达到整个播放器所要求的功能。4.2系统功能设计及描述本音乐播放器不仅要实现对一些常见的音频格式文件的播放,而且还要有友好的用户界面。其最终设计目标是:实现对多种音频格式文件的播放、实现对歌词的滚动播放及当前播放曲目长度显示、显示歌曲文件信息、实现静音和音量控制;播放器软件占用系统资源少、运行平台要求不高、界面美观舒适、操作简单、易维护、高稳定性、,能满足用户的常见需求。主要划分为以下七个功能模块,每个功能模块的作用描述如下:Ø 播放控制:控制歌曲的播放状态,如:播放、暂停、上一曲、下一曲。播放过的歌曲按播放顺序排列在播放列表中,每次退出程序、重启播放器后播放列表中的播放记录会自动保存不会清空。Ø 文件控制:主要用来打开本地播放文件。通过研究音频编码解码的相关技术,了解音频编码解码的原理和过程,本音乐播放器支持常见音频格式文件播放如:MP3、WMA、WAV等。可以单个曲目添加,也可以将整个文件夹中的曲目全部添加,实现歌曲文件添加的多样化;此外还可以对播放列表进行清空,对曲目的播放顺序进行控制;当播放列表中曲目过多时,可以从播放列表中快速搜索到需要播放的歌曲。还有对播放列表进行控制如:打开文件所在目录、移除列表、删除文件、显示歌曲文件的相关信息,如:歌手、专辑等。Ø 歌词控制:播放音乐时控制是否显示歌曲歌词,若歌词存在则同步滚动显示歌词,若歌词不存在则可联网下载歌词。此外还可以对歌词字体进行设置。Ø 进度控制:显示当前歌曲的播放总时长和已播放时长,可以通过鼠标调整歌曲的播放进度,实现歌曲的跳跃式播放。其实现方式是通过进度条和时间的同步显示。Ø 声音控制:调整歌曲音量的大小,显示是否静音。Ø 下载控制:可以联网下载自己喜欢的歌曲、歌词。若不知道歌曲名称则可以按歌手名查找歌曲下载,若知道歌曲名则可直接输入名称进行下载,可以在下载进度列表中查看下载状态。Ø 音乐剪切:对音乐文件进行剪切。添加当前路径,对想要的歌曲进行播放,在歌曲播放过程中你可以在任何地方设置一个起点,然后,再设置一个终点。“试听歌曲”就是把你选出来的这一段播放一遍,看是不是你要的那一段,有时候可以早开始了几秒或者早结束了几秒,这个时候可以直接在起点和终点的地方进行调整。然后在这个窗口的上面有个“保存歌曲”,就可以把你选出来的这段音乐保存起来了。我们可以通过歌曲剪切功能截取自己喜欢的音乐片段,来做为自己的手机铃声。其具体功能模块如图4-1所示:图4-1 音乐播放器功能模块图5系统功能实现根据上一章对系统各个模块的分析,本节主要讲述如何具体实现这些模块功能。几乎所有的Windows程序都离不开窗体,Windows窗体应用程序是Windows下进行软件开发的基础。在C#中,通过Visual Studio 2008开发平台模版,可以自动生成多种基于Windows的应用程序框架,主要包括基于.NET Framework的Windows窗体应用程序、Windows服务应用程序。最常用的是Windows窗体应用程序。在Windows窗体应用程序中,有窗体(Form)和控件(Control)两个基本概念。窗体是控件的容器,控件是应用程序显示数据或接受数据输入的相对独立的用户界面元素。.NET类库提供了丰富的窗体相关类,包括窗体、按钮、状态栏、工具栏、菜单、文本框、列表等多种不同的界面元素;此外还提供各种控件、组件、容器。通过这些界面元素的不同组合,可以设计出友好的用户界面。对于软件开发中要用到的图片可以自己绘制,相关控件可以调用类库,从而设计出外形美观的界面。但这也做相当费时,由于毕业设计的时间有限,图片都从网上下载,并做稍微处理,所以美观方面有一定欠缺,待以后有时间慢慢改进。此外界面是由窗体、控件拖放组成,大部分代码由视图设计器自动生成,无需太多改动,因此这一部分不再详细阐述,下面将主要介绍主要功能模块的核心代码实现。5.1歌曲添加模块很多的应用程序都有打开文件功能,本程序使用OpenFileDialog组件,用来打开本地磁盘上的一个或多个文件,并添加到文件播放列表中。5.1.1添加歌曲文件为了赶上社会的潮流,我们经常会从网上下载最热门的音乐,本模块功能就是实现添加本地歌曲或已下载到电脑的最新歌曲到播放列表,同时更新播放列表,使我们能及时欣赏到自己喜欢的音乐。其具体代码如下:private void AddSong_Click(object sender, EventArgs e) ofd.Filter = "音乐文件(*.wmv, *.mp3,*.wav)| *.wmv; *.mp3;*.wav|All files (*.*)|*.*" ofd.InitialDirectory = Application.StartupPath; ofd.FileName = "" ofd.RestoreDirectory = false; ofd.Title = "添加音乐文件" if (ofd.ShowDialog() = DialogResult.OK) string strLongPath = ofd.FileName; WriteFileByLongPath(strLongPath); private void WriteFileByLongPath(string strLongPath) int b = strLongPath.LastIndexOf(""); string strShortPathWithExtension = strLongPath.Substring(b + 1); StreamWriter sw = new StreamWriter("list.ini", true); string extension = strShortPathWithExtension.Substring(strShortPathWithExtension.Length - 3); if (extension.ToLower() = " wmv " | extension.ToLower() = " mp3" | extension.ToLower() = "wav") string strShortPathWithoutExtension = strLongPath.Substring(b + 1, strShortPathWithExtension.Length - 4); Mp3 mp3 = new Mp3(strLongPath); if (!(String.IsNullOrEmpty(mp3.Artist) | String.IsNullOrEmpty(mp3.Title) /获取成功的结果(歌手名 - 歌曲名) strShortPathWithoutExtension = mp3.Artist.Trim() + " - " + mp3.Title.Trim(); /否则原文件名 if (!this.myListBox.Items.Contains(strShortPathWithoutExtension) /不包含 songList.Add(strShortPathWithoutExtension); Image image = getImageByArtistOrSongName(mp3.Artist, strShortPathWithoutExtension); imageList.Add(image); this.myListBox.Items.Add(strShortPathWithoutExtension); this.myListBox.songList = songList; this.myListBox.imageList = imageList; sw.WriteLine(strShortPathWithoutExtension); sw.WriteLine(strLongPath); /写入全路径 sw.Flush(); sw.Close(); 5.12添加歌曲文件夹 当我们要欣赏歌曲专辑时,可能要添加的文件比较多,显然单曲添加比较麻烦,这时我们就可以使用OpenFileDialog组件的Multiselect属性和Filenames属性实现整个文件夹的添加,同时更新播放列表。代码如下:private void tsmiAddSongFolder_Click(object sender, EventArgs e) if (fbd.ShowDialog() = DialogResult.OK) string str = fbd.SelectedPath; DirectoryInfo r = new DirectoryInfo(str); GetAllFiles(r); public void GetAllFiles(DirectoryInfo dir) FileSystemInfo fileinto = dir.GetFileSystemInfos(); foreach (FileSystemInfo i in fileinto) if (i is DirectoryInfo) GetAllFiles(DirectoryInfo)i); else string strLongPath = i.FullName; WriteFileByLongPath(strLongPath); private void tsmiSearch_Click(object sender, EventArgs e) if (this.mySearchPanel.boolSearchShow) /已经打开,则关闭 this.mySearchPanel.close(); else this.mySearchPanel.boolSear