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

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

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

专业:计算机科学与技术学号:

学生:指导教师:

摘要:作为一项与人们生活息息相关的应用,音乐播放器在人们的生活中发挥着不可替代的作用。本播放器在Linux(Debian 6.0)操作系统平台下进行开发,使用Qt程序开发框架实现播放器的GUI设计,并用Phonon多媒体API实现多媒体控制,最后再用C++编程实现。本播放器实现了音乐播放器的基本功能,包括“播放”、“暂停”、“上一曲”、“下一曲”、“添加文件”、“删除文件”、“切换背景图标”、“最小化到托盘”等功能。测试表明,本播放器能够流畅地运行,并能很好地实现各项功能,并且有一定的容错能力,达到了设计预期的效果。同时,本播放器在稳定性、经济成本等方面都有不错的表现。

关键词:音乐播放器;Linux;Qt;Phonon

The Design and Implementation of Music Player Based

on Linux

Specialty: Student Number:

Student: Supervisor:

Abstract: As an application, which is closely related to the people's lives, music player plays an irreplaceable role in people's life. This Music player is developed under Linux (Debian 6.0) operating system with the Qt application development framework implementing the player's GUI design. Phonon multimedia APIs is used for multimedia control and at last coded by C++ programming language. The music player has realized basic functions of ordinary music player, including 'Play' function, 'Pause' function, 'Previous track' function, 'Next track' function, 'Add files' function, 'Delete files' function, 'Switch background icon' function, 'Minimize to tray' function and so on. The testing results show that the player can run smoothly and realize all of functions mentioned before. The player is provided with fault tolerance as well. To sum up, the player achieves the design's expected result. At the same time, the music player has a well performance in operational stability and economic cost.

Key words:Music player; Linux;Qt; Phonon

目录

绪论 (1)

1 系统开发平台介绍 (2)

1.1 Linux简介 (2)

1.2 Qt介绍 (3)

1.3 集成开发环境 (3)

1.4 Phonon简介 (4)

2 系统分析 (5)

2.1 播放器举例 (5)

2.2 功能需求分析 (5)

2.2.1 基本功能 (6)

2.2.2 播放器基本设置 (6)

2.2.3 快捷键设置 (6)

2.2.4 上下文菜单设置 (6)

2.3 可行性分析 (6)

2.3.1 经济可行性 (7)

2.3.2 技术可行性 (7)

2.3.3 应用分析 (7)

2.4 总结 (8)

3 系统设计 (9)

3.1 Qt信号与槽机制介绍 (9)

3.1.1 信号 (9)

3.1.2 槽 (10)

3.1.3 信号与槽的关联 (11)

3.1.4 Qt信号和槽机制的优点 (11)

3.2 函数 (12)

3.2.1 Phonon媒体框架 (12)

3.2.2 Qlist容器类 (15)

3.3 播放器的基本功能 (16)

3.3.1 建立媒体对象 (16)

3.3.2 播放控制 (16)

3.4 播放器设置 (20)

3.4.1 QSettings介绍 (20)

3.4.2 QSettings的使用 (21)

3.4.3 QSettings的乱码问题 (22)

3.5 播放器界面设计 (22)

3.5.1 设置背景 (22)

3.5.2 设置系统托盘图标 (23)

4 系统测试 (24)

4.1 测试介绍 (24)

4.1.1 软件测试的目的 (24)

4.1.2 测试的方法 (24)

4.2测试设计 (25)

4.2.1 添加文件 (25)

4.2.2 删除歌曲 (26)

4.2.3 播放歌曲 (26)

4.2.4 测试结果 (28)

4.3 总结 (28)

结论 (29)

参考文献 (30)

致谢 (32)

绪论

随着经济的发展,人类社会发生了翻天覆地的变化,人民生活水平得到了提高,生活节奏变得更快,人们在精神上的需求甚至超过了物质上的需求,而音乐便是他们精神生活中不可缺少的一部分。现代科学技术不断发展,人们开始使用网络媒介和各种数据存储设备,使得各种音频和视频资源的传播更为便捷、迅速、广泛,于是各种音乐播放器也紧跟着发展了起来。音乐播放器作为一种用于播放各种音乐文件的多媒体播放软件,已经成为了大家电脑里面不可或缺的一项应用。因此设计一款优良的音乐播放器软件成了许多公司和个人的目标。

网络上已经存在着成各式各样的音乐播放器。但是,它们之中有许多都是根据特定的操作系统来开发的,其中很大一部分都没有实现跨平台的应用,为了应对不同的系操作统,它们只能重新开发新的版本。

本文主要研究的就是基于Linux的音乐播放器。它基于Qt开发框架,可以实现跨平台应用,能够在任何它所支持的平台上编译、执行相同的程序代码,而不需要修改源代码。另外,它还能依照不同的平台而表现出该平台特有的图形界面风格。

研究基于Linux的音乐播放器具有一定的意义。虽然Linux和Qt已经发展了很长的一段时间,但是对于很多国内计算机专业的大学生来说,它们还是比较陌生的事物。计算机行业是一个飞速发展的行业,我们必须跟上它的步伐,才不会被社会淘汰。

本文的目的是通过对流行音乐播放器的研究,设计并实现一款音乐播放器。本音乐播放器在播放音频文件方面主要选择播放本地文件,在功能方面主要具备一些基本的音乐操作功能,如:暂停、播放、音量调节、拖动、停止等。它在稳定性、视觉效果、歌曲库的大小等方面可能远不如当今的许多播放软件,但是它小巧并且易移植,能够实现跨平台运行。

1 系统开发平台介绍

1.1 Linux简介

Linux是一种自由和开放源码的计算机操作系统。目前存在着许多不同的Linux,但它们全都使用了Linux内核。Linux可安装在各种各样的电脑硬件设备,从手机、平板电脑、路由器和影音游戏控制台,到桌上型电脑,大型电脑和超级电脑。Linux是一个领先的操作系统,在2011年11月发布的TOP500中有91.4%的超级计算机使用的是Linux操作系统[1]。

Linux操作系统也是自由软件和开放源代码发展中最著名的例子。只要遵循GNU 通用公共许可证,任何人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统(也被称为GNU/ Linux)。通常情况下,Linux被打包成供桌上型电脑和服务器使用的Linux发行版本。一些流行的主流Linux发行版本,包括Debian(及其衍生版本Ubuntu),Fedora和openSUSE等[2,3]。

Linux的发展现状

目前流行的桌面操作系统主要包括两大类:一类是主流商业桌面系统,包括微软的Windows系列、Apple的Macintosh等;第二类基于自由软件的桌面操作系统,特别是Linux桌面操作系统。近年来,特别在国内市场,Linux桌面的发展趋势非常迅猛。国内如中标软件、红旗等系统软件厂商推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。国外的Novell(SuSe)、Sun公司也相继推出了基于Linux的桌面系统。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows 系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面,如音乐播放器。

Linux发展非常迅速,这与它具有的良好特性是分不开的。Linux具有的主要特性如下[4]:

(1)开放性。系统遵循世界标准规范,凡遵循国际标准所开发的硬件和软件,都能

彼此兼容。

(2)多用户。系统资源可以被不同用户各自拥有和使用,即每个用户对自己的资源

有特定权限,互不影响。

(3)多任务。能够同时执行多个程序,而且各个程序相互独立运行。

(4)设备独立性。将外部设备统一视为文件,只要安装它们的驱动程序,任何用户

都可以像使用文件一样操纵、使用设备,而不必知道它们的具体存在形式。

1.2 Qt介绍

Qt是一个跨平台的C++应用程序开发框架[5]。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。Qt被OPIE、Skype、VLC media player、Adobe Photoshop、VirtualBox 与Mathematica所使用。它是诺基亚(Nokia)的Qt Development Frameworks部门的产品。Qt使用标准的C++。通过语言绑定,其他的编程语言也可以使用Qt。

Qt是自由且开放源代码的软件,在GNU较宽松公共许可证条款下发布。所有版本都支持广泛的编译器,包括GCC的C++编译器和Visual Studio。使用Qt开发的软件,相同的程序码可以在任何支持的平台上编译与执行,而不需要修改源代码。会自动依平台的不同,表现平台特有的图形界面风格。除了C++外,Qt还为其它多种计算机语言提供了应用程序接口,您也可以使用这些语言开发Qt应用程序[6]。

Qt主要的优势如下:

(1)面向对象。Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对

于用户开发来说是非常方便的。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。

(2)丰富的API。Qt包括250个以上的C++类,还提供基于模板的collections,

serialization,file,I/O device,directory management,date /time类。甚至还包括正则表达式的处理功能。

1.3 集成开发环境

Qt Creator是一款跨平台的集成开发环境,Qt Creator 是Qt 被Nokia收购后推出的一款新的轻量级IDE。此IDE 能够跨平台运行,支持在桌面环境,如:Windows、Linux/X11和Mac OS。与移动设备,如:Symbian、Maemo和MeeGo上建构和运行Qt 应用程序。允许开发者为多桌面环境及移动设备平台创建应用程序。它包括一个可视化侦错工具和整合的GUI版面和外形设计师。这个编辑器的功能包括语法高亮度显示和自动完成。根据官方描述,Qt Creator 的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。Qt Creator在Linux上,使用GCC的C++编译器。在Windows,预设安装它可以使用MinGW或MSVC。从原始码编译时,也

可以使用cdb(Microsoft Console Debugger)。

在功能方面,Qt Creator 包括项目生成向导、高级的C++ 代码编辑器、浏览文件及类的工具、集成了Qt Designer、Qt Assistant、Qt Linguist、图形化的GDB 调试前端,集成qmake 构建工具等。

Qt Creator主要是为了帮助新Qt 用户更快速入门并运行项目,还可提高有

经验的Qt开发人员的工作效率。Qt Creator主要功能和优势如下:

(1)使用强大的C++代码编辑器可快速编写代码。语法标识和代码完成功能输

入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配

和括号选择模式高级编辑功能。

(2)使用浏览工具管理源代码。集成了领先的版本控制软件,包括Git、Perforce

和Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不

同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换。

(3)为Qt跨平台开发人员的需求而量身定制。集成了特定于Qt的功能,如信

号与槽(Signals/Slots)图示调试器,对Qt类结构可一目了然集成了Qt Designer可视化布局和格式构建器只需单击一下就可生成和运行Qt项目。

1.4 Phonon简介

Phonon是KDE(Kool Desktop Environment)的多媒体API, 为使用音频和视频的应用程序开发提供的一个框架[7]。应用程序不用去管多媒体播放是通过什么实现的(如GStreamer),只需调用相应的接口就行,但这中间需要一个中转,被称为backend。Phonon提供一个稳定的API允许KDE4独立于任何一个声音系统服务器,Phonon从一开始就被设计成Qt函数的风格,Phonon并非只能运行于Unix系统,他的后端可以是在其它平台如Microsoft Windows 并提供相同的功能。正是由于Phonon能够实现跨平台使用,使得Qt4.4和之后版本使用了Phonon,作为跨平台的音频和视频播放。

Phonon让各种后端提供界面给开发者所谓的“引擎”,每个引擎运作在一个具体的后端。每个后端都可让Phonon控制基本功能,如播放、暂停和搜寻。Phonon也支持更高层次的功能,如让音轨转化之间变微弱。使用Solid,Phonon将给予用户更多配件的控制能力如耳机、扬声器、麦克风。

2 系统分析

2.1 播放器举例

Windows下的音乐播放器:

Windows Media Player 是一款Windows系统自带的播放器,支持通过插件增强功能,在V7及以后的版本,支持换肤。1992年微软在Windows 3.1当中捆绑了WMP1.0,使Windows3.1成为第一代支持多媒体的Windows系统。后来,在Windows 98当中内置了WMP64,这个版本存在于后续的操作系统中,并被一直保留至今。

另外,Windows有千千静听、QQ音乐、酷狗音乐等优秀播放器,功能十分完善,界面十分华丽,设计人性化,操作灵活、简单,种类十分丰富。

Linux下的音乐播放器:

(1)Audacious与其它播放器的不同之处在于,它除了支持UTF-8字符集之外,还提

供其它字符集的支持,这样能比较好的解决中文乱码的问题。更重要的一点是,它能很好的播放APE格式的音乐。

(2)Juk是一个很易用的播放器,而且界面方面做得比较美观。但似乎它不能直接读

取windows分区里的音乐文件,如果音乐都在NTFS分区里,会给用户带来不

少不便。

(3)Bmpx相对前面两者的特色在于最小化到托盘后的播放提示。

(4)Rhythmbox 是一款集成化的音乐管理工具,创建灵感来源于iTunes播放器,以

GNOME桌面系统和GStreamer媒体框架为基础。不仅可以播放多种格式的音乐

文件,还可以连接到互联网中接受网络收音机或者到网上音乐商店购买音乐[4]。

虽然Linux上的音乐播放软件并不缺乏,但是很多的软件技术层面并不是非常超前,只是简简单单,一切都由插件搞定,只是靠它整合的完整性让人简简单单完成音乐播放的任务。在缺乏商业化因素的支持下,Linux音乐播放器的用户体验并不高。由于Linux 在图形界面、用户操作方面的劣势,现在的Linux应用程序在在向windows学习,应用程序界面更加丰富,更加美观,更加人性化,种类也更加丰富。开发者也在想更加团队、专业发展。

2.2 功能需求分析

音乐播放器作为一款必不可少的应用程序,广泛应用于电脑、智能手机、嵌入式设备,有着庞大的客户人群。本文设计并实现一款简单的播放器,能够实现音乐播放器的

一般基本功能。现将本播放器能够实现的功能做一些分析。

2.2.1 基本功能

实现音频的播放,这是开发一款音乐播放器的最基本要求,能够实现音频播放、暂停、停止、进度拖动、音量控制、上一首、下一首等基本功能。同时,在用户使用播放器的过程中,能够打开本地音频文件,将文件动态的添加到播放器当前播放列表,实现文件的打开操作[8]。

为了方便用户的使用,本文能够将用户的播放列表存储在本地文件中,当系统下次启动的时候,能够获取用户的历史播放列表,并且将其添加进播放器的播放列表中。同时,如果用户想删除某首歌曲,可以将其从当前播放列表中删除。为了能够使用户清楚自己的播放历史,播放器实现了播放历史记录功能,将用户的播放历史记录在本地文件中,可以方便用户的查看。

播放器还有一些其他的功能,如:双击播放器列表实现文件的播放,系统关闭提示,最小化到系统托盘,鼠标拖动窗口等。

2.2.2 播放器基本设置

为了让用户对播放器有更好的体验,本文实现了对播放器的设置功能,能够对播放器进行一些基本设置,将设置结果保存在播放器的配置文件中,每次播放器启动的时候,首先读取配置文件,根据其中的内容,配置播放器的相关项。

能够实现的基本配置有:背景图标的切换、语言切换、默认打开文件路径、是否最小化、播放器关闭提示。

2.2.3 快捷键设置

为了方便用户的操作,现在绝大部分的应用软件都设置有快捷键操作,能够实现对软件的快捷操作。本文也根据需要设置了相关的快捷键,实现对播放器的控制。

2.2.4 上下文菜单设置

在播放器的设计过程中,参照主流音乐播放器的一些特点,为本播放器的托盘图标,播放列表,和播放器的主窗体设置有相关的上下文菜单。当用户点击鼠标右键,能够弹出相应的菜单选项,提供不同的操作。比如,当用户右键播放器托盘图标的时候,弹出的菜单有:最小化、复原、设置等,当用户右击播放列表,弹出菜单有:删除此歌曲、删除全部歌曲、打开文件等功能。

2.3 可行性分析

对于基于Linux的音乐播放器的设计与实现的可行性,本文将从经济、技术和应用

三方面进行分析。

2.3.1 经济可行性

Debian是一种自由和开放源码的类Unix操作系统,系统软件本身的安装和使用都不需要任何费用。

Qt分为两种版本:

(1)Qt商业版。提供给商业软件开发。它们提供传统商业软件发行版并且提供

在协议有效期内的免费升级和技术支持服务。

(2)Qt开源版。仅仅为了开发自由和开放源码软件,提供了和商业版本同样的

功能。GNU通用公共许可证下,它是免费的。

本系统采用Qt开源版,不需要任何费用。所以,基于Linux的音乐播放器在开发过程中,不需要任何的附加费用,能够实现“零成本”的可行性。

2.3.2 技术可行性

首先,基于Linux的音乐播放器,实现一般音乐播放器的基本功能(播放,暂停,快进),没有十分复杂的其他功能,如:网络下载,歌词下载等,这些都能够运用所学的知识实现,这些功能都可以通过调用Phonon的API来实现。

Qt对于大多数人来说,还是一个新事物,但是它只是一个跨平台应用程序和UI开发框架,而且这个项目对于Qt的运用不是很深入,只是对于某一些基本的理论知识的学习和运用。同时在Linux下使用Qt的集成开发环境Qt Creator与在windows平台下没有太大差别。此项目使用过的编程语言是C++,作为一项高级语言,与C、C#、Java 都有很多相似性。

最后,Linux、Qt作为开源软件,在网络上有许多开源社区,有很多开源爱好者,能够查到许多相关的源代码,通过充分运用这些网络资源,对自己完成设计有很大帮助。

2.3.3 应用分析

本文是在Debian操作系统平台上进行的开发,使用Qt实现C++图形用户界面开发,Phonon实现多媒体编程。由于Qt和Phonon都具有跨平台的特性,使用Qt开发的软件,相同的程序代码可以在任何支持的平台上编译与执行,而不需要修改源代码。只要操作系统安装有Qt和Phonon的相关类库,本播放器能够在Linux、Windows、Mac OS X等操作系统上使用。所以能够支持播放器的操作系统十分广泛。本播放器实现了大部分基本功能,能够满足用户一般的播放需要。

资源获取途径方面,本播放器可以不受限制地获取本地计算机上的所有资源,同时

资源获取方便快捷。界面观感方面,桌面应用程序除了自身的菜单栏和工具栏之外,没有多余的菜单栏和工具栏。

2.4 总结

本课题通过对Linux环境下的音乐播放器技术的相关研究,了解了Linux平台下的体系结构,以及QT开发平台使用,掌握了音乐播放器的实现原理以及过程,从而设计出一款用户界面友好的音乐播放器。通过以上分析,播放器的功能不是非常复杂,完成这个音乐播放器的知识大都已经具备,所以能够较好的完成。

主要研究内容包括以下几个方面:

(1)查找相关书籍与文献,了解LINUX的构架并搭建LINUX平台。

(2)查找相关资料,了解QT Creator的开发方式以及QT库的使用,搭建QT平台。

(3)查找现阶段基于LINUX平台手机音乐播放器发展现状以及相关功能。

在上述基础上,做出音乐播放器的相关功能如下:

(1)美观、时尚的操作界面。

(2)滚动显示正在播放的歌曲及其长度信息。

(3)音频的播放、暂停、停止、快进等功能。

(4)显示歌曲的播放进度。

(5)通过播放列表来选择播放曲目。

(6)音乐播放器的控制设置功能。

(7)音乐播放器的控制设置功能等。

在LINUX平台上完成该课题的软件,然后进行相应的软件测试。

3 系统设计

3.1 Qt信号与槽机制介绍

在以往的GUI用户界面中,用户操作一个窗口部件时,需要其他窗口部件的响应或者能够激活其他操作。在程序开发中,经常使用回调(callback)机制来实现。但是,QT不同于回调机制,他使用信号与槽机制。

信号和槽机制是QT 的核心机制,要精通QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是QT 的核心特性,也是QT 区别于其它工具包的重要地方。信号和槽是QT 自行定义的一种通信机制,它独立于标准的C/C++ 语言,因此要正确的处理信号和槽,必须借助一个称为moc(Meta Object Compiler)的QT 工具,该工具是一个C++ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码[9]。

在人们熟知的很多GUI 工具包中,窗口小部件(widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生core dumps。

所有从QObject 或其子类(例如Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射(emit) 出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。

可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。

3.1.1 信号

当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号与槽机制完全独立于

任何GUI 事件循环。只有当所有的槽返回以后发射函数emit()才返回。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行,哪个后执行。

信号的声明是在头文件中进行的,QT 的signals 关键字指出进入了信号声明区,随后即可声明自己的信号。例如,下面定义了两个信号:

signals:

void mySignal();

void mySignal(int x);

在上面的定义中,signals 是QT 的关键字,而非C/C++ 的。接下来的一行void mySignal() 定义了信号mySignal,这个信号没有携带参数;接下来的一行void mySignal(int x) 定义了重名信号mySignal,但是它携带一个整形参数,这有点类似于C++ 中的虚函数。从形式上讲信号的声明与普通的C++函数是一样的,但是信号却没有函数体定义。另外,信号的返回类型都是void,不要指望能从信号返回什么有用信息。信号由moc自动产生,它们不应该在.cpp文件中实现[6]。

3.1.2 槽

槽是普通的C++ 成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。

既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的C++ 成员函数一样,槽函数也分为三种类型,即public slots、private slots 和protected slots。

(1)public slots类型。在这个区内声明的槽意味着任何对象都可将信号与之相连接。

这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与

槽进行连接以便信息能够正确的传递。

(2)protected slots类型。在这个区内声明的槽意味着当前类及其子类可以将信号与

之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向

外部。

(3)private slots类型。在这个区内声明的槽意味着只有类自己可以将信号与之相连

接。这适用于联系非常紧密的类。

槽也能够声明为虚函数,这也是非常有用的。

槽的声明也是在头文件中进行的。例如,下面声明了两个槽:

public slots:

void mySlot();

void mySlot(int x);

在上面的定义中,slots是QT 的关键字。接下来的一行void mySlot() 定义了槽mySlot,这个槽没有携带参数;接下来的一行void mySlot(int x)定义了重名槽mySlot,但是它携带一个整形参数。槽的返回类型都是void。

3.1.3 信号与槽的关联

信号是一个特定的标识,槽就是一个函数,却与一般函数不同,槽函数能和信号关联,也能够被直接调用。Qt利用信号与槽(signals/slots)机制取代传统的callback来进行物件之间的沟通。当操作事件发生的时候,物件会发送出一个信号(signal);而槽(slot)则是一个函式接受特定信号并且执行槽本身设定的动作。

在程序中,使用QObject::connect()函数来将信号与槽关联。信号与槽的关联关系有以下几种模式:

(1)一个信号和槽关联。

(2)一个信号和多个槽关联。

(3)多个信号和一个槽关联。

一个信号与多个槽关联的情况下,当发出信号的时候,与此信号关联的各个槽之间以任意的先后顺序立即执行,即:槽函数之间的执行顺序是随机的,与信号和槽关联的先后没有关系。同时,信号和槽机制是完全和GUI事件完全独立的,槽函数独立循环。

信号在任何执行点上皆可发射,甚至可以在槽里再发射另一个信号,信号与槽的连结不限定为一对一的连结,一个信号可以连结到多个槽或多个信号连结到同一个槽,甚至信号也可连接到信号。

3.1.4 Qt信号和槽机制的优点

信号和槽机制有以下优点[10]:

(1)类型安全的。以往的callback缺乏类型安全,在呼叫处理函数时,无法确定是

传递正确型态的参数。信号和其接受的槽之间传递的资料型态必须要相符合,需要关联的信号和槽的签名必须是等同的,即信号的参数类型和参数个数与接

受该信号的槽的参数类型和参数个数相同;不过,一个槽的参数个数是可以少于信号的参数个数,但缺少的参数必须是信号参数的最后一个或几个参数。如果信号和槽的签名不符,编译器会报错。信号和槽可接受任何数量、任何型态的参数,所以信号与槽机制是完全类型安全。

(2)松散耦合的。Qt信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无

需知道是哪个对象的哪个槽需要接收它发出的信号,它需要做的是在适当的时间发送适当的信号就可以了,而不需要知道也不必关心它的信号有没有被接收到,更不需要知道是哪个对象的哪个槽接收到了信号,也就是说一个信号可以呼叫所有可用的槽。同样的,对象的槽也不知道是哪些信号关联到了自己。而一旦关联信号和槽,Qt就保证了合适的槽得到调用。即使关联的对象在运行时被删除,应用程序也不会出现崩溃。此机制会确保当在“连接”信号和槽时,槽会接受信号的参数并且正确执行。

(3)信号与槽的效率问题。信号和槽机制增强了对象间通信的灵活性,然而也损失

了一些性能。与callback相比较,信号与槽有些慢。原因有:需要定位接受信号的对象;安全的遍历所有的关联(如:一个信号关联到多个槽);多线程,信号可能排队等待。但是,与创建堆对象时的new操作实例化对象,以及删除堆对象的delete操作相比较,信号与槽的代价只是他的很少的一部分。信号和槽带来的性能损耗,对实时应用程序是很小的。相对于信号与槽带来的灵活与简便,这点性能损失是可以接受的。

3.2 函数

基于Linux的播放器使用了Phonon多媒体框架和Qt框架的相关函数,现简要介绍如下。

3.2.1 Phonon媒体框架

Phonon 有三个基本概念:媒体对象、接收端和路径,图3-1是Phonon架构图[7]:

图3-1 Phonon框架

图3-1是Phonon的架构图。Media Object(媒体对象)管理一个Media Source(媒

体源),比如一个音乐文件;它提供了简单的播放控制,比如开始、停止和暂停播放。Sink是输出多媒体,通常是一个播放的装置(如声卡),且只接受MediaObject来的数据。多媒体由MediaObject控制播放,而由Sink来处理这些多媒体。Path是用来连接Phonon对象的,比如,一个媒体对象和一个接收端,从而构成了Phonon 中的MediaGraph,如图3-2所示:

图3-2 媒体文件播放过程

图3-2是媒体文件的播放过程,这些在不同的系统中实现方式不同,如:在Linux 环境下,通常使用GStreamer库,在Max OS X 环境下,使用QuickTime,在windows 下,使用Direct X和SirectShow库。而Qt中的phonon作为跨平台的多媒体解决方案,就应该为用户屏蔽掉这些差异,如图3-3所示:

图3-3 详细Phonon框架

图3-3是Phonon的详细框架图,由图可知Phonon框架实质上分4个部分:程序、Phonon库、Phonon后端插件(phonon_backend)、真正的后端。Phonon其实什么都不干,他只是提供了一套API接口,这套接口可以给你的程序调用,同时也是给编写后端插

件提供一个规范。同样,Phonon库也不知道,他只管搜索符合自己规范的插件。并告诉这些插件,现在程序发出的指令是什么,从插件返回给程序现在的媒体状态和信息。而后端才是实际进行读入媒体、解码并且播放的部分,他们和后端插件是一一对应的。后端可以是任何形式,只要你写出了相应的后端插件。

Phonon函数成员如图3-4所示[7]:

图3-4 主要的Phonon类

播放器主要使用的Phonon类及使用方法介绍如下[11]:

(1)Phonon::MediaObject Class

MediaObject主要提供一个能够处理媒体播放的类。

MediaObject可说是处理多媒体文件最基本的一部份,它接受并管理来自于MediaSource的媒体文件。而媒体播放、暂停与停止都是由它来控制;而在此之前,mediaObject必须要与output node连接,如早先所讲的,这个nodes主要将媒体输出至底层的硬件,例如声卡或显卡等,而所需要的output node则是根据多媒体的内容而所不同,目前Phonon有两种output node:

○1AudioOutput-声音播放。

○2VideoWidget-影像播放。

用法:

Phonon::MediaObject *mediaObject=new Phonon::MediaObject(this);

mediaObject->setCurrentSource(Phonon::MediaSource("/mymusic/barbi.wav"));

(2)Phonon::AudioOutput Class

AudioOutput类别主要是用来把多媒体的声音送到声音输出装置。所以它能够经由类似喇叭等输出装置来播放声音,多媒体资料的来源必须要经过Phonon::createPath()与MediaObject连接。

在Phonon术语中,我们要创建的AudioOutput对象叫做音频接收槽。它是直接与音频驱动器通信的层的组成部分,并充当MediaObject的虚拟音频设备。MediaObject 位于这一层的上层,增加了诸如暂停、播放和倒带之类的功能。用法:AudioOutput *audioOutput=new AudioOutput(Phonon::MusicCategory, this);

(3)Phonon::createPath()

这是相当重要的一个函数,主要用于建立一个Path,连接两个MediaNodes,就是Source与Sink。如果只是利用Phonon来播放多媒体影音文件,其实只要记得它是用来连接source与输出装置即可。用法:

Phonon::Path path=Phonon::createPath(mediaObject, audioOutput);

(4)Phonon::SeekSlider class

SeekSlider类别提供一个可滑动的slider来设定多媒体串流播放的位置。所以它会连接到MediaObject,并控制串流目前的位置。用法:

Phonon::SeekSlider *seekSlider = new Phonon::SeekSlider(this);

seekSlider ->setMediaObject(mediaObject);

seekSlider ->show();

(5)Phonon::V olumeSlider Class

V olumeSlider提供可以控制声音装置音量的类。用法其实与上面的SeekSlider类似,使用范例如下:

Phonon::V olumeSlider *volumeSlider = new Phonon::V olumeSlider;

volumeSlider->setAudioOutput(audioOutput);

3.2.2 Qlist容器类

QList不是Phonon的类成员,而是Qt的一个类库,它是一种表示链表的模板类。

Qlist是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进

行快速索引,还提供了快速插入和删除等操作。QList是一组指向被存储元素的数组。元素个数小于1000的QList能够很快地实现在链表中间插入操作,以及快速的查找操作。此外,由于QList在链表两端都预先分配了缓存以应对链表两端的快速添加操作,这样就使得在QList的两端插入或删除元素变得非常迅速。

很适合使用Qlist来存储播放器的播放列表,用法:

QList sourceList;

3.3 播放器的基本功能

在使用Phonon多媒体框架前,需要在项目额外设定使用Phonon模组,必须要在qmaek project file(即.pro)中加入:QT += phonon,将Phonon库添加进项目[6]。

3.3.1 建立媒体对象

首先实例化使用的Phonon类:

mediaObject =new Phonon::MediaObject(this);

audioOutput =new Phonon::AudioOutput(Phonon::MusicCategory,this);

seekSlider = new Phonon::SeekSlider(ui->progresswidget);

volumeSlider=new Phonon::V olumeSlider(ui->V olumewidget);

将媒体对象(mediaObject)和音频输出设备(audioOutput)使用函数Phon on::createPath()连接起来:

Phonon::createPath(mediaObject, audioOutput);

将进度条seekSlider与媒体对象mediaObject进行关联,使得歌曲播放的进度和进度条,同时将音量控制条与音频输出设备连接:

seekSlider->setMediaObject(mediaObject);

volumeSlider->setAudioOutput(audioOutput);

最后,将进度条和音量控制条显示在主窗口中:

seekSlider->show();

volumeSlider->show();

3.3.2 播放控制

系统实现的功能如图3-5所示[12]:

音乐播放器设计实习报告

《.net技术》实习报告带智能关机和查看日历功能的音乐播放器设计班级:指导老师: 姓名:学号: 设计时间:

正文开始 设计目的: 很多人在使用播放器的时候下载的播放器软件总是比较大,一般软件较大的打开就会比较慢,运行起来也没较小的软件运行的更“流畅“。而且当我们使用播放器的时候或是只用电脑的时候我们有时会忘记关掉电脑就离开或是睡着了!虽然电脑自带的操作系统也可以设置定时关机但比较麻烦,对电脑初学者更是不知道怎么使用操作系统设置定时关机啦!还有就是我们电脑桌面下的时钟一般只显示了几点钟,并没有显示今天是多少号,所以在影月播放器中添加一个可以查看日历的功能是很必要的! 实现的功能: 在这里我就为大家设计一款小巧的音乐播放器,同时还带有智能关机功能,所谓智能关机就是你想怎么时候关机就什么时候关机,你想立刻关机就立刻关机,想定时关机就可以自己设置关机时间,设置方法非常的简单啦。同时你只需要单击一下一个“三角图标键”(在下面还将结合图示提到)就可以看到日历表了,在日历表里你也可以选择查看你需要的那个月的日历表。同时我也在播放器中添加了显示现在时钟的功能。 下面介绍一下我设计的播放器的所有功能:首先你可以通过“添加文件夹”按钮添加你选择的文件夹内的所有音频文件,你也可以通过“添加文件”按钮单个添加你所要添加的音频文件,具体方法在下面我会给出截图加以说明,保证一看就懂,就会用。添加音乐文件后你就可以在你的播放列表里看到你添加的歌曲名了。你可以通过双击列表中的歌曲名进行播放你双击的歌曲或者单击选中列表中歌曲名后再单击播放按钮进行播放。在播放时你可也看到正在播放的歌曲名和播放进度,这里的播放进度使用显示正在播放的歌曲“已经播放了多长时间”和这首歌要播放的“总时间”,还有就是上一曲、暂停、下一曲、停止,除实现播放的基本功能外,还有一个功能那就是我在上面给大家提到的“智能关机” 物体规则震动发出的声音称为“音乐”,由有组织的乐音来表达人们思想感情、反映现实生活的一种艺术就是音乐,音乐是一种符号,声音符号,表达人的所思所想,音乐能表达一个人的内心世,界音乐能是人快乐,能使人放松心情。为了方便人们能够听到美丽的音乐,音乐播放器就成为我们的音乐大师了。 设计好的播放器运行时如下图:

音乐播放器的详细设计

音乐播放器详细设计 1.引言 随着社会的快速发展,现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,音乐成了我们生活工作中的一个重要的部分。而3G时代的到来,手机移动应用越来越普遍。此文档就是为了能更好地设计出一个基于android系统的音乐播放器而编写的。 1.1 编写目的 为软件的开发者能更好的理解和明确软件开发的详细过程,安排项目与进度、组织软件开发与测试,撰写本文档。本文档供项目组成员,软件开发人员参考。1.2项目背景 本项目由李雪梅、杨挺等人提出,由本组成员联合开发,实现播放现今流行的音乐MP3等文本格式。 该软件是基于Android系统的音乐播放软件,并能够与其他音乐播放软件兼容。 1.3 参考资料 [1] 重庆大学出版社《软件工程》“软件计划与可行性分析” [2] 靳岩、姚尚明人民邮电出版社《Android开发入门与实践》 [3] 可行性分析 [4] 《音乐播放器需求分析书》 [5] 《音乐播放器总体设计说明书》 1.4项目开发计划 实施计划:

阶段名称负责人 需求分析杨挺、李雪梅 总体设计李雪梅、杨挺 详细设计李雪梅、杨挺 软件测试李雪梅、杨挺 在技术方面,编程知识比较缺乏,对有些与项目相关的软件 不熟悉,需进行人员的技术培训(自学为主),技术难点是数据库的构架和软件功能的设计。 2. 总体设计 2.1 项目目的 本项目的目的是开发一个可以播放主流的音乐文本格式的播放器。设计的主要实现功能是播放MP3等格式的音乐文件,并且能控制播放,暂停,停止,音量控制,选择上一曲,选择下一曲,更改皮肤,歌曲列表文件的管理操作,在线播放,读取 存储卡播放等多种播放控制,界面简明,操作简单。 软件系统检测到错误行为时,报告错误,并提示处理操作。 2.2 软件运行环境 硬件:Android操作系统手机 系统软件:Android 2.2 -- 4.0版本 支撑软件:Eclipse 7.5 、ADT 1.5 2.3 需求概述

音乐播放器的设计与实现

德州学院信息管理学院 课程设计报告实习名称课程设计2 设计题目Android音乐播放器的设计与实现实习时间 专业班级12级计算机科学与技术 指导老师刘想 教学单位(盖章) 小组成员分工情况: 学号姓名分工 3018 周生明音乐播放的设计与实现1052曹法瑞 1040 张正奎 1055 李元华 2049 王山 二〇一五年六月三十日

目录 摘要 ................................................................................................................ 错误!未定义书签。 1 引言 ............................................................................................................ 错误!未定义书签。 2 可行性分析................................................................................................. 错误!未定义书签。 2.1 技术可行性...................................................................................... 错误!未定义书签。 2.2 经济可行性...................................................................................... 错误!未定义书签。 2.3 管理可行性...................................................................................... 错误!未定义书签。 2.4 可行性分析结论.............................................................................. 错误!未定义书签。 3 系统需求分析............................................................................................. 错误!未定义书签。 3.1 功能分析.......................................................................................... 错误!未定义书签。 3.2 数据流程分析.................................................................................. 错误!未定义书签。 4 系统功能设计............................................................................................. 错误!未定义书签。 4.1 播放器功能结构.............................................................................. 错误!未定义书签。 4.1.1 播放器主界面功能模块....................................................... 错误!未定义书签。 4.1.2 播放器菜单功能模块........................................................... 错误!未定义书签。 4.2 播放器功能流程.............................................................................. 错误!未定义书签。 5 系统实现..................................................................................................... 错误!未定义书签。 5.1 播放器主界面功能列表.................................................................. 错误!未定义书签。 5.2 播放器基本功能的实现.................................................................. 错误!未定义书签。 5.3 播放列表的实现.............................................................................. 错误!未定义书签。 6 软件测试与验证......................................................................................... 错误!未定义书签。 6.1 软件测试的目的.............................................................................. 错误!未定义书签。 6.2 软件测试的方法.............................................................................. 错误!未定义书签。 6.3 软件测试环境.................................................................................. 错误!未定义书签。 6.3.1 android模拟器 ...................................................................... 错误!未定义书签。 6.3.2 真机测试............................................................................... 错误!未定义书签。 6.4 软件测试流程与结果评估.............................................................. 错误!未定义书签。 6.4.1 测试流程............................................................................... 错误!未定义书签。 6.4.2 结果评估............................................................................... 错误!未定义书签。

嵌入式MP3播放器的设计

嵌入式MP3播放器的设计 1 系统概述 本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过触摸屏实现按键功能,控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。 MP3播放过程是STM32通过SPI1接口将数据从SD卡中取出,然后通过SPI2接口送至解码芯VS1003解码播放。这里解码模块单独使用一个SPI接口,以减小干扰和噪声、提高音质。 2 系统硬件设计方案 本系统在硬件上分为6个模块: 微控制器STM32F103、解码模块VS1003、存储模块SD卡、触摸屏、USB接口和显示屏LCD。系统硬件框架如图5所示。 VS1003 STM32 图5 系统硬件框架图 2.1 存储模块设计 SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。SD卡支持两种总线方式: SD方式与SPI方式。其中SD 方式采用6线制,而SPI方式采用4线制,采用单片机对SD卡进行读写时一般都采用SPI模式。可用不同的初始化方式使SD卡工作于SD方式或SPI方式。 在本设计中,音频数据MP3文件是以SD卡为载体。所以在电路设计中必须含有读取SD卡模块。该系统使用STM32内部接口SPI1与SD卡进行通信,下面介绍其引脚连接情况。 PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。SPI在和SD卡进行通

基于51单片机的音乐播放器设计

题目:音乐播放器 课程设计(论文)任务书

摘要 随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。 单片机的英文名称为single chip microcomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(Microcontroller Unit 或MCU)一词所取代。它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。随着硬件的发展,8051单片机系列的软件工具也有了C级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。 本次课程设计主要内容是通过单片机C51语言进行编程,以产生乐曲音符和节拍,把乐谱翻译成计算机语言(音符转换诚成相对应的方波频率即定时器装载初值,节拍转换成相对应的延长时间),并将其预先存储到单片机里,然后根据按键调用再由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声,实现音乐播放的功能。其主要表现在可以播放十首歌曲,可以用十个数字键控制播放的歌曲,并且能在LCD液晶屏显

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

音乐播放器的设计与实 现毕业论文 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

毕业设计说明书 学生姓名学号 学院计算机科学与技术学院 专业计算机科学与技术(软件工程) 题目音乐播放器的设计与实现 指导教师 (姓名)(专业技术职称/ 学位) 年月 摘要:随着生活水平的提高,娱乐已成为非常主流的话题,人们不仅需要通过音乐陶冶情操,而且越来越多的人倾向于使用音乐、视频等娱乐和放松自己,这大大促进了媒体软件的发展.本文旨在介绍研究常用数字音频编码和解码的相关知识,并结合VS2008编写多功能音乐播放器,了解音乐播放器功能的实现,掌握开发音乐播放器所需的相关知识,采用了面向对象软件工程方法,其开发主要包括应用程序界面设计和后台代码运行两个方面,实现了多功能音乐播放器在计算机上的应用,可以在很大程度上满足用户的需求.该系统主要具备:音乐播放控制、音乐文件控制、音量控制、下载控制、歌词控制、进度控制、音乐剪辑等功能模块。 关键字:音乐播放器,音频编码格式,TechSmith Screen Capture Codec,FFmpeg ,C#,Visual Studio 2008 Abstract: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

音乐播放器Java课程设计报告

课程设计报告课程设计题目:java音乐播放器 学生姓名: 专业:XXXXXXXXXXXXX 班级: 指导教师: 20XX年X月X日

一、课程设计目的 1、编程设计音乐播放软件,使之实现音乐播放的功能。 2、培养学生用程序解决实际问题的能力和兴趣。 3、加深java中对多媒体编程的应用。 二、课程设计的要求 利用学到的编程知识和编程技巧,要求学生: 1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其他基本功能。 2、编程简练,可用,尽可能的使系统的功能更加完善和全面 3、说明书、流程图要清楚。 三、课程设计内容 1、课程设计的题目及简介 音乐播放软件要求: 有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件功能。 2、设计说明 主要运用多媒体编程、图形界面、数组及循环进行设计,从而实现简单的音乐播放。 public MyMusicPlayer():实现窗口的成员方法 publi c void run():实现改变歌曲的播放状态的成员方法 public AudioClip loadSound(String filename):实现对声音的加载public void mouseClicked(MouseEvent e):实现对按钮的监听public void itemStateChanged(ItemEvent arg0):返回一个AudioClip 对象

3、程序流程图 4、程序清单 import java.awt.*; import javax.swing.*; import java.applet.*; import java.awt.event.*; import https://www.360docs.net/doc/ab9984199.html,.*; public class MyMusicPlayer extends Thread implements MouseListener,ItemListener{ JFrame MainFrame=new JFrame("MyMusicPlayer"); //定义主窗体 JLabel songname=new JLabel(); //用标签 显示状态 JButton last=new JButton(); JButton play=new JButton();

音乐播放器的设计与实现

第一章绪论 1.1背景 随着电子技术的飞速发展,嵌入式设备在各领域的应用越来越广泛,复杂度也越来越高,对其他开发方法也提出了更多的要求和更大的挑战。在嵌入式设备系统开发过程中需要将软件应用与操作系统编译连接成一个整体,然后下载到目标机上运行,所以,嵌入式设备的开发过程是一个复杂的过程。 3作为高质量音乐压缩标准,给音频产业带来了具大的冲击。3技术使音乐数据压缩比率大,回放质量高。如格式的音乐数据压缩成3格式,音效相差无己,但大小至少可压缩12倍。由于3音乐的较小数据量和近乎完美的播放效果使其在网络上传输得以实现。1995年,3格式的音乐文件刚在网络上传播时,主要用等播放软件进行播放,使3音乐无法脱离计算机进行播放,给音乐欣赏带来了不便。近几年以来,随着3播放器的出现及其技术的发展,人们对3播放器的要求越来越高,制造商在3播放器的选型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。本设计主要是利用技术设计一款新型的3播放器。 9是公司的16/32位处理器,是适用于普通设备的一种高性价比的微控制器。本设计采用的是三星公司推出的9芯片S3C2440,具有低价格、低功耗、高性能、超小体积等特点主要适用于中高端场合,目前在嵌入式系统中正得到日益广泛的应用。S3C2440主频高达400M,片上集成了丰富的资源:如()总线与控制器,为与数模转换器()的连接提供了一种理想的解决方案。 3播放器的设计比较复杂且对处理器的要求较高,因而3播放器必须仔细设计以降低成本。本设计是在9平台上设计、实现一个3播放器。 第二章系统总体方案 2.1 系统功能 本设计提出了一种基于嵌入式处理器硬件平台的3播放器设计方法。此播放器采用体系结构中的9作为系统控制器,利用外围设备通用串行接口下载3歌曲,用存贮3文件。主要对3做了各个方面的功能分析,对硬件设计、软件设计、软件实现、系统编译等方面做了介绍。系统的主要部分是音频编码与解码,这是系统设计的核心。3播放器设计的突出问题就是硬件控制和软件控制,另外还有硬盘控制、键盘控制、液晶显示,这些控制都是基于一块芯片。基于9的3播放器设计的软件体系结构采用分层模式,它包括软件层、硬件层、驱动层、操作系统层、及3播放器应用层。主要实现歌曲的播放。 2.2 设计指标 1、3工作电压为具有3.3V左右,电流250,具有音频解码和播放功能。 2、通过接口与大容量外部存储设备进行数据传输,能实现网络播放与下载、触摸屏输入功能。

基于单片机音乐播放器课程设计报告书

目录 第一章绪论 (1) 第二章音乐播放器主要器件相关知识介绍 (2) 2.1 AT89C51 (2) 2.2 LCD 显示器 (4) 2.3 喇叭 (5) 2.4 键盘 (5) 第三章音乐播放器设计原理 (6) 3.1 单片机发声的基本原理 (6) 3.2 设计的相关音乐说明 (7) 3.3 音乐播放器设计功能说明 (7) 3.4 设计结构框图 (9) 3.5 主程序控制的工作流程图 (10) 3.6 播放音乐的主程序 (11) 设计心得 (15) 参考文献 (15)

第一章绪论 二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。随着人们生活水平的提高及对音乐的喜爱,对音乐播放器的品质,功能,品种等提出了越来越多的要求,表现在对控制系统性能、可靠性等要求越来越高。而品质的提高,功能的更新,可靠性的增强,品种的变化无不于产品的核心控制部分水平的提高密不可分。家用音乐播放器产品及其它有关消费电器产品都是一些开环或闭

环控制系统,都由核心控制部分,执行部分与人机界面三部分组成。而最为重要的控制部分一般是由单片机来执行完成的,这就必将导致和促进单片机在音乐领域应用的发展。现在这些由单片机实现的音乐播放器的功能越来越强、费用越来越低。例如,就市场上的mp3目前的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。但这些音乐播放器也或多或少的存在着一些问题,解决这些问题,还除智能化的单片机莫属。 设计指标: (1)设计一个(4×4)的键盘,并将16个键设计成16个音; (2)可弹奏想要表达的音乐; (3)该电子琴包含1首示例音乐,接通电源可播放示例音乐。 设计要求: (1)按设计指标进行电路设计; (2)列出音阶与单片机定时器输出频率关系表格; (3)制作符合设计指标的硬件电路。

音乐播放器设计文档

生产实习报告 题目:音乐播放器 学生姓名:张凡 学号: 201220220123 班级: 1222201 专业:数字媒体技术 指导教师:张金 2015年08 月08日

目录 一、引言 (3) 1.1 项目背景 (3) 1.2 项目研究的目的 (4) 1.3 安卓简介 (4) 二.功能分析 (5) 2.1 功能需求分析 (5) 2.2 系统性能需求 (6) 2.3 运行环境需求 (6) 三.程序详细设计 (6) 3.1 主界面的设计 (6) 3.2 播放界面设计 (11) 3.3 其他功能 (14) 四.调试与运行 (18) 4.1 调试 (18) 4.2 运行结果 (19) 五.总结 (21)

一、引言 1.1 项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,symbian,Windows mobile,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?答案是:肯定的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。 随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。

音乐播放器的设计与实现设计共19页文档

目录 一、前言 (1) 二、系统分析 (2) (一)系统需求分析 (2) (二)系统功能需求分析 (2) (三)业务流程分析 (3) 三、系统设计 (4) (一)总体设计 (4) (二)歌曲列表模块设计 (4) (三)播放控制模块设计 (4) (四)播放器设置模块设计 (4) (五)数据库设计 (4) 四、系统实现 (6) (一)主界面 (6) (二)播放列表 (12) (三)歌词显示界面 (13) (四)皮肤更换 (15) 五、软件测试 (16) (一)软件的测试 (16) (二)功能的测试与实现 (16) (三)测试结论 (17) 六、结论 (17) 参考文献 (18)

Android音乐播放器的设计与实现 (电子信息工程系软件技术111班王永军) 摘要:本论文的音乐播放器采用了Android开源系统技术,利用Java 语言和Eclipse开发工具对播放器代码进行编写。同时给出了详细的系统设计过程、部分界面截图及主要的功能流程图,该音乐播放器集播放、暂停、停止、上一首、下一首、歌词显示等功能于一体,性能良好,在Android系统中能独立运行。实验证明,基于android平台的软件开发简单,使用方便简洁,必将成为未来几年的发展方向,具有普遍意义。 关键词:Android;Java;Eclipse;音乐播放器 一、前言 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,是的手机操作系统也出现了不同各类,现在的市场主要有三个手机操作系统,Windows mobile,苹果系统,以及谷歌的Android操作系统,其中占有开发源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。 随着计算机的广泛运用,手机市场的迅速发展,各种音频资源也在网上广为流传,这些资源卡是平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味最求外观花俏,功能庞大,对用户的手机造成很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户听歌的需求。 现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放MP3等音乐文件,并且能够控制播放器播放,暂停,停止,上一曲,下一曲。界面简单,操作简单。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的播放

在线音乐播放系统详细设计

<在线音乐播放系统> 详细设计说明书 作者: 完成日期: 签收人: 签收日期: 修改情况记录:

1 引言 1.1 编写目的 为软件开发人员在编码的过程中有所依据和参考。 面向人员:程序开发人员 1.2 背景 说明: a.待开发的软件系统的名称:在线音乐播放系统 b.列出本项目的任务提出者:北软老师 c.开发者:邓凯 d.用户:广大互联网用户 e.将运行该项软件的单位:web服务器 1.3 定义 OMS :Online music system,在线音乐播放系统。 1.4 参考资料 列出要用到的参考资料,如: a.本项目的经核准的计划任务书或合同、上级机关的批文; b.在线音乐播放系统概要设计.doc; c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。 2 程序系统的结构 本程序主要采用四层结构,如下所示: 图1 系统结构示意图

3 程序(标识符)设计说明 3.1 在线音乐网络爬虫设计说明: 资源的数量和质量将决定了系统的商业价值,为了获取更多的网络媒体资源,为系统设计了一款针对互联网上音乐资源的网络爬虫。 3.1.1爬虫的原理: 网络爬虫是一个自动提取网页的程序,它为搜索引擎从Internet网上下载网页,是搜索引擎的重要组成。 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题: (1)对抓取目标的描述或定义; (2)对网页或数据的分析与过滤; (3)对URL的搜索策略。 3.1.2在线音乐播放系统爬虫的设计: 与通用爬虫不同,在线音乐播放系统爬虫只针对https://www.360docs.net/doc/ab9984199.html,音乐频道 https://www.360docs.net/doc/ab9984199.html,音乐频道,针对MP3格式的资源。 3.1.3爬虫的流程图:

基于Android-系统的音乐播放器设计与实现

基于Android 系统的音乐播放器设计与实现 实验报告

一、实验要求: 本课程设计的目的是开发一个可以播放主流音乐文件格式的播放器的播放功能模块,要求音乐播放器能够播放Mp 3,Wav 多种格式的音乐文件,能够控制播放,暂停,重播,停止,要求视觉外观美观,操作简单。 二,设计思想 首先查找相关书籍与文献,了解An droid 的构架并搭建An dr oid 开发平台。 查找相关资料,了解现阶段基于And roid 平台手机音乐播放器发展现状以及相关功能。 播放器基本拥有以下功能: 播放本地音乐文件 对播放的状态进行控制 播放设置,开始暂停停止 三,系统结构 ? 四、数据结构的说明和模块的算法流程图 运行 结束 暂停 开始 音乐播放器主界面 音乐播放器 设定 播放界面 开始 暂停 停止

五、使用说明书 菜单有6个功能:播放,暂停,停止,重播。 播放功能:点击后事件触发,传入歌曲名字,让程序操作该名字进行播放。 暂停功能:点击后事件触发,歌曲暂停播放。 停止功能:点击后事件触发,歌曲停止播放。 重播功能;点击后事件触发,歌曲重新播放。 六、运行结果和结果分析 作为Android平台上开发的应用软件,本设计具备与用户交互的界面,界面简洁美观易于操作。作为一款在线音乐客户端,提供给用户在线选歌的方便,提供在线播放歌曲的即时信息,如歌曲名,歌手名,时长等等。 七、我评价与总结 现如今社会生活节奏日益加快,人们在忙碌的生活中欣赏音乐是最好的舒缓压力的方式之一。随着移动设备的日益完善,我们大家都已经有了在手机上听自己喜欢歌曲的习惯,以往的做法是用数据线或者蓝牙等无线设备将PC上的歌曲复制几首到手机当中,反反复复的听,等到听厌了以后,再次装一些歌曲进去,如此反复,非常的麻烦。因此,如果在我们的手机上能实现在线听歌,这将会带来极大的方便。本项目是一款基于Android手机平台的音乐播放器,使Android 手机拥有个性的多媒体播放器,是手机显得更生动灵活化,与人们更为方便,让手机主人随时随地处于音乐的旋律之中。本设计实现的重要功能是播放Mp3格式的音乐文件,并且能够控制音乐的播放,暂停,显示歌手信息,歌曲专辑等功能。本项目还可以使人们生活更加多样化,也使设计者更加熟悉Android的技术和其它在市场上的特点。 八、附录 package com.example.seekbar; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;

单片机课程设计报告简易音乐播放器

第一章前言 伴随着科技的发展和时代的进步,人们对生活质量的要求也越来越高,由以前简单的追求温饱和物质财富转向更高层面的精神追求!而这一切催生了智能仪器的发展,音乐则是人们娱乐生活的重要组成部分,目前市场上出现了许许多多的音乐播放器,而人们对播放器的功能需求也越来越广泛,本文将设计一个基于单片机的音乐播放器,通过对其全面的介绍与分析,让大家了解音乐播放器的原理! 第二章: 简易音乐播放器的功能和原理说明 音乐播放器,可以通过单片机板子上的数字按键对音乐播放的曲目进行控制,并且通过LED灯将播放的音乐加以区分,在播放音乐的同时点亮LED灯,让人知道现在正在播放的音乐曲目,从而实现简单的音乐播放功能! 表1 需求分析 功能说明:这次设计是依据单片机技术原理,通过硬件电路设计以及软件的编译而设计的一个简单的音乐播放器,可以通过按键选择播放四首歌曲(歌曲自选,只要将想要播放的歌曲的乐谱写入程序中即可)同时点亮相应的LED灯,并用它来指示当前播放的歌曲序列,只能实现简单的音乐播放功能。 原理说明:这个音乐播放器主要有晶振电路,复位电路,LED电路,按键电路以及扬声器组成。它利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,接着用单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制扬声器发音。通常利用单片机的内部定时器0,工作在方式1下,再改变计数初值TH0和TL0来产生不同频率。当控制歌曲按键按下时,按照预先存放在单片机中的程序,就

会自动判断键值,然后启动计数器,按照程序产生一定频率的脉冲,接着通过uln2003芯片驱动扬声器,播放出乐曲。该硬件电路中用P3.0,P3.1,P3.2,P3.3控制四个按键,“0”,“1”,“2”,“3”分别控制四首音乐。P1.0,P1.1,P1.2,P1.3控制四个LED灯,它们分别对应四个按键,用来显示正在播放的歌曲,并用P2.3 来控制扬声器,电路为12MHz晶振频率工作,起振电路中C1 和C2为22pf。 第三章:系统硬件电路设计 1:硬件体系结构设计 该简易音乐播放器主要有单片机核心芯片89C52,LED发光二极管,扬声器,晶振电路,按键电路,复位电路组成,通过芯片引脚输出定时器产生的各种固定频率的方波信号,然后在经由扬声器产生各种频率的声音。另外,该方案使用的是单片机板子的内部振荡电路,89C52芯片的X1,X2引脚外接石英晶体。它的系统组成如图所示。 (1)晶振电路部分晶振的作用是给电路提供工作信号脉冲的,其实就是单片机的工作速度。本次设计选用12M晶振,则单片机的工作速度就是每秒12M。与此同时,也要注意单片机的工作频率范围。 (2)复位电路部分当系统出现问题时可以重置系统,解决一些问题 (3)LED显示部分显示系统在各种不同条件下的状态 (4)89C52芯片整个设计的核心,接收和处理信号及程序 (5)按键电路部分作为系统的输入

媒体音乐播放器的设计与实现

毕业设计(论文) 媒体音乐播放器的设计与实现 学生学号 学生姓名 学院名称 专业名称 指导教师 年月日

摘要 为了更好的丰富人们的业余文化生活,提高歌厅管理水平,为消费者提供更加舒适、便利的娱乐环境,笔者设计并实现了一个点歌管理系统。该系统以C#作为开发语言。该系统具有界面友好、操作方便、检索迅速、存储量大等特点。 本文对系统的需求进行了分析,叙述了系统开发的目的和意义,阐述了系统的总体方案设计和数据库设计,重点叙述了各个模块的详细设计方法与设计过程,并对系统实施的相关问题作了介绍。 关键词点歌管理系统;管理系统;系统设计;

Abstract In order to better enrich the life of people's leisure and cultural, improve the level of karaoke management, to provide consumers with more comfortable and convenient entertainment environment, the author designed and implemented a VOD management system. The system to C # as development language, using SQL Server for data management background, achieving a song play, query by song, query by singer, query by the number of song’s name. The system has a friendly interface, easy operation, rapid retrieval, large memory capacity, ect. This paper analyzes the system requirements, describes the purpose and significance of system development, described the overall system design and database design, focusing on the various modules described in the detailed design methods and design process, and system implementation-related issues introduced. Keywords Song Request Management Management System System Design

音乐播放器Java课程设计报告

课程设计报告课程设计题目:java 音乐播放器 学生姓名: 专业:XXXXXXXXXXXXX 班级: 指导教师: 20XX 年X 月X 日

、课程设计目的 1、编程设计音乐播放软件,使之实现音乐播放的功能。 2、培养学生用程序解决实际问题的能力和兴趣。 3、加深java 中对多媒体编程的应用。 二、课程设计的要求 利用学到的编程知识和编程技巧,要求学生: 1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其他基本功能。 2、编程简练,可用,尽可能的使系统的功能更加完善和全面 3、说明书、流程图要清楚。 三、课程设计内容 1、课程设计的题目及简介 音乐播放软件要求: 有图形界面,能播放MP3 歌曲,有播放列表,前一首、后一首等常用播放软件功能。 2、设计说明 主要运用多媒体编程、图形界面、数组及循环进行设计,从而实现简单的音乐播放。 public MyMusicPlayer() :实现窗口的成员方法 publi c void run() :实现改变歌曲的播放状态的成员方法 :实现对声音的加载 public AudioClip loadSound(String ) :实现对按钮的监听 public void mouseClicked(MouseEvent e) public void itemStateChanged(ItemEvent arg0) :返回一个AudioClip 对象

3、程序流程图 * 出现界面 * 选择播放歌 曲 4、程序清单 import java.awt.*; import javax.swi ng.*; import java.applet.*; import java.awt.eve nt.* import java .n et.*; public class MyMusicPIayer exte nds Thread impleme nts MouseListe ner,ltemListe ner{ JFrame Mai nF rame =new JFrame( "MyMusicPlayer" ); // 定义主窗体 JLabel songname =new JLabel(); //用标签显示状态 JButton last =new JButto n(); JButt on play =new JButt on();

音乐播放器设计与仿真

科信学院 电子信息工程CDIO二级项目(2013/2014学年第二学期) 题目:音乐播放器的设计与仿真 专业班级: 学生姓名: 学号: 指导教师: 设计周数: 设计成绩: 目录

题目:基于Proteus与8253、8255A、8086芯片的音乐播放器 (2) 音乐播放器的设计与仿真 (2) 1 设计目的 (2) 2 设计正文 (2) 2.1音乐播放器的设计原理 (2) 2.2 8253、8255A以及CPU8086芯片介绍 (3) 2.2.1芯片8253简介 (3) 1、8253外部引脚介绍 (3) 2、8253内部结构介绍 (4) 3、8253作为定时器与计数器时的功能介绍 (6) 4、方式选择控制字 (7) 5、8253的工作方式 (7) 2.2.2 芯片8255的介绍 (8) 1、8255A外部引脚介绍 (8) 2、8255A内部结构介绍 (10) 3、8255的工作方式 (12) 4、8255A控制字 (12) 2.2.3 CPU 芯片8086介绍 (14) 1、8086简介 (14) 2、8086外部引脚介绍.............................................................................................14. 3、8086内部结构介绍 (16) 2.2.4音乐播放器的设计流程 (18) 1、音乐播放器的总体设计流程图 (18) 2、芯片间连接情况以及功能介绍 (19) 3、程序设计的总体思路 (21) 4、硬件连接电路图 (22) 3.设计总结 (22) 4.参考文献 (23)

相关文档
最新文档