音频解码技术研究与音乐播放器毕业论文.doc_第1页
音频解码技术研究与音乐播放器毕业论文.doc_第2页
音频解码技术研究与音乐播放器毕业论文.doc_第3页
音频解码技术研究与音乐播放器毕业论文.doc_第4页
音频解码技术研究与音乐播放器毕业论文.doc_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

湖南大学毕业设计(论文) 第58页HUNAN UNIVERSITY毕业设计(论文)设计论文题目: 音乐解码技术研究与音乐播放 的实现 音频解码技术研究与音乐播放器实现摘要本文介绍研究音频编码解码相关技术,并结合VC6.0编写多媒体音乐播放器,利用软件工程原理,采用面向对象的编程方法,其开发主要包括前台窗体的设计和后台源码的实现两个方面,实现了利用计算机进行多媒体音频的播放.音乐播放器开发过程总共包含了六部分,通过系统分析,系统开发的方法,系统开发平台介绍,概要的设计,系统的规划和设计,系统设计,分别介绍了从分析到开发到系统的设计与测试的整个音乐播放器的生成过程。系统分析介绍了播放器的播放流程,开发背景发展前景,开发工具概要,开发系统的最低配置等。系统开发的方法介绍了音乐播放器的具体的开发方法和如何选择的开发方法。系统开发平台的介绍,具体介绍了VC6.0主要界面和使用方法,其中包括常用工具具体位置与使用方法和工作区的生成,项目的创建、项目中文件的添加删除、项目的编译、项目的测试等。后边几部分和附录介绍了系统规划与分析,应用程序主界面,数据库的生成,代码的编写与功能的实现,系统的编译与运行,最终实现了音乐播放器的功能,能对歌曲音乐进行播放和控制。关键词: 音频解码;软件系统; VC6.0; 音乐播放器; 开发平台 项目工程; 资源文件.Research of the audio frequency decoding engineering and realize of the audio frequency player Abstract This article introduces the correlation technique of audio frequency code and decoding. Through writing the audio frequency player of the multimedia with VC6.0, utilize soft project principle, adopt facing target programming method, it develops to be mainly including the design of the body of window of the front desk and backstage supporters source code realization two respect, have realized utilizing the computer to carry on the broadcasting of audio frequency of multimedia. System this develop course include six chapter altogether, through network analysis, method that system develops, the introduction to the systematic developing platform, the design of outline, systematic planning and design, the system is designed, has introduced and turned into the course to the systematic design and whole audio frequency player of test from analyzing to developing separately. Chapter one introduces the procedure of broadcasting of the player, develop the development prospect of the background, the outline of the developing instrument, develop systematic disposing etc. the most low. And approach how to choose that chapter two has introduced player concrete development approach of audio frequency. Chapter three is the introduction to the systematic developing platform, introduce VC6.0 main interface and operation method specifically, including the formulation of concrete position of daily tool and operation method and workspace, establishment, project Chinese piece of project add deletion, compiling test of event of event etc. Odd chapter and appendix recommend system plan and analyze application program live in interface finally, the formulation of the database , the code one writes and the realization of the function, the systematic one compile and is issued, realize the function of the player of the audio frequency finally, can broadcast and control the song music . Keywords: Audio frequency decoding; The software system; VC6.0 ; audio frequency broadcast; Develops the even project; Project; resources document. 目录1 绪论11.1 课题的来源11.2 选题的背景及目的21.2.1 音频编解码发展历史21.2.2 音频编解码过程31.2.3 选题的目的61.3 系统主要实现内容与实现方式61.3.1 系统主要实现内容61.3.2 系统的开发方法71.3.3系统的开发平台92 系统的分析102.1 系统的可行性分析102.1.1 经济可行性分析102.1.2 操作可行性分析102.1.3 技术可行性分析102.2 系统功能分析113 系统设计133.1 系统概要设计133.2 系统功能模块设计193.2.1 加入文件203.2.2 加入目录203.2.3 歌曲列表203.2.4 歌曲控制223.2.5 音量设置223.2.6 静音设置233.2.8 滚动字幕233.3 系统运行环境254 系统实现264.1 系统的编译和发行264.2 系统运行284.3 系统功能界面284.3.1 加入文件功能实现284.3.2 加入目录304.3.3 歌曲列表功能实现324.3.4 歌曲控制功能实现344.3.5 音量控制功能实现354.3.6 静音设置功能实现364.3.7 M3U功能实现384.3.8 滚动字幕功能实现39致谢41参考文献42附录43湖南大学软件学院1 绪论1.1 课题的来源语音时语言的声学表现,是人类交流信息最自然、最有效、最直接的手段,也是人类进行思维的一种依托。随着社会的不断进步,人们的生活水平也在不断的提高,从而对精神生活提出了新的要求。音乐一直以来就是人们日常休闲的必要调剂品,它可以陶冶人的情操,极大的丰富了人们的精神生活。那么一首首动听的音乐又是如何播放出来的呢?这就要通过形式多样的合成手段了,即当播放多媒体文件时,计算机将指令发给声卡,声卡按照指令将媒体播放信息重新合成起来。所以,多媒体的播放效果取决于用户设备的质量和音色。就电脑声卡而言,最为常见的手段是fm合成与波表合成。前者多用于以前的isa声卡,fm是“频率调变”的英文缩写,它运用声音振荡的原理对MIDI进行合成处理。但由于技术本身的局限,加上这类声卡或显卡用的大多数为廉价的芯片,效果自然差劲;而波表和视频合成所带来的效果要远远超过fm,而且在电脑上已被广泛运用,各类波表,声卡、显卡,以及解码软件层出不穷。图1.1 多媒体播放流程图由输出设备播放声卡/显卡合成信息计算机指令MIDI然而,在音频压缩出现之前,存储高质量的数字音频数据往往需要占用大量的硬盘空间以及通道带宽。假设一首普通的歌曲时间为一分钟,要想达到CD音质,至少需要大约10MB的存储空间,可以想象,如果要从Internet上下载这首歌,使用一个普通的28.8Kbit/s的Modem,不算传输开支和网络不畅,理论上将会用至少49分钟。同时,如果是要在电脑上欣赏音乐,也会极大的降低磁盘占用空间,这明显是不可接受的。所以,音乐的存储就成了一个问题。为了使人们能够更方便,更直接的欣赏音乐,就必须要降低磁盘占用空间。可以使用两种方法达到目的,降低采样指标或者压缩。降低指标不可取,因此只能通过各种压缩方法进行压缩。音频压缩需要编码,自然,播放此音频文件则需要解码。编码,解码的不同,导致音频在经过处理后得到的音质也不尽相同,而好的音质能够更好的满足人们的听觉享受。所以,对各种音频文件进行解码的技术研究就很有必要了。本课题就是对音频解码技术进行相关研究,并设计出一款属于自己的音乐播放器软件。1.2 选题的背景及目的 1.2.1 音频编解码发展历史音频压缩技术的发展最初是从才能够无损压缩开始的。20世纪70年代初,开始采用类似的瞬时压缩技术和块压扩(Block-Compressing)技术。这种技术的编码率较低。20世纪80年代,随着数字信号处理技术的发展,出现了从音质尚可到音质卓越的一系列频域编码算法。20世纪80年代末至90年代初涌现的编码算法普遍采用了一种高效率编码技术,即利用人耳的掩蔽效应和临界频带等特性来进行子带编码和变换编码,其中有MUSICAM系统、128kbit/s的AC-2编码器、AC-3系统、ASPEC和SB-ADPCM编码算法等。20世纪90年代至今,有损音频编码把音频数据的压缩率提高到了12:1。付出的代价是音质的下降。比较著名的是MP3、AAC高级音频编码、RM等。同时,能给最终用户提供最佳的听觉体验的无损压缩技术也取得了新的突破。Meridian无损压缩(MLP)是一种应用所有权技术的音频编解码计划,它能传送多声道环绕声,并以可能的最高动态范围和更高的取样频率来确保任何声音细节都表现完美。音频解码和音频编码是共生的,音频编码的发展历史其实也就是音频解码技术不断进步的真实写照。1.2.2 音频编解码过程当前数字音频编码领域存在着不同的编码方案和实现方式,但基本的编码思路大同小异,对每一个音频声道中的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技术中。G.711是现在使用最普遍的编码技术,它是目前全世界电路交换电话网中使用的编码技术。而在ADPCM上最主要的标准就是G.726,我们就以G.726 ADPCM编码系统为例来了解一下编码解码的过程。编码过程:图1.2 编码原理流程图Encoder输入14bitPCM信号s1 ACCUM调用predictor_pole()函数,从6阶零点预测器计算出预测信号-sezi调用predictor_pole()函数,从二阶极点预测器计算出预测信号-sezi,与sez计算出预测信号-se求出差分信号sl-se-d SUBTA调用step_size()函数,计算出量化器的标度因子y MIX调用quantize()函数,量化得出ADPCM形式编码的信号-i调用reconstruct()函数,根据y,生成的ADPCM编码信号i还原得到量化差分信号dq根据dq,预测信号se得到重建信号sr ADDA计算出预测器差分信号sr+sez-se-dqsez ADDC调用update()函数,调整输出编码的每个状态变量返回编码后的信号值idecoder()解码函数。decoder()解码函数主要由ACCUM方框、MIX方框、ADDB方框、ADDC方框4个功能子方框组合完成。g723-24-decoder()、g721decoder()、g723-40-decoder()用于完成24、32、40kbit/s ADPCM解码原理。首先读入k时刻ADPCM输入信号i,用k-1时刻量化差分信号dq和重建信号sr,调用predictor-zero()函数和predictor_pole()函数完成自适应预测器功能,预测出K时刻信号估算值se。在量化前,调用step_size()函数计算出量化器标度因子Y,使反向量化器能适应语音和数据等具有不同统计特性以及不同幅度的输入信号。调用reconstruct()函数,使用ADPCM代码i和量化器标度因子Y完成反向自适应量化器功能,产生量化差分信号dq,进一步得到重建信号sr,为计算出k+1时刻预测值se做准备。调用update()函数,更新反向量化器快、慢标度因子和二、六阶预测器系数等,完成量化器标度因子自适应、自适应速度控制、音调和转移检测器功能。解码过程: 图1.3 解码原理流程图Decoder屏蔽得到正确的代码值i调用predictor_zero()函数,从六阶零点预测器计算预测信号-sezi调用predictor()函数,从二阶极点预测器得出预测信号,与sezi计算出预测信号-se调用step_size()函数,计算量化器标度因子y调用reconstruct()函数,根据量化阶y生成的ADPCM信号i还原得到量化差分信号dq根据dq预测信号se得到重建信号sr计算出预测器差分信号sr+sez-se-dqsez调用upadate()函数,调整输出编码的每个状态变量将线性PCM信号输出1.2.3 选题的目的人类进入信息化时代以来,网络的长足发展和广泛的普及,使得人们能够更快,更方便的欣赏音乐。在个人PC上,一款音乐播放器在手,听尽世间音乐。而一款好的音乐播放器,能帮助人们更好的去欣赏音乐。现今网络上有许多优秀的音乐播放器,如千千静听等,他们内置了相当多的音频解码器,能够播放各种格式的音频文件。能编写属于自己的一款音乐播放器无疑是一件有趣的事情,但首先得了解音乐播放器是怎么实现对各种音频格式文件进行播放的,如何实现播放器上许多方便快捷的功能。带着这个目的,我选择了此课题。而对音频解码进行技术研究有助于了解其内在的原理,能够帮助我们更好的设计出一款属于自己的音乐播放器。1.3 系统主要实现内容与实现方式1.3.1 系统主要实现内容通过对音频编码解码技术的相关研究,了解音频编码解码的原理以及过程,从而设计出一款能够播放多音频格式的音乐播放器。这款音乐播放器实现的相关内容如下:q 美观、时尚的操作界面。q 界面上添加时钟。q 滚动显示正在播放的歌曲及其长度信息。q 歌曲控制方式要多样化。q 显示歌曲的播放进度。q MP3文件的添加方式多样化,并且要将其添加到歌曲列表中。q 实现静音和音量的控制。q 能显示MP3文件的相关信息,如歌手、专辑等。q 用户可以自定义滚动信息的方式。1.3.2 系统的开发方法建立一个信息系统,是一项复杂的软件工程的实施。近30多年来,软件工程发展成为新科学,至今已经成为IT产业的重要支柱。一开始,人们往往使用手工作坊式的软件开发方法,靠个人的力量编写各种小型程序;但是随着计算机硬件技术的飞速发展,计算机软件在各个领域中的作用日益突出,那种多年来被人们沿用的手工作坊式的开发方法,已经在软件产品的质量、成本及开发时间等方面无法满足需求。结构化生命周期法是一种传统的管理信息系统开发方法,其基本思想是把整个系统开发过程分成若干个阶段,每个阶段进行若干活动,每项活动应用一系列标准、规范、方法和技术,完成一个或多个任务,形成符合给定规范的产品。采用结构化生命周期法开发管理信息系统时,应遵循的主要原则:(1) 用户参与的原则(2) “先逻辑后物理”的原则(3) “自顶向下”的原则(4) 工作成果描述(主要指文档)标准化的原则其具体开发步骤可分为以下四步:(1) 系统规划(2) 系统开发q 系统分析系统初步调查系统可行性研究现行系统的详细调查新系统逻辑方案的提出q 系统设计系统总体结构设计系统总体功能设计系统总体物理结构设计系统详细设计数据库设计代码设计输入输出设计q 系统实施程序设计系统测试(3) 系统的运行及维护(4) 系统评价 快速原型法是80年代发展起来的,旨在缩短开发周期,提高开发效率和用户对系统的满意程度。其基本思想是在系统开发的初期,尽快构造出系统的原型,使用户能及早地运行这个系统原型,通过使用它、熟悉它,受到启发并取得经验,然后对系统的目标和功能提出更精确、具体的要求,研制人员据此逐渐修改和完善原型,使它满足用户的需求,最后完成系统的开发。该方法大大提高了系统开发效率,弥补了结构化生命周期法开发时间长的缺陷。通常采用原型法需以下四个阶段:(1) 明确用户的基本要求(2) 研制系统的原型(3) 使用、评价系统原型(4) 修改和完善原型1.3.3系统的开发平台众所周知,VC6.0 是功能非常强大的多媒体开发工具,它有丰富的函数和方法处理各种各样的多媒体信息,能够很灵活的操作图形、声音、动画、影像等多媒体素材。但有时我们使用Visual C+开发非多媒体应用程序,并不需要在应用程序中大量的使用声音,而只是需要在特定的场合出现。如Windows的警告声。这就要求程序员在恰当的环境中恰当的使用声音文件,既不失去VC在多媒体方面的特长,又能够为应用程序增加吸引人的效果。本音乐播放器系统就是在Visual C+6.0平台环境下编写设计而成的。2 系统的分析2.1 系统的可行性分析 2.1.1 经济可行性分析本系统开发简单但要耗去一定的时间,所用的开发工具和软件都差不多是免费的。由此可见在,开发此系统在经济上是完全可行的。 2.1.2 操作可行性分析如今的计算机已经走进千家万户,硬件成本的下降,导致计算机购买成本的降低.我的这套系统是利用自己的计算机加微软的集成开发环境Microsoft Visual C+6.0作为软件的开发平台,使开发出来的系统有友好的用户界面、有良好的安全性设置、有详细的操作说明书,这样更使各类用户很快地掌握系统的使用方法,操作友好因此在操作上是可行的. 2.1.3 技术可行性分析从目前IT业界比较流行的数据库开发、管理软件来看,对于比较简单的中小型数据库,VC 和Windows 系列操作系统的结合无疑是在实际应用中较为成功的一种解决方案。为用户提供了业界软件开发一直坚持的非常友好、操作简单的用户界面、完善强大的数据库操作功能和简洁明了的数据库接口。所以技术实行起来相对会容易。2.2 系统功能分析基于音乐播放器所要实现的内容,我们列出用户操作的模块,其中每个模块对应一个功能。图2.1 UML用例图 加入文件加入目录M3U歌曲控制静音设置音量设置歌曲列表滚动字幕 注:图中的“M3U”是音乐播放器音频文件的播放列表本系统的设计思想:q 在程序主界面上添加位图时钟,显示操作系统的当前时间。q 采用滑块和倒计时的方式显示歌曲的播放进度。q 采用横向滚动的方式动态显示当前正在播放的歌曲及其长度。q 采取两种方式添加MP3歌曲,即加入文件和加入目录。加入的MP3歌曲显示在歌曲列表中。q 采用伸缩对话框的方式显示和隐藏歌曲列表。q 设置5种滚动模式来显示当前正在播放的歌曲。即无模式、左滚动(完全消失才重现)、右滚动(只滚动一次)、左右来回滚动和左滚动(还剩1/3就重现)。q 歌曲控制采用10方式。即打开/播放、暂停、停止、上一首、后退5秒、前进5秒、下一首、重复播放、随机播放和循环播放。q 调用WindowsAPI函数实现音量控制。q 除了操作主界面上的按钮,还可以通过弹出式菜单来实现歌曲控制和滚动模式的设定。q 本系统使用系统托盘技术,使得应用程序可以以图标的方式运行。根据开发思想,确定了系统的功能。本系统需要完成的功能如下:q 创建时钟,显示当前操作系统的时间。q 向系统中添加文件或目录。q 将添加的MP3文件显示到歌曲列表中。q 编辑MP3文件的信息。q 创建、打开、保存和关闭M3U列表。q 歌曲控制、包括打开/播放、暂停、停止、上一首、下一首、循环播放等。q 静音设置。q 音量设置。q 滚动显示正在播放的歌曲名和歌曲的长度。q 显示歌曲的播放进度。3 系统设计3.1 系统概要设计(1) 准备工作要开发一个软件,首先必须搞清楚这个软件有什么功能、需要用到哪些组件、输出的内容和方法等,画出结构流程图,然后为这些组件建立一个目录框架,把开发过程中创建的文件和需要用到的文件都保存到这个目录中,如新建一个文件夹,命名为 客户管理系统,其中存放对话框,DATA,存放数据文件,这样文件结构清晰,以便于组织和管理。(2) 对于创建的每个Visual C+应用程序来说,Visual Studio使用一个项目工作区来存储该项目所需的所有文件,其中“项目工作区”(project workspace)或称为“工作区”(workspace)就是一个文件夹,与项目相关的文件存储在该文件夹下.而一个项目又由一定数量的文件组成,如果要生成一个可执行程序,其中一个文件还必须是源代码,而这些文件通常都存储在同一工作区文件夹中.我们用Visual Studio选择一个项目类型,创建一个新的C+应用程序首先从菜单单栏中选择File项打开如图4-1所示的File子菜单,从这个子菜单中选择New选项,打开如图3.1 New对话框.图3.1 File子菜单图3.2 New对话框在3.2所示的New对话框中选Win32 Application项目类型(如果不小心选择了别的项目类型,在下一个出现的习莫中选择Cancel)(3) 当开始一个新项目里首先确保Projects选项卡处于活动状态,并在Projects选项卡中,你必须指定三项内容.第一项是选择项目类型.第二项是项目名称.项目名称必须在Project Name文件框中输入.特别的,为新的项目创建了一个新的文件夹,对于这种情形,文件夹名称为pgm1_1.这是必须提供的第三项.一旦为图3.2中的对话框提供了所需的信息并单击OK命令按钮就出现如图3.3所示的对话框单击OK按钮,则会发生两个事件.第一个事件是自动创建一定数量的文件产将这些文件放置在新项目的工作我文件夹中,随后IDE变成如图3.3所示的样子,特别要留意Workspace窗口,显示了关于当前工作中所有项目的一个分层式列表,并显示每个项目中所包含的全部项:图3.3 含一个活动工作区的IDE窗口(4) 创建数据库:因为数据库应用程序在很大程度上依赖于所管理的数据,所以最好从数据入手进行应用程序的设计。在设计用户界面和用于管理数据的组件之前,应首先创建和设置数据库,并确定表之间的关系以及所希望的事务规则等信息。在可靠的数据库基础上,开发工作会容易很多。(5) 设计用户操作界面(Dialog对话框):界面直接表现一个应用程序的功能。Visual C+6.0的设计工具使得创建富有吸引力,并且功能丰富的界面成为软件开发中一件愉快的事情.用户界面主要包括Dialog对话框,工具栏和菜单,它们可以将应用程序的所有功能与界面中的控件或菜单命令联系起来。(6) 设计访问信息的方法:开发人员往往想在表单上为用户显示一些信息,或者也想给用户提供一些方便,以准确地给出他们所需的内容,留给他们自己选择的余地。(7) 测试与调试:这是开发人员在开发工作过程中经常要做的事。其目的就是要尽早发现源程序中可能存在的错误,并加以解决。随着开发工作的深入,不断地进行软件测试和调试,可以避免给后续工作带来更大的麻烦。假设创建了一个表单,那么在处理应用程序的其他部分之前,最好检查一下表单能否完成预定的功能,只有调试过后并且不存在错误后才允许付诸使用。工作区文件夹提供文件类型描述:表3.1 文件类型描述文件扩展名描述.dsw项目工作区文件,用来在工作区级别上存储信息,例如存储在工作区中的项目的数量.点击该文件会打开完整的项目.dsp一个项目文件,描述一个项目可执行版本如何建立,这相当于早期版本中的Visual C+中使用的护展名为.msk的makefile文件.opt工作区选项文件,用来存储项目工作区的设置,该文件含有局部设定,例如用硬件配置设定的工作区外部特征.一旦打开了一个工作区而又没有找到工作区选项文件,将自动创建一个新的工作区选项文件.根据系统分析可知,本系统是具有用户操作界面的应用程序,下面就创建一个基于对话框的应用程序,工程的创建步骤如下:第一步:进入到Visual C+集成开发环境中,选择“文件” “新建”菜单,打开“工程”选项卡,单击MFC AppWizard(exe),指定项目名为TopMp3Player。单击“确定”按钮进入到下个界面。第二步:选择“基本对话框”选项,如图3.4所示。图3.4 应用向导第三步:接下来的步骤是连续单击“下一步”按钮,在最后一个画面单击“完成”按钮,至此就完成了应用程序框架的创建。第四步:删除对话框上由MFCAppWizard生成的控件,重新添加25个控件,如图3.5所示。图3.5 播放器对话框及相关控件音乐播放器对话框上的25个控件的属性如表3.2所示。表3.2 播放器界面各控件以及描述控件ID描述IDC_STATIC_COOL_CLOCK静态文本控件,用来显示位图时钟IDC_STATIC_PLAY_TIME静态文本控件,用来显示时间IDC_STATIC_ROLL_INFO静态文本控件,用来显示滚动信息IDC_CHECK_MIN_WND复选按钮控件,单击它用来最小化窗口IDC_CHECK_CLOSE_WND复选按钮控件,单击它用来推出系统IDC_STATIC_MP3_PICPicture控件,用来显示图标IDC_STATIC_SUPER_MP3静态文本控件,用来显示“音乐播放器”IDC_SLIDER滑块控件,用来显示当前播放的进度IDC_CHECK_PLAY复选按钮控件,单击它用来播放歌曲IDC_CHECK_PAUSE复选按钮控件,单击它用来暂停播放歌曲IDC_CHECK_STOP复选按钮控件,单击它用来停止播放歌曲IDC_CHECK_PREV_SONG复选按钮控件,单击它用来播放上一首歌曲IDC_CHECK_BACK_FIVE_SECOND 复选按钮控件,单击它用来向后5秒播放歌曲IDC_CHECK_AHEAD_FIVE_SECOND复选按钮控件,单击它用来向前5秒播放歌曲IDC_CHECK_NEXT_SONG复选按钮控件,单击它用来播放下一首歌曲IDC_CHECK_REPEAT_PLAY复选按钮控件,单击它用来重复播放歌曲IDC_CHECK_RANDOM_PLAY复选按钮控件,单击它用来随即播放歌曲IDC_CHECK_LOOP_PLAY复选按钮控件,单击它用来循环播放歌曲IDC_CHECK_MUTE复选框控件,单击它用来设置静音IDC_CHECK_VOLUME复选框控件,单击它用来设置音量IDC_CHECK_LIST_SONG复选框控件,单击它用来显示歌曲列表控件ID描述IDC_CHECK_SET_SONG复选框控件,单击它用来设定歌曲IDC_STATIC_TEMP静态文本控件,用来实现对话框的伸缩IDC_STATIC_SONG_LISTGroup Box控件,用来显示“歌曲列表IDC_SONG_LIST列表控件,用来显示加入的MP3文件3.2 系统功能模块设计在系统功能分析的基础上,生成如图2.2所示的系统功能模块图。 图3.6 系统功能模块图 音乐播放器加入目录加入文件M3U歌曲控制静音设置音量设置歌曲列表滚动字幕3.2.1 加入文件音乐的潮流步伐是快速的,我们常常需要向音乐播放器中添加时下最新的歌曲,以便能够及时欣赏。此功能模块能够选择电脑中或者从网络上已下载的最新的歌曲,将之加入播放器的播放列表,同时更新播放列表。然后,就能开始欣赏最新的音乐了。3.2.2 加入目录我们可能将许多歌曲放在电脑中一个目录下面,如果要一首一首的向播放器中添加歌曲,显然是很麻烦的。此功能模块实现加入一个目录下面所有需要进行播放的歌曲,同时更新播放器播放列表。3.2.3 歌曲列表我们听歌曲时,有时候想知道歌曲的相关信息,播放器的歌曲列表实现了此功能。歌曲列表,此功能模块实现通过一个对话框显示歌曲的相关信息并可以进行编辑,保存,删除。图3.7 “文件信息”对话框“文件信息”对话框上的17个控件的属性如表所示:表3.3 文件信息对话框各控件及其属性控件ID描述IDC_STATIC_SONG_PATH静态文本控件,用来显示“歌曲路径:”IDC_EDIT_SONG_PATH编辑框控件,用来输入歌曲路径IDC_STATIC_FILE_INFOGroup Box控件,用来显示“文件信息”IDC_STATIC_TITLE静态文本控件,用来显示“标题”IDC_EDIT_TITLE编辑框控件,用来输入标题IDC_STATIC_ARTIST静态文本控件,用来显示“艺术家”IDC_EDIT_ARTIST编辑框控件,用来输入艺术家IDC_STATIC_ALBUM静态文本控件,用来显示“专辑”IDC_EDIT_ALBUM编辑框控件,用来输入专辑IDC_STATIC_YEAR静态文本控件,用来显示“年份”IDC_EDIT_YEAR编辑框控件,用来输入年份IDC_STATIC_COMMENT静态文本控件,用来显示“注释”IDC_EDIT_COMMENT编辑框控件,用来输入注释IDC_STATIC_GENRE静态文本控件,用来显示“流派”IDC_EDIT_GENRE编辑框控件,用来输入流派IDC_BUTTON_SAVE按钮控件,单击它用来保存歌曲文件信息IDC_BUTTON_DELETE按钮控件,单击它用来删除歌曲文件信息3.2.4 歌曲控制我们听音乐时,不免需要对歌曲进行,听到一首好听的歌曲,可以让它循环播放,不喜欢听,可以切换下一首。歌曲控制,此功能模块实现对歌曲进行打开/播放、暂停、停止、上一首、下一首、循环播放等控制。3.2.5 音量设置欣赏音乐时,不同的时间,不同的歌曲,不同的气氛,都对音量的要求是不同的。音量设置,就可以对当前正在播放的歌曲调节播放音量的大小,方便快捷的享受音乐带来的感动。3.2.6 静音设置当听音乐时,有时有紧急事情需要处理,比如打电话,需要一个相对安静的当前环境。当然,你可以将音量调到最小,不过,更便捷的方法是直接就行对当前播放歌曲的静音。静音设置,此功能模块实现对当前正在播放的歌曲直接进行静音。3.2.7 M3U每次听音乐如果都要从电脑目录中选择需要播放的音乐是很麻烦的,播放列表可以帮助解决这个问题。有时候旧的播放列表不需要了,或者需要希望新建一个播放列表,就需要用到M3U了。M3U,即音乐播放器音乐文件的播放列表。此功能模块实现对歌曲列表的新建/打开/关闭/保存。3.2.8 滚动字幕音乐播放器上的附加功能,当没有音乐播放时,向用户提供开发者的相关信息,当播放音乐时,滚动显示当下所听歌曲信息。此功能模块设置5种滚动模式来显示当前正在播放的歌曲。即无模式,左滚动(完全消失才重现)、右滚动(只滚动一次)、左右来回滚动和左滚动(还剩1/3就重现)。滚动标题具体实现:创建“滚动标题对话框,在对话框上添加9个控件,如图所示。图3.8 滚动标题“滚动标题“对话框上的9个控件的属性如表所示。表3.4 “滚动标题”对话框各控件及其属性控件ID描述IDC_STATIC_TITLE静态文本控件,用来显示滚动的标题IDC_STATIC_ROLL_MODEGroup Box控件,用来显示“滚动模式”IDC_RADIO_NONE_MODE单选按钮控件,单击它用来取消滚动控件IDC_RADIO_LEFT_ROLL_MODE单选按钮控件,单击它用来设定向左滚动模式IDC_RADIO_RIGHT_ROLL_MODE单选按钮控件,单击它用来设定向右滚动模式IDC_RADIO_LEFT_RIGHT_ROLL单选按钮控件,单击它用来设定左右滚动模式IDC_RADIO_LEFT_ROLL_ONE_THIRD单选按钮控件,单击它用来设定向左滚动1/3模式IDC_BUTTON_CONFIRM按钮控件,单击它用来确定滚动模式IDC_BUTTON_CANCEL按钮控件,单击它用来推出本窗口表3.43.3 系统运行环境 硬件平台: AMD Athlon(tm)64 X2 Dual Core processor 4000+ 2.11 GHz 1GB内存 160GB硬盘 软件平台:操作系统:Windows XP 开发工具:Microsoft Visual C+ 6.04 系统实现4.1 系统的编译和发行资源文件(就是以应用程序名和扩展名是.rc的文件)很大程度上决定了应用程序的用户界面。在VC+中资源文件包括以下内容: Accelerator /模拟菜单和工具栏选择的键盘定义 Dialog /对话框的布局及内容 Icon /图标有两种一种是16X16一种是32X32。 Menu /应用程序的主菜单及所属的弹出式菜单 String table /一些字符串,不属于C+源代码部分 Toolbar /工具条。 Version /程序的描述、版本号、支持语言信息。 除了以上信息,.rc文件还包含了以下语句: #include afxres.h #include afxres.rc 它们的作用是把适合于所有应用程序的一些通用MFC库资源包含进来,其中包括字符串、图形按钮以及打印所需的一些元素。 关于资源编辑器的使用就不多说了,因为它的操作很简单,需要注意的是虽然resource.h是一个ASCII码文件可以用文本编辑器进行编辑,但如果使用文本编辑器进行编辑的话,下次再使用资源编辑器时所做的修改有可能丢失,所以我们应该在尽量在资源编辑器中编辑应用程序的资源,新增的资源内容回自动的添加在我们的程序相应位置,例如resource.h而不用我们操心。 编译在VC+中有两种模式,一种是Release Build另一种是Debug Build。它们之间的区别在于,Release Build不对源代码进行调试,不考虑MFC的诊断宏,使用的是MFC Release库,编译十对应用程序的速度进行优化,而Debug Build则正好相反,它允许对源代码进行调试,可以定义和使用MFC的诊断宏,采用MFC Debug库,对速度没有优化。所以我们应该在Debug模式下开发应用程序,然后在Release模式下发布应用程序。在我们的工程文件夹下会有一个Debug文件夹和一个Release文件夹分别存放输出文件和中间文件。 诊断宏是我们编译程序时检测程序状态的有利工具,例如上两篇用到的TRACE宏,可以在Debug窗口获得你需要的诊断信息,而不用设置对话框之类的方法,在发布时Release会自动滤掉此信息。下面介绍如何完成本系统的编译。在Visual C+集成开发环境中,用鼠标点击菜单“组建” “移除工程配置”,在“移除工程配置”对话框中选择TopMp3Player-Win32 Debug项,如图所示。然后单击“确定”按钮,进行项目编译,最后在本系统的Debug目录下会生成可执行文件TopMp3Player.exe。图4.1 移除工程配置4.2 系统运行这款音乐播放器启动运行后,程序主界面如下所示:图4.2 音乐播放器界面4.3 系统功能界面4.3.1 加入文件功能实现功能描述:选择电脑中或者从网络上已下载的最新的歌曲,将之加入播放器的播放列表,同时更新播放列表。处理流程: 图 4.3 “加入文件”处理流程图 运行单击设定歌曲单击加入文件弹出打开文件对话框选中文件,单击打开完成添加 流程描述:用户运行音乐播放器软件,单击播放器的设定歌曲按钮,选择加 图4.4 加入文件功能演示图入文件,如图4.4所示。此时播放器调用OnAddfileMenu()函数打开加入音乐对话框:图4.5 加入音乐对话框从弹出的对话框中选择最后需要打开的文件,点击确定,从而实现添加文件的功能。上述内容详细代码见附录。4.3.2 加入目录功能描述:实现加入一个目录下面所有需要进行播放的歌曲,同时更新播放器播放列表。处理流程: 4.6 “加入目录”流程图运行单击设定歌曲单击加入目录弹出打开目录对话框选中目录,单击打开完成添加流程描述:用户运行音乐播放器软件,单击播放器的设定歌曲

温馨提示

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

评论

0/150

提交评论