基于java的mp3播放器的设计与实现含源文件毕业设计论文.docx
- 文档编号:10275176
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:31
- 大小:348.16KB
基于java的mp3播放器的设计与实现含源文件毕业设计论文.docx
《基于java的mp3播放器的设计与实现含源文件毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于java的mp3播放器的设计与实现含源文件毕业设计论文.docx(31页珍藏版)》请在冰豆网上搜索。
基于java的mp3播放器的设计与实现含源文件毕业设计论文
毕业论文(设计)
基于java的mp3播放器的设计与实现
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
摘要
随着计算机和多媒体技术的不断发展以及个人计算机的普及,各种各样的媒体文件、媒体播放器层出不穷,而MP3(MPEGAudioLayer3)格式以其体积小、音质也有保证的特点成为使用最为广泛的音频格式,得到了绝大多数软件和硬件媒体播放器的支持,同时WAV格式作为无损的音频格式也独树一帜。
如今,软件市场上的媒体播放器百花齐放,如:
MediaPlayer,酷我音乐盒和千千静听等。
高音质播放和低内存消耗是各种媒体播放器所追求的目标。
【关键词】音乐播放器javaMVCJMFEcplise
Title:
Librarymanagementsystem
Major:
Softwaretechnique
Name:
LiuRuiyuanSignature:
Supervisor:
DuanQinSignature:
Abstract
Alongwiththedevelopmentofthecomputertechnologyandthedevelopmentofmultimediatechnologyandthepersonalcomputer,avarietyofmedia,mediaplayeremergeinanendlessstream,whiletheMP3(MPEGAudioLayer3)formattobecomethemostwidelyusedaudioformatwithitssmallsize,thesoundqualityisguaranteed,thevastmajorityofsoftwareandhardwaremediaplayersupport,atthesametime,WAVformataslosslessaudioformatsalsobecomeanindependentschool.Now,softwareonthemarketAllflowersbloomtogether.mediaplayer,suchas:
MediaPlayer,coolmusicboxandTTPlayeretc..Highqualityplaybackandlowmemoryconsumptionisthegoalofallkindsofmediaplayer.
【关键词:
音乐播放器javaMVCJMFEcplise
Keywords】javamusicplayer,MVCJMFEcplise
一、绪论
1.1背景、目的与意义
随着个人电脑的普及,多媒体信息的传播和应用已经深入我们生活中的各个方面。
其中数字音频凭借着其占用存储空间小,声音质量高的特点风靡全球,传统磁带和CD所统治的半壁江山已经成为了数字音频的天下。
当微软Windows的局限性和缺点开始暴露出来的同时,多样化的操作系统平台如Solaris,Linux以及MacOS等操作系统各自拥有不俗的表现以及庞大的用户群。
面对繁多的操作系统平台,一款具有通用性的音频播放软件则是必不可少的。
本音频播放软件采用Java语言编写,旨在利用Java的平台无关性特点,做出一款通用性强、占用空间少却五脏俱全的音频播放器。
1.2Java语音的特性
首先,从面向对象的特性来看,Java是一种完全的面向对象设计语言。
Java的多态主要是建立在后期绑定(LateBingding)或叫动态绑定(DynamicBinding)基础之上的,这样Java先天就具备了对对象类型的自动判断能力。
而C++是不支持动态绑定的,绑定动作发生在编译期而不是执行期,所以C++要实现多台的效果必须要使用虚函数。
此外虽然C++语言支持封装和继承,但多态仍然是建立在编译时绑定的基础上,必须要通过虚函数实现。
不仅如此,C++语言的指针操作允许使用goto语句,容易产生歧义的多重继承等特性也使C++不能严格符合面向对象的思想。
其次,Java具有绝对的平台无关性,其使用一种虚拟机作为中间层来屏蔽平台差异。
Java的源程序经过编译产生类文件,类文件结构不同于传统的编译器生成的二进制文件,必须经过虚拟机的解释才能运行,因此Java被认为是一种解释性语言。
虚拟机作为中间层负责把编译好的类文件转换为不同平台的指令。
而对于不同的C,C++编译器,各种数据类型所占用空间有可能不一样,这种差异会影响程序的可移植性。
此外,在内存管理方面,Java在其虚拟机内部实现了垃圾内存自动回收功能,能够自动判断那些内存不再被用户使用,这样就让用户在系统设计时从繁杂的内存管理工作中解脱出来。
C和C++语言分配的内存空间必须由用户在不使用的时候进行回收,容易产生内存回收不充分的问题,形成内存漏洞。
然而,Java也有瑕疵,由于是一种解释型语言,编译后的Java类文件不能直接被操作系统执行,需要虚拟机的解释,因此其效率和C,C++相比有一定差距。
在运行时,Java编写的软件需要操作系统中安装有虚拟机,所以程序的发布相对繁琐。
总的说来,
Java编程语言是
·简单与面向对象的
·分布式、安全与鲁棒的
·解释执行与高性能的
·多线程与动态执行的
二、相关技术简介
2.1关于JMF技术
JMF(JavaMediaFramework),Java媒体架构,是对应Java2平台标准版(J2SE)的一种可选用的应用编程接口(API)软件包,它为音频和视频等媒体内容的捕获、回放、传输和编码转换等提供了一个统一的架构。
JMF技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。
这些功能包括:
媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支持,如M-JPEG、H.263、MP3、RTP/RTSP(实时传送协议和实时流转协议)、MacromediasFlash、IBM的HotMedia和Beatniks的RichMediaFormat(RMF)等。
JMF2.1.1还支持广受欢迎的媒体类型,如Quicktime、MicrosoftsAVI和MPEG-1等。
此外,JMF软件中包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。
JavaMediaFramework(JMF)是构建在JavaSound之上的一层。
JMF实际上将JavaSound用于其音频处理。
JMF支持更多音频格式和更多回放功能,但缺少JavaSound的低层访问。
另外,标准JDK发行版不包括JMF而包括JavaSound。
JavaSound:
·添加音频和MIDI支持
·与JDK1.3及更高版本一起提供
·是轻量级的
·本身支持相对较少的音频格式(AIFF、WAV和AU)
·通过JavaSound的服务供应商接口(SPI)可以进行扩展
JMF:
·添加对音频、视频和其它基于时间的数据的支持
·提供多种媒体格式的同步和控制功能
·当前没有与任何JDK一起提供
·本身支持许多音频格式(AIFF、WAV等)以及MPEG和其它格式
·包含可扩展的编码器/解码器媒体支持
2.2JMF常用类
JMF的常用类包括以下几个:
数据源(DataSource)
媒体定位器(MediaLocator)
播放器(Player)
处理器(Processor)
数据池(DataSink)
数据格式(Format)
管理器(Manager)
2.2.1数据源(DataSource)
在JMF中,DataSource对象就是数据源,它可以是从采集设备获得的数据,也可以是一个多媒体文件,也可以是从互联网上下载的数据流。
对于DataSource对象,一旦你确定了它的位置和类型,对象中就包含了多媒体的位置信息和能够播放该多媒体的软件信息。
当创建了DataSource对象后,可以将它送入Player对象中,而Player对象不需要关心DataSource中的多媒体是如何获得的,以及格式是什么。
2.2.2媒体定位器(MediaLocator)
DataSource通常用两种方式来定义,媒体定位器(MediaLocator)或URL(UniversalResourceLocator)。
MediaLocator类似于URL,并且可以由URL来构造,即使在没有安装相应的协议处理机制的情况下,也能构造MediaLocator(在Java,只有在系统上安装了URL协议的处理机制的情况下,才能构造一个URL)。
MediaLocator用来定位采集设备、本机的媒体文件、网络上的媒体文件以及网络RTP流。
2.2.3播放器(Player)
如图2-1所示,播放器(Player)对象将音频、视频数据流作为输入,然后将数据流输出到音箱或屏幕上,就像播放器读取DV带中的数据,然后将音频信号送到音箱上,视频数据送到屏幕上一样。
图2-1处理器模型
如图2-2所示,除了在播放器中提到了的6种状态以外,处理器对象还包括两种新的状态。
这两种状态是在Unrealized状态之后,在Realizing状态之前。
Configuring:
当调用configure()方法后,处理器对象进入该状态。
在该状态下处理器对象连接到数据源并获取输入数据的格式信息。
Configured:
当完成数据源连接,获得输入数据格式的信息后,处理器对象就处于Configured状态。
图2-2处理器的状态转换图
2.2.4数据池(DataSink)
数据池(DataSink)用来读取数据源(DataSource)的媒体数据和输出到特定的目的地——这里的目的地不同于以上所说的如音箱或屏幕。
一个特定的DataSink或把数据输出到一个文件,或通过网络传输数据,或进行RTP广播。
像Player一样,DataSink对象以DataSource作为参数,通过管理器(Manager)来构造。
2.2.5数据格式(Format)
在JMF架构中,数据格式(Format)对象中保存了媒体的格式(format)信息。
它并不包括编码参数和全局时间信息。
只是描述了该格式的编码名称和数据类别。
Format的子类包括AudioFormat和VideoFormat类,VideoFormat又有六个子类:
H261Format、H263Format、IndexedColorFormat、JPEGFormat、RGBFormat和YUVFormat类[4]。
在AudioFormat中,描述了音频格式的属性,如采样频率、每次采样的数据位数等等。
在VideoFormat中则描述了视频数据的类型如H.263等。
图2-3表示JMF对音频格式和视频格式的定义:
图2-3JMF的媒体数据格式
2.2.6管理器(Manager)
JMF提供了下面四种管理器(Manager):
Manager:
Manager相当于两个类之间的接口。
例如当你需要播放一个DataSource对象,你可以通过使用Manager对象createPlayer()方法创建一个Player对象来播放它。
使用Manager对象可以创建Player、Processor、DataSource和DataSink对象。
PackageManager:
该管理器中保存了JMF类注册信息。
CaptureDeviceManager:
该管理器中保存了截取设备的注册信息。
PlugInManager:
该管理器中保存了JMF插件的注册信息。
2.3事件模型
JMF利用事件报告机制来使基于JMF的程序获知媒体系统当前的状态,从而使程序能够对相应状态的改变作出相应的操作。
在任何时候,当一个JMF对象需要报告当前的状态,它将发出一个MediaEvent事件。
MediaEvent的子类包括ControllerEvern,DataSinkEvent,GainChangeEvent,RTPEvent。
对于任何一个能发送MediaEvent的JMF对象而言,JMF都定义了一个相应的侦听接口(listenerinterface)。
为了能在某一MediaEvent事件发生时得到相应的通知,必须实现适当的侦听接口以及在对应的类体中重写该接口中处理MediaEvent事件的方法体,并通过调用addListener方法来接收此MediaEvent事件。
JMF中的Controller对象,例如播放器(Player)和处理器(Processor),以及Control对象,例如GainControl都可以发出MediaEvent事件。
(Player和Processor继承于Controller类
所有的Controller事件,ControllerEvent由Controller(如Player或Processor)产生,可分为三类:
改变通知(changenotification),关闭事件(closedevent),状态转变事件(transitionevent):
1.改变通知事件如RateChangeEvent,DurationUpdateEvent,FormatChangeEvent表明一些Controller的属性的改变。
2.状态转变事件可以使你的程序对Controller对象的状态转变作出反应。
Player当从一个状态转为另一状态时都会产生transitionevents。
3.当Controller关闭时,它将产生关闭事件。
三、系统架构和功能模块分析
3.1.MVC模式概述
MVC架构是“Model-View-Controller”的缩写,即将“模型-视图-控制”作为应用程序构成的三要素。
Event(事件)导致Controller改变Model或View,或者同时改变两者。
只要Controller改变了Models的数据或者属性,所有以来的View都会自动更新。
类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。
相应地,本软件也同样使用MVC思想指导设计,做到模块细化,分工明确,模块间逻辑顺序清晰的三大目标。
流程如图3-1所示
图3-1框架流程图
3.2系统目标
对于音频播放器,必须给用户提供最简单的操作和最完善的功能。
至少应该能够对音频文件进行播放、暂停、停止、音量和进度拖放操作等。
除了最基本的操作以外,优秀的播放器还提供了许多附加的功能来突出显示该媒体播放器的特色,例如本播放器的歌词实时显示。
在这样的情况下,对播放器的设计目标要求有如下功能的实现:
用户界面窗口的控制功能:
播放器主窗口控制、播放列表窗口的控制和歌词显示窗口的控制;
媒体文件的播放控制功能:
开始播放、暂停播放、停止播放和拖动播放等;
媒体文件的管理功能:
添加歌曲、添加目录,删除歌曲、清空列表、保存列表和装载列表;
音频文件信息显示功能:
将音频文件的基本信息呈现给用户,同时用户自己可以设置一些信息。
3.3系统功能模块概要设计
本软件同样采用MVC的设计模式,做到控制,信息与视图的相互分离,同时相互间有联系紧密,互相调用,互为条件与依赖。
故将系统分为五大模块进行构建,分别是
用户界面模块
播放控制模块
播放信息模块
播放列表控制模块
歌词控制模块
其相互关系如图3-2所示:
用户请求事件用户请求事件
视图信息更新视图信息更新
更新信息信息更新读取读取更新
图3-2相互关系图
3.3.1用户界面模块
为了实现软件产品界面的友好性和简洁性,同时又要保证功能的完整性,播放器的控制窗口的设计显得更是不同一般的重要。
首先,给出该界面的组件组成。
于一个小小的窗口,要摆放这么多的控件,如果随便地放在窗口上的话,将会使窗口十分混乱,影响使用,所以要对其摆放位置进行合理的规划。
这些控件被按照功能分成了3组,它们分别是控制面板、播放列表面板和LRC面板。
这样一来,就可以实现软件产品界面的友好性与简洁性,条理分明,在保证软件产品功能完整性的同时,方便了用户的使用。
各面板关系如图3-3:
图3-3面板关系图
3.3.2播放信息模块
放信息模块由播放信息,播放列表,歌曲信息节点三个层次嵌套而成,如3-4所示:
图3-4信息模块关系图
3.4音频文件播放逻辑
3.4.1对音频文件的传递
音频文件的传送主要是用在播放列表处理的过程中,当播放器的用户想利用本播放器来播放一个音频文件时,首先要做的就是将该音频文件所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 java mp3 播放 设计 实现 源文件 毕业设计 论文