1、5.1文件菜单下的详细设计 115.1.1打开文件设计 115.1.2 打开文件夹设计 135.2播放音乐的详细设计 135.3播放列表的详细设计 145.4歌词显示的详细设计 155.5播放器优化的详细设计 156结论 17参考文献 18致谢 19摘要音乐是一种声音符号,表达人的思想感情。是人们思想的载体之一。音乐是有目的和内涵的,其中隐含了作者的生活体验,思想情怀。一款好的pc音乐播放器不仅能够提供好的音乐播放效果,更能够为用户提供方便的操作。本设计利用C语言和Visual C+ 编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程中遇到
2、的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能与一体,性能良好。在开发的过程中采用瀑布模型。第一阶段首先对项目进行全面、仔细的需求分析,并准确做出项目进度安排,明确每个阶段的任务;第二阶段是进行项目分模块编码;第三阶段对项目进行全面的测试和系统集成测试。本程序利用系统的MCI(media controller interface)命令接口来编程,具有体积小、系统资源占用少等优点。关键词: Visual C+;MCI;播放器;音频AbstractThe music is a sound symbolic expressingthe m
3、ood and thinking. It is thecarrier of peoples thinking. Music is the purpose and content, which implied theauthors life experiences and feelings. A good pc music player can not only provide good music playing effect, but also provide users with convenientoperation.The player is using C language prog
4、ramming and Visual C+ 6.0 editing tools. Giving a detailed system design process, part of the interface map and run flow chart of the main function, this article discussed in detail on problems and solution method in the development process. The music playerset to play, pause, stop, fast forward, re
5、wind, and the next one, on a volume adjustment functions with one good performance. The model in the development process is Waterfall model. The first phaseis the project of comprehensive and careful needs analysis, accurately making the project scheduleand clearing each stage of the task. The secon
6、d phase of theproject is sub-module coding. The third stage, the project testing and system integration testing.This player is based on C,referring to MCI(media controller interface) from system,having many good functions such as little size,taking up less system resource and so on.Keywords:Visual C
7、+;media player;Audio 1 前言1.1软件开发背景及意义欣赏美妙的音乐是我们每个人在学习和工作之余都会做的事,面对网络上和市场上花样繁多的播放器,它们不但用起来感到容易上手,而且各种功能操作很方便。大家都用过“酷狗音乐”,“QQ音乐”,“千千静听”等非常优秀的播放器,但是在使用的过程中总会有些瑕疵,而且这些公司也没有开放它们的源代码。我设计的这个“基于C语言的音乐播放器”除了能够播放一些常见的音频格式外还易于操作和使用。此软件具备一般播放器的常用功能,界面沿用了标准的Windows窗口,主窗口的功能有对要播放文件的各种控制,所播放曲目的名称,通过主窗口能有选择的播放单个文件,
8、循环播放和单次播放目录表中的文件。采用发环Windows编程接口,操作系统是Windows XP,用到的主要技术为C语言,Visual C+编辑软件。本次毕业设计的意义在于结合C语言提供的思想和多样的媒体控制方法,结合用户对媒体播放器的要求和使用音乐播放器的习惯,设计了一款界面简单明了,操作简单实,可以实现在播放列表中加载一个或多个多媒体文件;用户能随意改变播放顺序;自动连续播放多个多媒体文件;在下次打开播放器时,能够自动加载上次的播放列表;在播放列表的多媒体文件播放完后可以选择自动关闭播放器或者循环播放等功能的媒体播放器。1.2发展现状及趋势音乐播放器的设计是一门集数字多媒体技术和计算机技术
9、于一体的综合设计。随着中国宽带网络技术、计算机技术的发展,越来越多的人们开始重视多媒体播放器的应用与发展。在当今信息社会以多媒体为特征的信息产业和信息技术的发展及应用对人类社会产生的作用及影响越来越明显,越来越重要,而音乐作为多媒体中的一个不可或缺的部分能改变信息的包装,实现了知识信息数字化,为人们获得知识信息提供了极大的方便和无尽的乐趣。友好的人机界面、诱人的电子游艺节目、各种各样的多媒体教学软件、五花八门的信息家电和方便高效的网上查询、身临其境的多媒体导购系统等等,都渗透着多媒体的作用,它将人们带进了一个有声有色的世界。与此同时,多媒体的应用和发展,极大地促进了各行各业的相互渗透和飞速发展
10、,极大的改变了人类社会的工作环境和生活方式。可以毫不夸张地说,多媒体产业的出现和发展,不仅掀起了计算机工业的一次革命浪潮,也正在深刻地影响着人类社会发生巨大的变革。多媒体技术的发展在很大程度上依赖于多媒体软件开发的水平。多媒体技术是当今信息技术领域中发展最快、最活跃的技术,是新一代电子技术竞争和发展的焦点。多媒体技术融计算机、文本、声音、动画、图像、视频和通信等多种功能于一体,借助于日益普及的高速信息网,可以实现计算机的全球联网和信息资源的共享,因此被广泛的应用于咨询服务、教育、图书、通信、金融、军事、医疗等诸多行业,并正潜移默化地改变着我们的生活面貌。人类社会逐渐进入信息化的时代,社会分工越
11、来越明细,人际交往越来越频繁,分布性、交互性、群体性和协同性将成为人们劳动方式和生活方式的基本特征,其中大多数工作都需要群体的共同努力才能完成。但在现实生活中影响和阻碍上述工作方式的因素有很多,例如打电话时对方不在。即便是电话交流也只能通过声音,却很难看见一些重要的图纸资料,如果要面对面的交流讨论,需要昂贵的差旅费用和费时的长途旅行,这种方式不仅造成了效率低、费时长、而且开销大。如今,随着通信技术和多媒体计算机技术的发展,两者相结合形成的分布式多媒体信息系统和多媒体通信较好地解决上述问题。随着Internet的逐渐普及和网络技术的不断发展,人们对网络产品的需求也在不断增长。如今网络上流行的音乐
12、播放器虽然很多,但或多或少都存在一些缺陷,例如:没有记忆播放的功能;下一次播放的时候不能从上一次离开的曲目开始;不能有效的保护媒体播放器里面的歌曲专有性;没有身份认证功能;界面太复杂以及操作太难;功能组合与用户的习惯相违背等。随着人们对娱乐要求的不断提高,一款别致的、贴近用户操作习惯的音乐播放器非常值得去研究和开发。1.3主要研究方法及过程研究方法:主要采用行动文献法和研究法。文献法,广泛收集整理文献资料,如经典期刊,国内外前沿研究,以及指导老师推荐的书目,为今后项目开发提供具有时代性,创造性的正面指导。行动分析法,制定个性研究方案,通过我们日常实践情况进行分析,再研究调整重新进行实践。首先,
13、了解有关音乐播放器的有关技术,并对现在主流的音乐播放器进行测试并将它们不足之处改进。并将经验总结、记录,形成有价值的文字。研究手段:主要是结合之前开发经验,联系项目参考文献和需求分析,根据项目的特点选择适当开发工具(VisualC+)和编程技术(编程语言C/C+)制定项目开发方案。实验方案:采用瀑布模型。首先对项目进行全面、仔细的需求分析,并准确做出项目进度安排,明确每个人的职责和任务。第二阶段,是进行项目分模块编码。第三阶段,选择适当的测试方法,在完成项目编码后,进行软件测试,并准备填写测试用例。对项目进行全面的测试和系统集成测试。2 相关技术简介2.1 VC技术应用的基本现状Microso
14、ft公司1998年推出了Visual C+60,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开发的可视化编程的集成环境。与VC+50的最大不同之处是它的帮助功能更强大,MSDN(Microsoft Developer Networking)为包括VC+60在内的所有微软的程序产品提供在线帮助;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC+编程更加容易。所以VC60可谓是Microsoft公司的王牌产品,编程功能强大而赢得广大程序
15、的偏爱。多媒体技术已经在如下若干方面开展了有效的应用:多媒体管理信息系统、展示系统;多媒体电子出版物(Title);计算机辅助教学、教育培训;计算机艺术制作、设计;计算机娱乐游戏、双向电影;协同工作。有发下三大发展趋势:进一步完善计算机支持的协同工作环境;智能多媒体技术;把多媒体信息实时处理和压缩编码算法集成到CPU中。2.2 MCI命令接口编程Windows MCI(media control interface)是控制多媒体设备的高层、通用的命令接口。MCI可控制所有Windows能驱动的多媒体设备,包括CD音频(CDAudio)、数字视频、动画、数字化波形声音、MIDI音序器、录像机及影
16、碟机等。MCI包含在Windows系统的MMSYSTEM.DLL动态链接库中,有以协调多媒体事件和MCI设备驱动程序之间的通信。一些MCI设备驱动程序,如影碟机设备驱动程序,可以直接控制目标设备;而另外一些MCI设备驱动程序,如Wave和MIDI设备驱动程序,可通过MMSYSTEM中的函数,间接控制目标设备;还有一些MCI设备驱动程序则提供与其他Windows动态链接库连接的高层接口。Microsoft提供的MMSYSTEM.H文件中定义了调用了MCI功能的数据类型和函数原型,在使用MCI功能的任何源模块中都应包含该文件。2.2.1MCI命令应用程序能过MCI设备发送命令(命令消息或命令字符串
17、)来控制MCI设备,MCI命令可以分为4类,如下所术。1) 系统命令:直接由MCI解释并由系统处理,是不传送到MCI设备的命令。2) 通用命令:所有MCI设备都支持的MCI命令。3) 可选命令:MCI设备可选择使用的MCI命令。4) 专用命令:针对某类MCI设备或集合的专有MCI命令。MCI定义了两种接口方式,即命令消息方式和命令字符串方式。相应地,MCI命令可分为命令消息和命令字符串。主要的MCI命令及分类如表2所示,这些命令可能具有其相应的扩展形式。表 3-2 MCI命令列表MCI命令消息MCI命令字符串MCI命令说明MCI命令类型MCI_SYSINFOSYSINFO返回有关MCI设备的停
18、息系统命令MCI_BREAKBREAK为一个指定的MCI设备设置一个终止键MCI_SOUNDSOUND播放一段Windows指定的系统声音MCI_CLOSECLOSE关闭一个MCI设备通用MCI_GETDEVCAPSGETDEVCAPS获得一个MCI设备的性能参数MCI_INFOINFO从一个MCI设备得到有关的信息MCI_OPENOPEN初始化一个MCI设备MCI_STATUSSTATUS从一个MCI设备返回有关的状态信息MCI_LOADLOAD从一个磁盘文件中加载数据可选MCI_PAUSEPAUSE暂停播放数据MCI_PLAYPLAY开始播放数据MCI_RECORDRECORD开始记录数据
19、MCI_RESUMERESUME重新开始播放或记录MCI_SAVESAVE将数据存储到磁盘文件中MCI_SEEKSEEK向前或向后检索MCI_SETSET设置设备信息MCI_STOPSTOP停止播放或记录2.2.2MCI命令消息接口方式MCI命令都可以带两个标志命令来控制命令的方式,即“wait”和“notify”。它们在命令消息和命令字符串接口的形式和意思如表3所示。表 3-3MCI标志命令命令消息命令字符串功 能MCI_WAITwait通知MCI设备等,MCI命令执行完后,才能将控制权还给应用程序MCI_NOTIFYnotify通知MCI设备等,立刻将控制权交给应用程序,但当命令执行完后,
20、向应用程序发送MM_MCINOTIFY消息所有MCI函数都以mci为前缀。对应于MCI命令消息和命令字符串接口方式,MCI函数也分为两类,即命令消息函数和命令字符串函数。在MMSYSTEM.H中定义了这些函数的原型。MCI函数如表4所示。表 3-4MCI函数函数名类型mciSendCommand发送命令消息命令消息接口函数mciGetDeviceID获取MCI设备的IDmciSetYieldProc设定一个回调函数,在结束带wait标志的命令时调用mciGetYieldProc获取当前的回调函数mciSendString发送命令字符串命令字符串接口函数mciGetErrorString获取当前
21、MCI错误的字符串描述公用函数MCI命令消息接口方式利用消息和数据结构来给多媒体设备发送命令和接收MCI设备传来的信息。这种方式的接口函数主要有3个,即mciSendCommand,mciGetDeviceID和mciGetErrorString。它们的函数原型如下:MCIERROR mciSendCommand ( MCIDEVICEID IDDevice, /设备ID UINT uMsg, /命令消息 DWORD fdwCommand, /命令消息标志 DWORD dwParam /命令消息使用的结构参数地址);MCIDEVICEID mciGetDeviceID( LPCTSTR lps
22、zDevice /设备类型BOOL ( DWORD fdwError, /错误代码 LPTSTR lpszErrorText, /错误描述 UINT cchErrorText /错误描述长度);mciGetDeviceID通过传送MCI设备名lpszDevice来获取MCI_OPEN命令消息找开MCI设备的标识号wDeviceID,其值可用于mciSendCommand的参数wDeviceID。mciSendCommand用于向标识号为wDeviceID的MCI设备发送命令消息uMsg。当用送MCI_OPEN命令消息打开一个设备时,将自动创建一个设备标识号。如果设备打开成功,可以从MCI_OP
23、EN_PARMS结构的wDeviceID数据域中取得该设备的标识号,该值将保存以供后续的MCI命令使用。如果mciSendCommand调用成功,则返回值为0;否则表示设备驱动出错,这时可用mciGetErrorString来取得错误信息的文字描述。MCI提供一个名为MCI_ALL_DEVICE_ID的特殊设备标识号。当前所有已打开的MCI设备都将接收到对MCI_ALL_DEVICE_ID发送的任何MCI命令。使用任何一个MCI设备前都应先用MCI_OPEN打开它。打开MCI设备时,要求指定相应的MCI_OPEN_PARMS结构。如果打开设备成功,则该结构的wDeviceID域返回MCI设备的
24、标识号ID。使用MCI_OPEN命令消息时可使用的命令消息中表5所示。MCI_OPEN_PARMS结构定义如下:typedef struct DWORD dwCallback; /回调窗口句柄 MCIDEVICEID wDeviceID; /设备打开成功,返回的设备号 LPCSTR lpstrDeviceType; /设备类型 LPCSTR lpstrElementName; /复合设备的设备元素,通常为文件名 LPCSTR lpstrAlias; /指定的设备别名 MCI_OPEN_PARMS;表3-5MCI_OPEN命令消息标志消息标志意 义MC_OPEN_ALIASMCI_OPEN_PA
25、RMS结构的lpstrAlias域中指定了设备别名MC_OPEN_ELEMENTMCI_OPEN_PARMS结构的lpstrElementName域中指定了设备元素MC_OPEN_SHAREABE按共享设备方式打开设备MC_OPEN_TYPEMCI_OPEN_PARMS结构的lpstrDeviceType域中指定了设备类型MC_OPEN_TYPE_IDMCI_OPEN_PARMS结构的lpstrDeviceType域中指定了设备类型ID打开一个简单的MCI设备不需要指定设备元素,即不需要指定一个数据文件,所以可以仅仅指定MCI_OPEN_PARMS结构中的wDeviceID和lpstrDevi
26、ceType两个数据域。要打开一个复合的MCI设备,必须指定设备元素数据域lpstrElementName和设备类型数据域lpstrDeviceType。对于打开复合MCI设备,有以下3种方式可供选择:1) 为确定MCI设备的性能,可以只指定设备的类型来打开MCI设备。这时,只允许确定MCI设备的性能,然后关闭设备,不般不能进行其它的操作。2) 为使一个设备元素与指定设备相联系,应同时指定设备元素(数据文件名)和设备类型。这时可对设备进行相应的各种操作。3) 在使用隐含的MCI设备时,可只指定MCI设备(数据文件名),而把设备类型指定为NULL;MCI将根据设备元素的扩展名从系统定义中选择隐含
27、约定的MCI设备。应用程序在使用完一个MCI设备后应明确地关闭该MCI设备。MCI_CLOSE命令消息用于关闭并释放MCI设备,即取消应用程序对MCI设备或设备元素的访问权。当用MCI_SYSINFO命令消息获取MCI设备系统信息时,需要在mciSendCommand的dwParam参数中指定MCI_SYSINFO_PARMS结构的地址,系统信息将通过该结构返回。与MCI_SYSINFO命令消息相关的消息标志如表6所示。MCI_SYSINFO_PARMS结构定义如下:/回调窗口句柄 LPSTR lpstrReturn; /返回信息缓冲区地址 DWORD dwRetSize; /返回信息大小 D
28、WORD dwNumber; /索引号 UINT wDeviceType; MCI_SYSINFO_PARMS;表 3-6MCI_SYSINFO命令消息标志MCI_SYSINFO_QUANTITY返回指定的设备类型的数目,如与MCI_SYSINFO_OPEN一起使用,则仅返回已打开的设备的数目MCI_SYSINFO_NAME返回设备名,如与MCI_SYSINFO_OPEN一起使用,则仅返回已打开的设备的名称MCI_SYSINFO_OPEN仅返回已打开设备的信息MCI_SYSINFO_INSTALLNAME指定设备的安装名称在使用MCI设备时,还应注意共享、等待与通告等标志的使用。2.2.3MC
29、I命令字符串接口方式MCI命令字符串使用ASCII字符串来发送驱动MCI设备的命令,这种方式采用的接口函数有mciSendString、mciGetErrorString。用于向MCI设备发送命令字符串,其函数原型如下:MCIERROR mciSendString( LPCTSTR lpszCommand, /指向一个以NULL结尾的MCI命令字符串,格/式如下:comm.and device_name argument LPTSTR lpszReturnString, /指向一个用于存储MCI命令执行后返回的/字符串信息的缓冲区 UINT cchReturn, /缓冲区大小 HANDLE hwndCallback /指定一个接受MM_MCINOTIFY的窗口句柄,/非MCI命令中包含了notify标志,否则该参数可忽略。3需求分析3.1功能需求3.1.1 播放器的基本控制需求根据项目的目标,我们可获得项目系统的基本需求,以下从不同的角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成以下几部分来概括,即播放器的基本控制需要,播放列表管理需求如图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1