多媒体播放器系统的设计与实现.DOC

上传人:国*** 文档编号:958938 上传时间:2018-11-09 格式:DOC 页数:10 大小:123KB
下载 相关 举报
多媒体播放器系统的设计与实现.DOC_第1页
第1页 / 共10页
多媒体播放器系统的设计与实现.DOC_第2页
第2页 / 共10页
多媒体播放器系统的设计与实现.DOC_第3页
第3页 / 共10页
多媒体播放器系统的设计与实现.DOC_第4页
第4页 / 共10页
多媒体播放器系统的设计与实现.DOC_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、多媒体播放器系统的设计与实现摘要:随着多媒体技术的发展和 PC 性能的大幅度提高,在 PC 机上运行的应用程序越来越多地采用了多媒体技术。如果你编写的程序能够发出美妙的音乐,播放有趣的动画,无疑将会给人留下深刻的印象。多媒体以其形象直观的特点和丰富的信息含量受到广大用户的欢迎。多媒体编程技术已成为现在编程技术的一个热点。同时,多媒体技术的发展改变了计算机的使用领域,由办公室、实验室中的专用品变成了信息社会的普通工具,广泛应用于工业生产管理、学校教育、公共信息咨询、商业广告、军事指挥与训练,甚至家庭生活与娱乐等领域。我做的这个播放器只实现了几个简单的功能,播放、暂停、停止,添加歌曲到播放列表,播

2、放器一直循环播放列表里的音频文件等。关键字:多媒体 JAVA mp3 播放器Abstract:With the development of multimedia technologies and PC Performance of a substantial increase in PC applications to run on more and more use of multimedia technology. If you can be prepared by the procedures issued to good music, play interesting animati

3、on, it will undoubtedly be impressed. Its multimedia visual image of the characteristics and rich information content welcomed by the great majority of users. Multimedia Programming Technology has now become a hot programming technology. At the same time, the development of multimedia technology has

4、 changed the field of computer use by the office, laboratory supplies professionals in the information society into the ordinary tools, widely used in industrial production management, school education, public information consulting, commercial advertising, military command with training, and even f

5、amily life and entertainment, and other fields do realize that players only a few simple functions, play, pause, stop, add songs to the playlist, the player has been circulating playlists, audio files, etc.Keywords: Multimedia JAVA mp3Player目录摘要 IAbstract II第一章 绪论 1.1 课题背景 1.2 本音频播放器的简单分析 第二章 JAVA 音

6、频处理介绍2.1 JAVA 平台简介2.2 JAVA 音频处理简介2.3 为什么选择 JAVA 来编写播放器第三章 多媒体播放器的设计3.1 系统需求3.2 解决方案第四章 多媒体播放器功能的具体实现4.1 如何实现界面?4.2 如何实现音频文件的播放?4.3 如何实现和播放曲目有关的功能?4.4 如何实现播放进度实时显示?4.5 如何实现音量调节?第五章 多媒体播放器测试5.1 什么是软件测试?5.2 为什么要进行软件测试?5.3 播放器测试项目及结果总结第一章 绪论1.1 项目背景音频播放器在网络和计算机中的应用无处不在,某些音频播放器无论从界面还是效果都堪称经典。编写音频播放器可以使我们

7、了解面向对象技术,熟悉 Java 音频处理等多媒体技术的使用方法,熟悉模块化的设计,也能使我们更熟练地应用 Java 编程环境,进一步熟悉 Java 编程。1.2 本音频播放器的简单分析网上有很多播放器,他们的功能都很强大。我所做的播放器只实现了一些简单的功能,如播放、暂停、停止,添加歌曲到播放列表,循环播放,以及通过可视化显示当前播放进度,音量调节等,另外一个很重要的是,这个播放器现在只支持播放 mp3 格式的音频。还有很多地方需要改进以及完善。本播放器的界面图:第二章 JAVA 音频处理介绍2.1 JAVA 平台简介Java 语言诞生于 20 世纪 90 年代初期,从它的正式问世以来,它的

8、快速发展已经让整个 Web 世界发生了翻天覆地的变化。 Java 的前身是 SUN Microsystems 公司开发的一种用于智能化家电的名为 Oak(橡树)的语言,它的基础是当时最为流行的 C 和 C+语言。但是,由于一些非技术上的原因,Oak 语言并没有得到迅速的推广。直到 1993 年,WWW(万维网)迅速发展,SUN 公司发现可以利用 Oak语言的技术来创造含有动态内容的 WWW 网页,因此,已受人冷落了的 Oak 语言又被重新的开发和改造,并将改造后的 Oak 语言改名为 Java 语言,即太平洋上的一个盛产咖啡的岛屿的名字。终于,在 1995 年,Java 这个被定位于网络应用的

9、程序设计语言被正式的推出。 随着 Java Servlet 的推出,Java 在电子商务方面开始崭露头角,最新的 Java Server Page(JSP)技术的推出,更是让 Java 成为基于 Web 应用程序的首选开发工具。Internet的普及和迅猛发展,以及 Web 技术的不断渗透,使得 Java 语言在现代社会的经济发展和科学研究中,占据了越来越重要的地位。因为 Java 语言的简单易学,强大的垃圾回收机制,众多的 API 和良好的跨平台等特性,现在受到越来越多的编程人员的青睐。2.2 JAVA 音频处理简介利用 JAVA-SOUND-API 播放声音, java Sound API

10、 是 javaSE 平台提供底层的(low-level)处理声音接口。通过它提供的一些类和方法,我们可以实现简单的音频播放器。图一描述了 JavaSound API 的体系结构,虚线表示 Sun 的 JavaSound 标准定义的 API调用。上面一根虚线表示我们编写音频处理程序要调用的 API,JavaSound API 包含在javax.sound.sampled 和 javax.sound.midi 包中。两根虚线之间的部分就是 JavaSound API 的具体实现。 图一:JavaSound 体系结构 就象上面一根虚线表示的 API 具有统一标准一样,在所有的 JavaSound 实

11、现中,图一下面一根虚线表示的 SPI(服务提供者接口, Service Provider Interface)也是统一的。SPI的作用是以插件(Plug-In)的形式提供自定义的扩展模块,我们只要提供与 SPI 兼容的插件扩展模块,就可以在不改变 API 的情况下扩展音频处理程序的能力。SPI 包含在java.sound.sampled.spi 和 javax.sound.midi.spi 包中。2.3 为什么选择 JAVA 来编写播放器(1) 、JAVA 编写的程序具有天生的跨平台特性,在 windows 下编写的程序在其他系统下不用修改一行代码就可以直接运行。(2) 、JAVA 现在的运行

12、速度也越来越快,用 SWING 实现的界面也不用以前那么丑陋,最重要是 JAVA 语言简单易学。第三章 多媒体播放器的设计3.1 系统需求(1) 、用户界面:按钮、列表、进度条、菜单等等(2) 、功能:音乐的播放,要实现播放、暂停、停止,添加播放文件到播放列表,音量调节,实时显示播放进度,播放上一首、播放下一首等。3.2 解决方案(1) 、用户界面:使用 Java Swing 来实现播放器界面,按钮:JButton 类列表:JList 类菜单:JMenuBar 类进度条:JSlider 类(2) 、音乐播放:采用 JAVA-SOUND-API 的 SourceDataLine 来实现音乐的播放

13、。第四章 多媒体播放器的具体实现4.1 如何实现界面采用 Java Swing 实现,将按钮等控件添加到 JPanel 面板上,并通过 BorderLayout布局方式来管理按钮等控件的位置。具体实现代码如下:public class MusicPlayer extends JFrame private JButton jButtonStart;/开始按钮private JButton jButtonPause;/暂停按钮private JButton jButtonStop; /停止按钮private JLabel jLabelVolume;/音量标签private JList jListM

14、usic; /播放列表private JMenu jMenuFile;/文件菜单private JMenu jMenuPlay;/播放菜单private JMenuBar jMenuBarPlayer;/菜单private JMenuItem jMenuItemOpen;/打开文件private JMenuItem jMenuItemExit;/退出程序private JMenuItem jMenuItemPrevious;/上一首private JMenuItem jMenuItemNext;/下一首private JSlider jSliderPlayProgress;/播放进度条priv

15、ate JSlider jSliderVolume;/音量进度条private JPanel jPaneSouth;private JPanel jPaneControl;public MusicPlayer() super(“多媒体播放器-05 计算机 1 班- 刘佳“);initComponents(); jButtonStart.setEnabled(false);jButtonPause.setEnabled(false);jButtonStop.setEnabled(false);/界面初使化private void initComponents() jMenuBarPlayer =

16、 new JMenuBar();jMenuFile = new JMenu(“文件“);jMenuItemOpen = new JMenuItem(“打开“);jMenuItemExit = new JMenuItem(“退出“);jMenuFile.add(jMenuItemOpen);jMenuFile.add(jMenuItemExit);jMenuPlay = new JMenu(“播放“);jMenuItemPrevious = new JMenuItem(“上一首“);jMenuItemNext = new JMenuItem(“下一首“);jMenuItemPrevious.se

17、tEnabled(false);jMenuItemNext.setEnabled(false);jMenuPlay.add(jMenuItemPrevious);jMenuPlay.add(jMenuItemNext);jMenuBarPlayer.add(jMenuFile);jMenuBarPlayer.add(jMenuPlay);setJMenuBar(jMenuBarPlayer);jListMusic = new JList();jListMusic.setFixedCellHeight(20);jSliderPlayProgress = new JSlider(); /播放进度条

18、jSliderPlayProgress.setValue(0);jButtonStart = new JButton(“开始“);jButtonPause = new JButton(“暂停“);jButtonStop = new JButton(“停止“);jLabelVolume = new JLabel(“音量“);jSliderVolume = new JSlider(); /音量进度条jPaneSouth=new JPanel();jPaneSouth.setLayout( new GridLayout(2,1);jPaneControl=new JPanel();jPaneCont

19、rol.add( jButtonStart );jPaneControl.add( jButtonPause );jPaneControl.add( jButtonStop );jPaneControl.add( jLabelVolume );jPaneControl.add( jSliderVolume );jPaneSouth.add( jSliderPlayProgress );jPaneSouth.add( jPaneControl );this.setBounds(200,200,1000,1000);getContentPane().add( new JScrollPane(jLi

20、stMusic),BorderLayout.CENTER);getContentPane().add( jPaneSouth,BorderLayout.SOUTH ); setDefaultCloseOperation( javax.swing.WindowConstants.EXIT_ON_CLOSE );pack();效果图如下:注意:代码中只包含界面部分的实现,不包含任何其实功能的实现代码。另外通过:UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception exception)ex

21、ception.printStackTrace();设置应用程序的外观为系统默认的外观。使得播放器界面很 windows 下的程序看起来是一致的。4.2 如何实现音频文件的播放(1) 、得到当前要播放的文件file = new File(playlist.get(Currindex);(2) 、通过 AudioSystem 得到音频输入流audioInputStream = AudioSystem.getAudioInputStream(file);(3) 、获得音频格式Format = audioInputStream.getFormat();(4) 、进行格式转换Format = new

22、AudioFormat(AudioFormat.Encoding.PCM_SIGNED,Format.getSampleRate(),16,Format.getChannels(),Format.getChannels()*2,Format.getSampleRate(),false);(5) 、音频输入流转换audioInputStream = AudioSystem.getAudioInputStream(Format, audioInputStream);info = new DataLine.Info(SourceDataLine.class,Format);(6) 、得到播放 lin

23、eline = (SourceDataLine) AudioSystem.getLine(info);line.open(Format);(7)、开始播放音乐line.start();int nBytesRead = 0;byte abData = new byte102400;/定义一个大小为 102400bits 的缓冲区。while ( nBytesRead != -1)try nBytesRead = audioInputStream.read( abData , 0, abData.length ); catch (IOException e) e.printStackTrace()

24、;If ( nBytesRead = 0) line.write( abData, 0, nBytesRead );4.3 如何实现和播放曲目有关的功能开始: jButtonStart.addActionListener( new ActionListener() public void actionPerformed( ActionEvent evt) state.setStart();jSliderVolume.setEnabled(true););/state 类的 setStart()方法,实现播放器的播放功能public void setStart()if(start=false)s

25、tart=true;if(pause=true)pause=false;if(stop=true)stop=false;jButtonStart.setEnabled(false);jButtonPause.setEnabled(true);jButtonStop.setEnabled(true);暂停: jButtonPause.addActionListener( new ActionListener() public void actionPerformed( ActionEvent evt) state.setPause(););/state 类的 setparse()方法,实现播放器

26、的暂停功能public void setPause()if(start=true)start=false;if(pause=false)pause=true;if(stop=true)stop=false;jButtonStart.setEnabled(true);jButtonPause.setEnabled(false);jButtonStop.setEnabled(true);停止: jButtonStop.addActionListener( new ActionListener() public void actionPerformed( ActionEvent evt) state

27、.setStop();jSliderVolume.setEnabled(false);jSliderPlayProgress.setValue(0););/state 类的 setStop()方法,实现播放器的停止功能public void setStop()if(start=true)start=false;if(pause=false)pause=false;if(stop=false)stop=true;jButtonStart.setEnabled(true);jButtonPause.setEnabled(false);jButtonStop.setEnabled(false);上一

28、首:jMenuItemPrevious.addActionListener( new ActionListener() public void actionPerformed( ActionEvent evt) Previous(););public void Previous() /上一首Currindex-=2;line=null;下一首:jMenuItemNext.addActionListener( new ActionListener() public void actionPerformed( ActionEvent evt) play.Next();); public void

29、Next() /下一首,将 line=null 退出当前歌曲播放循环line=null;添加播放文件:jMenuItemOpen.addActionListener(new ActionListener() public void actionPerformed( ActionEvent evt) /打开文件选择对话框if( fileinput = null )fileinput = new FileInput(musicplayer);fileinput.open();/获得选择的文件名数组String list = fileinput.getFileNames();/将选择的文件添加到播放

30、列表中for(int i=0;i= playlist.size() ) Currindex = 0;/停止 0.3 秒try Thread.sleep(300); catch (InterruptedException e) e.printStackTrace();/播放一首歌曲init();4.4 如何实现播放进度实时显示首先,要显示播放进度就需要知道播放文件的长度,通过如下代码可以计算出文件的播放时间。代码如下:/取得播放速度(单位 位/每秒)Bitrate = ( int ) ( Integer )( Format.properties (). Get (“ bitrate “);Sys

31、tem.out.println( bitrate );/文件是以 B 为单位,并且播放时间是以微妙为单位,所以计算时间的时候文件长度需要乘以 8000000If ( bitrate != 0 ) time = (file.length()*8000000) / bitrate;4.5 如何实现音量调节通过使用一个进度条来控制音量的调节,用户滑动进度条程序得到这个进度条的值,通过转换,然后设置音乐播放的音量。代码如下:/返回一个控制public FloatControl getVolume()return volume;jSliderVolume.addChangeListener ( new

32、ChangeListener()public void stateChanged ( ChangeEvent evt ) play.getVolume().setValue(float)jSliderVolume.getValue(););第五章 多媒体播放器的测试5.1 什么是软件测试?软件测试定义是:为了发现程序中的错误而执行程序的过程 它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality) 的软件过程;是 SQA(software quality assurance)的重要子域。 5.2 为什么要进行软件测试?(1)测试是为了发现程序中的错误而执行程序的过程; (2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; (3)成功的测试是发现了至今为止尚未发现的错误的测试。5.3 播放器测试项目及结果播放器测试的项目有,能否正确播放,暂停、停止功能是否能正常使用。播放列表完后是否正确的循环播放,音量调节是否可用。播放进度条显示是否正确等。经过严格的各个项目的测试,本播放器功能基本正常。发现的几处小问题,也得到修改和完善。总结做这个课程设计让我学到了很多东西, (1)让我知道了论文该怎么写,格式是什么样的。(2)让我学会如何使用 JAVA 来进行多媒体编程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。