毕业论文基于QT的音乐播放器设计与实现.docx

上传人:b****8 文档编号:12722341 上传时间:2023-06-07 格式:DOCX 页数:44 大小:422.77KB
下载 相关 举报
毕业论文基于QT的音乐播放器设计与实现.docx_第1页
第1页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第2页
第2页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第3页
第3页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第4页
第4页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第5页
第5页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第6页
第6页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第7页
第7页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第8页
第8页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第9页
第9页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第10页
第10页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第11页
第11页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第12页
第12页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第13页
第13页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第14页
第14页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第15页
第15页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第16页
第16页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第17页
第17页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第18页
第18页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第19页
第19页 / 共44页
毕业论文基于QT的音乐播放器设计与实现.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业论文基于QT的音乐播放器设计与实现.docx

《毕业论文基于QT的音乐播放器设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业论文基于QT的音乐播放器设计与实现.docx(44页珍藏版)》请在冰点文库上搜索。

毕业论文基于QT的音乐播放器设计与实现.docx

毕业论文基于QT的音乐播放器设计与实现

基于QT的音乐播放器设计与实现

摘要

音乐作为一种娱乐性质的产品,从古到今一直受人喜爱。

进入信息社会,音乐的传播越来越广,应对大众对音乐的需求,市场上出现了大量的音乐播放软件,其中包括千千静听、酷狗等众所周知的产品。

同时随着电子技术的不断发展,各种智能设备的出现,使得不同设备都需要音乐播放器软件。

QT作为一种跨平台开发框架,可以轻松开发适应各种平台的软件,而且丰富的代码库和方便的界面设计过程使得开发成本低,而本软件的实现正是基于QT。

本音乐播放器主要完成音乐播放与暂停、歌词同步、创建音乐列表、播放上一首和下一首、调节音量、播放模式、添加删除歌曲、窗口的拖动、主流音频格式的播放支持等功能。

目前系统实现所采用的技术为QT与C++。

关键词:

音乐播放器,QT,C++

MusicPlayerbasedonQTdesignandimplementation

Abstract

Musicasakindofentertainmentproducts,hasbeenpopularfromancienttimestothepresent.Intheinformationsociety,thespreadofmusicisbecomingmoreandmorepopular,demandformusictothepublic,themarketappearedalargenumberofmusicplayersoftware,includingTTPlayer,cooldog,aseveryoneknowstheproduct.Atthesametime,withthedevelopmentofelectronictechnology,theemergenceofvarioussmartdevices,sothatdifferentdevicesneedmusicplayersoftware.QTisacrossplatformdevelopmentframework,caneasilyadapttothedevelopmentofavarietyofplatforms,butalsoenrichthecodebaseandconvenientinterfacedesignprocesssothatthedevelopmentoflowcost,andtherealizationofthesoftwareisbasedonQT.

Themusicplayerismainlytocompletethemusicplaybackandpause,synchronouslyrics,musicplaylist,createasongandthenextsong,adjustvolume,playmode,addanddeletesongs,dragthewindow,themainstreamaudioformatsupportandotherfunctions.

ThecurrentsystemimplementationtechniquesusedforQTandC++.

KeyWords:

MusicPlayer,C++,QT

第1章引言

1.1研究现状

所谓音乐播放器可以说是把音频解码器进行可视化呈现,变成可以供人操作的图形画面,本质上是应用了各种音频编码格式的解码工具软件。

比如说ape格式调用的是Monkey'sAudio解码器,flac格式调用的是flac解码器,mp3调用的是lame解码器。

很多音乐播放器都播放各种音乐格式的音乐文件,其实是这些播放器把各种的音频解码器统一包装起来,而且使用一致的播放画面,进而让使用者能够简洁地播放和听取多样化的音乐。

大众的音乐播放器单单是将音频解码器包装起来,而同一种音频的解码方法又是不变的,所以理论上所有播放器软件音质应该是完全相同的,若果说有音质最好的音乐播放器实际上是欲盖弥彰。

一些个音乐播放器在应用解码器的前提上加入DSP插件,以转换和扭曲方法处理原始的音乐,以迎合人们的喜好,看似以这样的形式获得了优质音质,但事实真相是原本音乐被毁坏,音质成了两极分化,有的变好,有的变差。

音乐播放器的特色在于可视界面亲民并具有强大的扩展性。

界面酷炫,操作简单是当前市面上播放软件的绝招,缺乏扩展性是根本弱点,支持格式不多且自成体系。

所以开源播放软件的制胜法宝是针对扩展性加强建设,符合音乐更多种的格式,但界面平淡无奇,影响力小使用者基数低的缺点也是暴露无遗。

1.2主要研究的目的及内容

当下社会,每个移动平台或电子产品里都有音乐播放器的身影。

它将声音或是音乐传遍大江南北。

科技为王的时下如雨后春笋般不同平台开发的音乐播放器涌现网络,其中值得注意的是QtCreator开发的音乐播放器占用内存小功能强,只要进行一次编译,就可以移植到嵌入式平台下或其他平台下。

科技的进步,将许许多多的嵌入式设备带入人们的视野中,所以嵌入式软件的开发对于嵌入式系统设备的前景有着巨大推动作用。

比如linux系统对各种设备的广泛支持性,能方便应用与电脑、手机、汽车及工业等。

嵌入式系统在众多领域的应用带来了便利,提高了我们的生活质量,尤其是消费电子产品潜力是巨大的。

随着人们精神需求的加强,人们更加期待功能好的美观简洁的嵌入式音乐播放器,所以应用嵌入式系统开发音乐播放器在市场中占有重要的席位。

这次的设计是开发一个音乐播放器,能够实现播放不同类型的音频功能。

该音乐播放器具有添加歌曲,删除歌曲,上一曲,播放歌曲,暂停歌曲,下一曲,播放模式等,具备基本的音乐软件功能,用QT设计出来的播放器都有,并且可以显示歌词,使用QT开发,利用其跨平台性和易扩展性可以为将来播放器的扩展打下基础。

1.3研究方法及设计思路

1.3.1研究方法

音乐播放器是一个典型的应用软件,其功能性是第一位的。

我在产品开发过程中遵循的是瀑布模型开发方法,先后进行相对全面的市场调查、需求分析、可行性分析、系统设计、详细设计、编码、测试等步骤。

在系统设计时采用的是结构化设计方法。

瀑布模型(WaterfallModel)实际上是项目开发架构只不过是形象化的称呼,一个严格开发过程是通过合理的规划分步骤分阶段完成的,不管是系统需求分析还是软件的发布及维护的过程中,每个阶段里有源源不断不断的产生反馈信息生成,所以当发现信息没有被覆盖或是遇到问题的产生,最好方法是“返回”上一个阶段将错误改正,最终发现项目开发过程程是以上到下形象的“流动”,因为这样得名瀑布模型。

在软件工程、企业项目、产品生产还有市场销售等方面都会涉及运用瀑布模型。

结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。

它把系统作为一系列数据流的转换,输入数据被转换为期望的输出值,通过模块化来完成自顶而下实现的文档化,并作为一种评价标准在软件设计中起指导性作用,通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。

结构化设计所使用的工具有结构图和伪代码。

结构图是一种通过使用矩形框和连接线来表示系统中的不同模块以及其活动和子活动的工具。

SD方法在构建变换型结构或事务型结构的系统时有非常好的效果。

数据模型与过程模型的一并使用组成了结构化设计的过程。

实际设计的时候,采取面向整体程序下结构为对象,并常常制作模块结构图描述程序模块间的联系。

结构化设计应分为一下几步:

①测评数据流图情况;②明确数据流图类型问题;③将数据流图映射至软件模块结构,作为推出模块结构的上层的依据;④基于数据流图逐步分解高层模块,设计中下层模块;⑤改进模块结构,产生规范全面的软件结构;⑥描述模块接口。

1.3.2设计思路

(1)分析市场上现有的音乐播放器产品,找到主要产品的优势和缺点;

(2)分析本软件的可行性和应该具备的功能;

(3)针对系统功能研究和解决技术问题,并进行设计;

(4)使用具体的程序设计技术实现软件并测试。

 

第2章应用需求分析与可行性分析

2.1应用需求分析

本软件应简单易用,并且占用资源少,包含播放器软件的主要功能。

2.2运行需求分析

硬件条件:

CORECPU、1GRAM、10GROM以上的PC机。

软件条件:

Windows7

2.3其他需求分析

该系统具备的条件有可维护性、可靠性、可理解性、效率等。

方便使用者的认识和操作。

可维护性囊括可读性、可测试性等。

可靠性囊括正确性和健壮性等。

在开发过程中,应克服不利因素与限制的条件(费用、时间、适合的软、硬件资源等),尽量满足以上各方面需求。

2.4可行性分析

2.4.1经济可行性

进行项目时对开发者的经济现状和投资能力予以分析,对项目建设运行与维护费用做好预算,预计项目完成后可能获得的社会和经济效益。

本项目是作为毕业课题由自我设计的,投入费用甚小,软件开发完成后可为以后实现功能扩展提供便利,估算开发费用和今后的运行、维护费用,预计项目会获得的收益,把费用与效益进行对比。

开发、运行和维护费用主要包括:

购买和安装设备的费用:

计算机硬件;

软件开发费用:

使用QT的免许可证版本,免费;

人员费用:

个人独自开发,正常生活费用;

消耗品费用:

相关软件开发资料、保障系统运行的消耗用品。

所有开支都不大,所以经济上是可行的。

2.4.2技术可行性

技术可行性是估计拥有的技术条件是不是能保证实现项目,开发工具的配置能否满足项目的要求等。

该软件运用QT进行开发,QT作为被广泛使用的框架,具有强大的功能,而其中的QMediaPlayer功能也十分适合开发音乐播放器。

进过1个月的学习和研究,我已经初步掌握了QT开发过程,以及相关的类库。

所以技术是可行的。

2.4.3运行可行性

本软件小巧易用,占用资源少,可以在多种平台上安装运行,本毕业设计只在windows7系统下的PC上测试和运行,运行可行。

2.4.4时间可行性

学习时间紧,项目任务重,要一边设计和实现相关功能,时间也算是紧紧凑凑,但是经过努力,项目功能能基本实现,一些功能在测试会有点问题,以后会在逐步解决。

2.4.5法律可行性:

①所有技术资料都为合法。

②开发过程中不存在知识产权问题。

③未抄袭任何网站,不存在侵犯版权问题。

④开发过程中未涉及任何法律责任。

结合以上考虑,本项目的实现从技术上、从经济上、从法律上皆可行。

 

第3章相关技术简介

3.1C++

说到C++其实是由C语言发展出来的语言,从1969年开始C++登上了历史舞台。

大约1969年,美国贝尔实验室的KenThompson为DECPDP-7计算机开发了一个操作系统软件,于是最早的UNIX诞生了。

之后,他以剑桥大学的MartinRichards开发的BCPL语言为依据,给UNIX开发了一个方便编写系统软件的语言,取名叫做B。

B语言是一款无类型的语言,与之后的C语言相比他的特点是直接面对机器字操作。

B语言可说是系统软件编程语言的首个应用,而且B语言其本身的解释程序由KenThompson用这首个应用改写。

1972至1973期间,时为贝尔实验室的DenisRitchie对B语言进行优化,从此B语言多了数据类型的理念,也是从这开始世界上多了一种可以在直接生成机器代码的编译程序,它叫做C。

于1973年,UNIX的内核在KenThompson小组的努力下用C被重新改编。

紧接着,许多计算机例如:

IBM360/370、Honeywell11以时VAX-11/780等,皆应用了C语言所编译程序,C用其无可抵挡的势头发展成为最具影响力的系统程序设计语言。

但是,C语言也有美中不足的地方,比如说类型检查机制薄弱、缺失支持代码复用的语言结构,这些不足使C语言在开发大程序时遇到难题。

有缺点就有改进的空间,贝乐实验室的BjarneStroustrup博士和同事们开始了针对C语言进行优化改造工作,为C语言添加了“类”的概念,最初的C++语言就此出现(1983)。

往后的时间,Stroustrup和他的同事们将运算符重载、引用、虚函数等功能添加到C++家族,C++变得更加完善,在1989年后诞生了AT&TC++2.0版本。

随后美国国家标准化协会ANSI(AmericanNationalStandardInstiute)和国际标准化组织ISO(InternationalStandardsOrganization)一起进行了标准化工作,并于1998年正式发布了C++语言的国际标准ISO/IEC:

98-14882。

业界软件商表示都支持C++编译器具备的标准,对不同程序进行扩展。

C++设计方法的特点是面向对象,处于中型和大型的软件开发项目的首选之列,C++的优越性极多,从开发历时、经费得到充分体现,开发出来的软件可重用、可扩充、可维护并且可靠。

值得一提的是,C++作为C语言的一个超集,其好处就是C代码不经改动就可用C++编译通过。

3.2QT

1991年奇趣科技推出QT软件,其实质是跨平台c++的AppDevelopFramework。

它可以同时开发GUI程式和非GUI程式。

它为APP开发者建立艺术级APP提供应该具备的功能。

Qt扩展性强,允许进行对组件编程。

可以说,Qt与XWindow的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型产品。

2008年时Nokia公司将奇趣科技“揽于麾下”,QT之后便服务于诺基亚。

QtCreator是诺基亚把QT收归旗下后开发跨平台的IDE,意思是轻量级集成开发环境。

此IDE能够跨平台运行,服务于Linux(32位及64位)、MacOSX和Windows等系统。

官方的理念是,让QtCreator的相关工作者能够使用Qt这个应用程序框架高效地完成他们的开发工作为其减轻负担。

3.3音乐播放原理

人类用声音传递信息,用声音抒发情感,声音带给人们以美的享受和快乐,声音无处不在,听得到声音能让人感到生命的真实。

时代在发展,科技的更新日日颠覆人们的认识,人们逐渐已不简单满足于物质生活的提高,进而对精神世界需求日益剧增。

而音乐从古到今都是人们休闲娱乐的上佳之选,以作音乐为趣,以听音乐为乐。

这就引发了问题,美妙的音乐是如何通过媒介播放的呢?

科技的力量在这时显露无遗,其过程应该是要播放多媒体文件,计算机就把指令传递到声卡,声卡起到把媒体播放信息重新整合的作用,但要想播放效果好就要使用高质量的硬件设备。

对于电脑声卡,使用Fm合成与波表合成可提高音效。

Fm合成运用在旧时的isa声卡上,Fm是“频率调变”的意思,是以声音振荡的理论为基础的MIDI合成处理。

此技术带有局限性,又因为这种声卡或显卡用的是廉价的芯片,体验的效果不如人意;不同的是波表和视频合成呈现出来的效果要大大好于Fm,且在电脑上被大量推广使用,各种不同的波表,声卡、显卡,以及解码软件充斥市场。

对于数字音频编码来说,在编码方案和实现方式上具有差异,但基础的编码思路却差别不大。

PCM音频信号存在于音频声道中的,处理时,要把PCM映射到频域中,即时遇到频域,这个过程用子带滤波器或变换滤波器组可以完成。

区别是子带滤波器和变换滤波器组中的频率分辨率不一样。

音频采样块位于声道中,需运用心里声学模型达到计算掩蔽门限值的目的,得到的掩蔽门限值可推算出,从公共比特池配给到这个声道中不同频率域内的比特数,或是否该引入频率范围内的量化噪声。

这样经过编码的数据流就可以通过控制参数和辅助数据获得。

对于音频解码来说,要把编码后的数据流作解码复用处理,接把音频数据作反量化,这一步要用到比特流中传输的控制参数。

另一个方法是得到心里声学模型参数反向运算之后产生的音频信号,将其从频域反变换至时域,解码便完成了。

时下主流的音频编码系统包括G.7xx、MPEG伴音系列和杜比音像系统。

CCITT推出了最早的音频编码算法建议标准如G.711、G.721、G.723等。

1995年,ITU-T批准了新的语音压缩标准G.729.该标准采用共轭结构代数码激励线性预测(CS-ACELP),可以仅用8kbit/s的带宽传输话音,而话音质量与32kbit/s的ADPCM相同,它被用于IP-phone技术中。

 

第4章系统分析

4.1系统实现目标

本软件主要实现:

音乐播放与暂停、歌词同步、创建音乐列表、播放上一首和下一首、调节音量、播放模式、添加删除歌曲、窗口的拖动、主流音频格式的播放支持等功能。

4.2系统体系结构

图4.1系统结构图

音乐播放与暂停:

播放器界面应有一个按钮,当使用者点击时可以播放已选择的歌曲,再次点击该按钮暂停播放。

歌词同步:

播放器播放音乐时,应该自动在本地查找有无歌词,有歌词的话就应显示歌词,并且歌词应与播放的音乐同步。

创建音乐列表:

软件需创建一个播放列表,以供列表中歌曲根据指定模式自动播放。

播放上一首和下一首:

播放器界面上应有上一首下一周的按钮,点击可以切换歌曲。

调节音量:

按下相应的菜单或鼠标滚动实现音量调节。

播放模式:

包括列表、单曲循环,随机、顺序播放。

添加删除歌曲:

可以从本地添加歌曲到播放列表,也可以从列表删除指定歌曲。

窗口的拖动:

点击播放器窗口可以自由拖动。

主流音频格式的播放支持:

播放器应支持常见的歌曲格式如mp3、wav等。

 

第5章系统设计

该软件要求功能齐全,界面美观,进行合格的软件开发,功能模块开发的是重中之重。

5.1概要设计

在系统需求分析过程中,不是两眼一抹黑,就是先要明确软件“做什么”的问题。

之后我们要考虑的就是从软件是“做什么”的转变成是“怎么做”的概念,全力实现系统的需求。

首先,我们需要描述的是系统的总的体系结构。

5.2软件结构设计

软件需要模块化这更是软件概要设计的重中之重。

模块化可说是一个化整为零又从零到整的变换过程,开发是软件往往是复杂的,从整体上解决难度很大,所以要把其拆分成许多小的模块逐个解决,每个模块分工明确只需完成单个特殊功能,但不仅是单兵作战要通过纽带将这些模块串联,扭成一股绳,成为完整一个个体,发挥应有的作用。

讲到划分模块,也有其独特的规则,不能想当然随意为之,要保证每个模块的独立性是硬性规定,才能达到简化复杂软件系统的目的,同时每个模块职责皆要不同,即子功能不同,又不能全封闭式要保留简单的接口,为最后的重新组合作准备,进而开发高可读性,可维护性的软件系统。

软件的概要设计采用结构化设计,通过需求分析生成的数据流图,按部就班形象化成软件结构。

开发软件就是要化繁为简,以小见大,逐步解决相关的问题,这次设计的音乐软件中,具备歌词显示、音乐播放、主界面、右键菜单等模块。

然后,进一步细分模块,添加细节。

5.3详细设计

5.3.1歌曲列表显示

歌曲列表显示本地可以播放的歌曲,可以隐藏也可以显示,如图。

图5.1歌曲列表图

主要UI设计代码如下:

歌曲列表显示:

310

30

201

271

true

QHeaderView:

:

section{

background-color:

qlineargradient(x1:

0,y1:

0,x2:

0,y2:

1,

stop:

0#616161,stop:

0.5#505050,

stop:

0.6#434343,stop:

1#656565);

color:

white;

padding-left:

4px;

border:

1pxsolid#6c6c6c;

}

QHeaderView:

:

section:

checked

{

background-color:

red;

}

/*stylethesortindicator*/

QHeaderView:

:

down-arrow{

image:

url(down_arrow.png);

}

QHeaderView:

:

up-arrow{

image:

url(up_arrow.png);

}

QFrame:

:

StyledPanel

Qt:

:

ScrollBarAlwaysOff

QAbstractItemView:

:

NoEditTriggers

true

QAbstractItemView:

:

SingleSelection

QAbstractItemView:

:

SelectRows

Qt:

:

DashLine

歌曲

类型

Url

5.3.2歌词同步功能

歌词同步是播放器的重要功能,本播放器歌词可以在windows桌面上显示,也可以在播放器顶端显示,如图。

图5.2歌曲列表图

主要代码如下:

classlrcWindow:

publicQLabel

{

//Q_OBJECT

public:

lrcWindow(QWidget*parent);

~lrcWindow();

QAct

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2