基于java的音乐播放器课程设计报告

合集下载

音乐播放器Java专业课程设计方案报告

音乐播放器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 .*;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();JButton next=new JButton();JButton loop=new JButton(); //定义上一曲,播放,下一曲,循环四个按钮JLabel list=new JLabel("播放列表");List songlist=new List(); //显示歌曲列表AudioClip[] song=new AudioClip[10]; //将音频文件放在数组中AudioClip playsong; //目前选定播放音频文件String[] name={"黄小琥 - 顺其自然.wav","陈奕迅-张氏情歌.wav","黄小琥 _没那么简单.wav","戚薇-假如爱忘了.wav","郭采洁 - 狠狠哭.wav","test.wav"};//将全部文件名存放在字符串数组name中String playname; //目前选定播放音频名int j=0; //统计目前选定播放是哪首歌曲, 默认为第一首boolean playbutton=true; //统计播放状态, 默认为暂停播放boolean loopbutton=false; //统计循环状态, 默认为没有循环Thread thread=new Thread("pl");static MyMusicPlayer Yu;public MyMusicPlayer(){MainFrame.setLayout(null);MainFrame.setBounds(300,50,310,500);MainFrame.setVisible(true);MainFrame.setDefaultCloseOperation(3);MainFrame.add(songname);Font sname=new Font("斜体",Font.ITALIC,18);songname.setFont(sname); //设置显示状态字体为斜体songname.setText("我音乐播放器");songname.setBounds(10,10,300,40);last.setBounds(10,70,50,40);play.setBounds(70,70,50,40); //设置四个功效键位置和大小next.setBounds(130,70,50,40);loop.setBounds(190,70,50,40);last.setIcon(new ImageIcon("1.png"));play.setIcon(new ImageIcon("2.png"));next.setIcon(new ImageIcon("3.png"));loop.setIcon(new ImageIcon("4.png")); //设置四个功效键图片last.addMouseListener(this);play.addMouseListener(this);next.addMouseListener(this);loop.addMouseListener(this); //添加按键鼠标监听器MainFrame.add(last);MainFrame.add(play);MainFrame.add(next);MainFrame.add(loop);list.setBounds(10,120,100,30);Font lis=new Font("宋",Font.BOLD,15);list.setFont(lis); //显示“播放列表”MainFrame.add(list);songlist.setBounds(10,150,250,300);songlist.setBackground(Color.GREEN); //设置播放列表背景色为绿色songlist.setVisible(true);songlist.addItemListener((ItemListener) this); //添加列表监听器MainFrame.add(songlist);for(int i=0;i<name.length;i++){song[i]=loadSound(name[i]); //逐一获取音频文件songlist.add(name[i]); //将歌曲名添加到播放列表}playsong=song[0];}public static void main(String[] args){Yu=new MyMusicPlayer();Yu.start();}public void mouseClicked(MouseEvent e) {JButton btn=(JButton)e.getSource();playsong.stop();if(btn==play){ if(playbutton==false)playbutton=true;elseplaybutton=false; //当按下play后改变播放状态}elseif(btn==last){ j-=1; //当按下last 后将上一曲选定if(j<0)j=name.length-1; //若之前选定为第一首, 则跳到最终一首playbutton=true;loopbutton=false;}elseif(btn==next){ j+=1; //当按下next后将下一曲选定if(j>=name.length)j=0; //若之前选定为最终一首, 则跳到第一首playbutton=true;loopbutton=false;}elseif(btn==loop){ if(loopbutton==false){loopbutton=true;playbutton=true;}else{ //按下loop 后, 改变循环状态和播放状态loopbutton=false;playbutton=false;}}if(playbutton==true)Yu.run();else{songname.setText("暂停播放: "+playname); //暂停播放歌曲play.setIcon(new ImageIcon("2.png"));}}public void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}public void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub}public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub}public void itemStateChanged(ItemEvent arg0) { String str=songlist.getSelectedItem();playsong.stop();for(int i=0;i<name.length;i++)if(str==name[i]){j=i;break;}Yu.run();}public void run(){playsong=song[j]; //播放状态为播放时playsong.play(); //播放选定歌曲playname=name[j];if(loopbutton==true){playsong.loop(); //循环播放选定歌曲songname.setText("循环播放: "+playname);}elsesongname.setText("正在播放: "+playname);songlist.select(j); //播放列表中选定播放歌曲项目play.setIcon(new ImageIcon("5.png"));}public AudioClip loadSound(String filename){ //返回一个AudioClip对象URL url=null;try{url=new URL("file:"+filename);}catch(MalformedURLException e){ }return Applet.newAudioClip(url);}}5.程序运行结果四、课程设计总结经过这几天Java课程设计, 让我知道了做课程设计通常方法, 经过多种努力最终完成了设计要求.这次课程设计基础上含盖了大学十二个月学习到Java语言知识点, 课设题目要求不仅要求对书本知识有较深刻了解, 同时要求程序设计者有较强思维和动手能力。

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

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

程序设计课程设计综合实验音乐播放器班级:指导老师:组员:2014年12月2日目录1 程序功能描述 -------------------------------------------------------------------------------- 32 开发环境描述 -------------------------------------------------------------------------------- 33 开发技术介绍 -------------------------------------------------------------------------------- 34 详细设计--------------------------------------------------------------------------------------- 4 4.1功能模块划分 ------------------------------------------------------------------------------------ 4 4.2 用户界面设计 ----------------------------------------------------------------------------------- 54.2.1 歌曲列表面板 --------------------------------------------------------------------------------------------- 54.2.2 播放控制面板 --------------------------------------------------------------------------------------------- 84.2.3 搜索及展示面板 ------------------------------------------------------------------------------------------ 84.3 播放功能实现 ----------------------------------------------------------------------------------- 94.3.1播放歌曲 ---------------------------------------------------------------------------------------------------- 94.3.2 暂停及继续播放 ---------------------------------------------------------------------------------------- 114.3.3 音量控制 ------------------------------------------------------------------------------------------------- 124.3.4 播放模式 ------------------------------------------------------------------------------------------------- 124.3.5 时间进度条 ---------------------------------------------------------------------------------------------- 134.4 歌词展示实现 --------------------------------------------------------------------------------- 144.4.1 加载歌词文件 ------------------------------------------------------------------------------------------- 144.4.2 解析歌词文件 ------------------------------------------------------------------------------------------- 144.4.3 展示歌词 ------------------------------------------------------------------------------------------------- 154.5 搜索网络歌曲资源---------------------------------------------------------------------------- 164.5.1 获取HTML文本 --------------------------------------------------------------------------------------- 164.5.2 解析HTML文本 --------------------------------------------------------------------------------------- 184.5.3 抓取数据描述 ------------------------------------------------------------------------------------------- 204.6 网络歌曲资源处理---------------------------------------------------------------------------- 204.6.1 歌曲资源的载体 ---------------------------------------------------------------------------------------- 204.6.2 歌曲资源的操作 ---------------------------------------------------------------------------------------- 244.7 程序内置的游戏------------------------------------------------------------------------------- 264.7.1 2048 -------------------------------------------------------------------------------------------------------- 264.7.2 贪吃蛇 ---------------------------------------------------------------------------------------------------- 274.7.3 五子棋 ---------------------------------------------------------------------------------------------------- 275程序运行 -------------------------------------------------------------------------------------- 28 6 实验小结-------------------------------------------------------------------------------------- 311 程序功能描述音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。

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

音乐播放器Java课程设计报告
1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其 他基本功能。
2、编程简练,可用,尽可能的使系统的功能更加完善和全面
3、说明书、流程图要清楚。
三、课程设计内容
1
音乐播放软件要求:
有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件 功能。
2
主要运用多媒体编程、 图形界面、数组及循环进行设计,从而实现简单的音
上一曲,播放,下一曲,循环四个按钮
JLabel list =new JLabel("播放列表");
List songlist =new List();//显示歌曲列表
AudioClip[] song =new AudioClip[10];
//将音频文件放在数组中
AudioClip playsong; //当前选定播放的音频文件
乐播放。
public
MyMusicPlayer():实现窗口的成员方法
publi c
void run():实现改变歌曲的播放状态的成员方法
public
AudioClip loadSound(String)
:实现对声音的加载
public
void mouseClicked(MouseEvent e)
:实现对按钮的监听
JButton btn=(JButton)e.getSource(); playsong .stop();
if (btn== play)
{if(playbutton==false)playbutton =true;
else
playbutton =false;
play后改变播放状态
}
else

(完整word版)基于java的音乐播放器的设计

(完整word版)基于java的音乐播放器的设计

《课程设计报告》课程名称:WEB课程设计2016—2017 学年度第一学期题目:基于java的音乐播放器系别:信息工程学院专业: 计算机科学与技术专业班级:指导教师:编者目录一。

需求分析 (1)(一)背景 (1)(二)音乐播放器需求分析 (1)二.概要设计 (5)(一)系统所用类及各类的主要说明 (5)(二)系统UML类图 (6)三。

详细设计 (8)(一)核心技术介绍 (8)(二)创建播放器的图形用户界面所需的控件 (11)四。

系统实现 (14)五.测试 (44)结论 (46)一.需求分析(一)背景随着计算机的广泛运用,手机市场的迅速发展,各种音频视频也在网上广为流传,这些资源看似平常,但以渐渐成为人们必不可少的一部分了,于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对很多用户的时间造成了很多资源的浪费,比如CPU、内存的占有率过高,在用户需求多用户操作时,受到了不小的影响,带来了许多的不便,而对于大多数普通用户,许多功能用不上,形同虚设。

(二)音乐播放器需求分析根据项目,我们可以获得项目系统的基本需求主要是功能需求而系统的功能需求,我们分成三部分来概括,即播放器的基本控制需求、播放列表管理需求和性能需求。

以下分别描述:121、播放器的基本控制需求(1)播放:点击播放列表中的歌曲进行播放。

(2)停止:在歌曲列表下方有一个小按钮,当歌曲正在播放时,显示的是可停止的按钮,点击则停止当前播放的歌曲.(3)上一曲:歌曲在播放或者未播放时单击上一曲按钮时歌曲会跳到列表的当前歌曲的上一首.(4)下一曲:歌曲在播放或者未播放时单击下一曲按钮时歌曲会跳到列表的当前歌曲的下一首。

(5)停止:单击停止按钮时立即停止播放当前的歌曲。

3用户需求图音乐播放器系统流程图2、播放列表管理(1)添加歌曲文件夹:在播放列表中单击,选择添加的文件夹则弹出一个添加文件夹的会话框,点击要添加的歌曲,则弹出“添加成功"的消息提示,否则弹出“添加失败”的相关信息。

基于java的音乐播放器课程设计报告 (1)

基于java的音乐播放器课程设计报告 (1)

Java课程设计报告题目:java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。

当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。

2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。

4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。

该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。

音乐播放器课程设计java

音乐播放器课程设计java

音乐播放器课程设计java一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,包括类、对象、继承、封装等;2. 掌握Java中事件处理机制,了解图形用户界面(GUI)设计的基本方法;3. 学会使用Java内置的音频播放库,实现对音乐文件的播放、暂停、停止等基本控制。

技能目标:4. 能够运用所学知识设计并实现一个音乐播放器界面,包括播放、暂停按钮和音乐列表;5. 能够编写相应的Java代码,实现音乐播放器的功能,如音乐文件的加载、播放、暂停和停止;6. 培养学生解决问题的能力,学会调试和修复程序中出现的错误。

情感态度价值观目标:7. 培养学生对编程的兴趣和热情,增强其对学习Java语言的自信心;8. 培养学生团队协作精神,学会与他人分享和交流编程经验;9. 培养学生创新意识,激发学生主动探索新知识、新技术的热情。

本课程针对高年级学生,结合学科特点和教学要求,以实用性为导向,旨在让学生掌握Java编程的基本技能,培养其解决实际问题的能力。

通过本课程的学习,学生将能够独立设计并实现一个音乐播放器,提高其编程实践能力。

同时,注重培养学生的情感态度价值观,使其在掌握知识的同时,形成良好的学习习惯和团队协作精神。

二、教学内容1. 面向对象编程基础:- 类的定义与使用- 对象的创建与操作- 继承与多态- 封装与接口2. Java GUI设计:- Swing图形用户界面概述- 常用Swing组件的使用方法- 事件处理机制- 布局管理器3. 音乐播放器功能实现:- 音频播放库简介- 音乐文件的加载与播放- 播放控制功能实现(播放、暂停、停止)- 音乐列表展示4. 教学案例与实战:- 设计音乐播放器界面- 编写音乐播放器功能代码- 调试与优化音乐播放器程序- 项目展示与评价本章节教学内容按照课程目标进行选择和组织,注重科学性和系统性。

教学内容分为四个部分,分别对应Java面向对象编程基础、GUI设计、音乐播放器功能实现和教学案例实战。

java音乐课程设计

java音乐课程设计

java音乐课程设计一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,掌握类和对象的使用;2. 学会使用Java内置的音频处理库,了解音乐播放的基本原理;3. 掌握运用Java编写简单的音乐播放器程序,实现音乐文件的选择、播放、暂停和停止功能。

技能目标:1. 能够运用所学知识,独立完成音乐播放器界面的设计和代码编写;2. 培养学生解决问题的能力,通过调试和优化代码,实现音乐播放器的完善;3. 提高学生的团队协作能力,分组合作完成音乐播放器项目。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生主动探索新知识的精神;2. 引导学生关注音乐与编程的结合,提高学生的审美观念和人文素养;3. 培养学生面对困难勇于挑战的精神,增强自信心,树立正确的价值观。

课程性质:本课程为实践性较强的课程,注重培养学生的实际操作能力和团队协作能力。

学生特点:学生已具备一定的Java编程基础,对面向对象编程有一定了解,对音乐有一定兴趣。

教学要求:教师需注重理论与实践相结合,引导学生主动参与课堂讨论和项目实践,关注学生的个体差异,提供有针对性的指导。

通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。

二、教学内容1. 面向对象编程基础复习:回顾Java中类与对象的概念,理解封装、继承、多态等面向对象特性。

教材章节:第五章 面向对象编程基础2. Java音频处理库介绍:学习Java内置的音频处理库,如Java Sound API,了解音频播放的基本原理。

教材章节:第十二章 多媒体与Java Sound API3. 音乐播放器界面设计:学习使用Java Swing库设计音乐播放器界面,掌握界面布局和事件处理。

教材章节:第七章 Java图形用户界面编程4. 音乐播放器功能实现:运用所学知识,编写音乐播放器代码,实现音乐文件的选择、播放、暂停和停止功能。

教材章节:第十章 文件操作与I/O流处理5. 项目实践:分组进行音乐播放器项目实践,学生协作完成项目,提高实际操作能力。

音乐播放器软件课程设计小组报告(java)

音乐播放器软件课程设计小组报告(java)

软件课程设计实验报告课题:音乐点播系统班级:作者:学号:指导老师:课设评价:课设成绩:(小组报告)一、需求分析1)项目描述 (3)1.1编写目的 (3)1.2项目背景 (3)1.3开发工具及环境简介 (4)2)软件基本要求 (4)二、总体方案设计说明1)整体结构模型 (5)2)各部分功能具体内容及关系 (5)3)任务分配 (6)三、详细设计说明1)客户端设计1.1图形界面设计和列表管理 (6)1.2本地播放 (9)1.3特色功能的实现 (10)1.4客户端与服务器通信 (12)2)服务器端设计2.1服务器界面设计 (14)2.2乐库管理14 (14)2.3服务器与客户端通信 (16)四、测试过程说明1)测试步骤 (16)2)测试结果与测评 (17)五、功能模块使用说明1)客户端 (18)2)服务器端 (19)六、开发计划 (20)七、开发总结与建议 (21)一、需求分析1)项目描述1.1编写目的设计一个基于windows平台的音乐点播系统,实现音乐库的管理以及用户网络下载和播放功能。

通常音乐播放器能够满足音乐的播放功能,实现一款播放器的基本功能,但随着网络的日益发达以及人们对信息交互的需要,越来越多的情况下我们更多的是通过网络来获取音乐资源,但如何有效的实现这一目的以及提供良好的用户体验是其关键。

通过window socket服务将客户端与服务器端相连接,将资源信息通过客户端来显示,不但简洁方便同时也能更好的满足用户需求,给用户带来极大的方便。

1.2项目背景本项目作为《软件课程设计》课程的训练项目提出,在基本的设计实现基础上,将不断对已有的设计进行进一步的修改和完善,最终完成整个软件开发过程。

本次项目的旨在通过不同软件工程设计方法与技术的实践,了解和掌握各种技术、工具平台的特点与局限性,体会协同开发方式。

第1阶段:主要目的是通过对项目需求的分析和理解,通过面向对象的设计方式完成项目前期的准备工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java课程设计报告题目:java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。

当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。

2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。

4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。

该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。

当用户进入音乐播放窗口时,该窗口有几个快捷控制的控键:时间追踪轴:可以实现播放的前进、后退功能,根据用户需求调节音乐的播放进度等;音量控制:设置静音,打开扬声器或者调节音量大小;播放列表:查看当前播放音乐的相关属性。

4.主要功能设计流程5.系统实现及测试:(一)JMF(java媒体框架)简介JMF 即Java媒体框架。

其核心框架支持不同媒体,如音频输出和视频输出,包括时间的时钟同步。

它是一个标准的扩展框架,允许用户制作纯音频流和视频流。

JMF实际上是Java的一个类包。

它包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。

JMF软件是Java Media系列软件的一部分。

采用各种Java Media API,软件开发商人员就能容易、快速地为他们已有的各种应用程序和客户端,Java小程序增添丰富的媒体功能,如流式视频、3D图像和影像处理等。

就是说,各种Java Media API发挥了Java平台的固有优势,将"编写一次,到处运行"的能力扩展到了图像、影像和数字媒体等各种应用领域,从而大大缩减了开发时间和降低了开发成本。

在开发JMF 应用程序之前要完全理解JMF 的体系架构、接口和类。

就拿我们的家用摄像机系统作个例子。

首先用摄像机拍摄内容,拍摄下来的内容录制在DV带中。

DV带可以放在放像机里播放、放像机提供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱里听到声音。

JMF API 提供的也是同样的模型。

JMF 提供的模型可大致分为七类* 数据源(Data source)* 截取设备(Capture Device,包括视频和音频截取设备)* 播放器(Player)* 处理器(Processor)* 数据池(DataSink)* 数据格式(Format)* 管理器(Manager)如果只是想观看捕获的内容,只需要使用捕获数据源创建播放器Player即可。

如果想把捕获的数据发送到网络或者保存起来,就需要创建处理器Processor。

基本步骤是首先获取视频、音频捕获设备的信息,然后再根据取得的设备信息确定设备的位置。

找到设备的位置以后,调用ManageCreatePlayer 方法创建Player,当Player开始播放的时候,就开始了捕获的过程。

有多种方法获得捕获设备信息,可以通过查询指定的格式,也可以查询特定的设备名字。

Player准备好播放数据,当Player发出这个事件时,就可以获取播放器的可视面板和控制面板了。

具体步骤如下:1. 先把所有的捕获设备调出来2. 创建Player,当Play开始的时候,就开始了音频捕获的过程3.以MediaLocator为参数,创建Player4. 为PLAYER添加监听器,以便监听RealizeComplete事件(二)代码实现(1)添加库、包等相关文件import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;(2)初始化窗口1代码实现private void init() {// TODO Auto-generated method stubthis.setLayout(new BorderLayout());JPanel lrcPanel = new JPanel();JPanel controP= new JPanel();jta = new JTextArea(22,35);jta.setBackground(Color.black);jta.setLineWrap(true);jta.setWrapStyleWord(true);jta.setEditable(false);lrcPanel.add(new JScrollPane(jta));lrcPanel.setBackground(Color.black);lrcPanel.setVisible(true);JButton Jstart= new JButton("");Jstart.setIcon(new ImageIcon("start.png"));Jstart.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stubstart();}});JButton Jpause=new JButton();Jpause.setIcon(new ImageIcon("停止.png")); Jpause.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){stop();}});JButton Jnext =new JButton();Jnext.setIcon(new ImageIcon("next.png"));Jnext.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubnext();}});JButton Jprior =new JButton();Jprior.setIcon(new ImageIcon("back.png"));Jprior.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){back();}});controP.setLayout(new FlowLayout());controP.add(Jprior);controP.add(Jstart);controP.add(Jpause);controP.add(Jnext);this.add(lrcPanel,BorderLayout.CENTER);this.add(controP,BorderLayout.SOUTH);}(3)音乐播放窗口机基本功能的实现①界面②代码实现// 播放方法public void start() {if(isplaying==false){try {player = Manager.createPlayer(new File(mp3List.get(mp3NO)).toURI().toURL());jta.setText(null);} catch (NoPlayerException e) {// TODO 自动生成catch 块e.printStackTrace();System.out.println("不能播放此文件!");return;} catch (IOException e) {// TODO 自动生成catch 块e.printStackTrace();return;}if (player == null) {System.out.println("播放文件为空!");return;}player.addControllerListener(this);// 提取媒体内容player.prefetch();isplaying=true;//正在播放一首歌setLrc();}}private void setLrc() {// TODO Auto-generated method stubFile lrcfile = new File(lrcpath);if(!lrcfile.exists()){lrcfile.mkdir();}String lrcFName = getlrcFName();BufferedReader bReader;File lcf= new File(lrcpath+lrcFName+".lrc");System.out.println(lcf.getName());try {bReader = new BufferedReader(new FileReader(lcf));String s;while((s=bReader.readLine()) != null){jta.append(" "+s);jta.append("\n");}} catch (Exception e) {// TODO Auto-generated catch blockjta.setText("没有歌词");System.out.println("没有歌词文件!");}}private String getlrcFName() {//解析歌曲名;// TODO Auto-generated method stubString musicPath = mp3List.get(mp3NO);String s =musicPath.substring(11);System.out.println(s);String []str = s.split("\\.");String lrcFName=str[0] ;System.out.println(lrcFName);return lrcFName;}public void stop(){player.stop();isplaying=false;}public void next(){if(isplaying==true)stop();if(mp3NO<mp3List.size()-1){mp3NO++;start();}else{jta.setText("没有下一首了(<_>");}}public void back(){if(isplaying)stop();if(mp3NO>0){mp3NO--;start();}elsejta.setText("已经是第一首歌了(<_>)");}public void controllerUpdate(ControllerEvent e) {// 当媒体播放结束时,循环播放if (e instanceof EndOfMediaEvent) {isplaying=false;mp3NO++;System.out.println(mp3NO);if (mp3NO < mp3List.size()) {this.start();}return;}// 当提取媒体的内容结束if (e instanceof PrefetchCompleteEvent) {System.out.println("内容结束");player.start();return;}// 当实例化后if (e instanceof RealizeCompleteEvent) {System.out.println("实例化");// pack(); //执行pack()操作return;}}public void setMp3List(){File file = new File(musicpath);if( !file.exists()){file.mkdir();}File[] mcFiles ;mcFiles = file.listFiles();if(mcFiles!=null){for(File f : mcFiles){ System.out.println(f.getPath());mp3List.add(f.getPath());}}elseSystem.out.println("MyMusic中没有歌曲文件");}6.总结与说明在做写程序实现功能的过程中,界面和基本功能的设计需要较强的逻辑思维,一不小心就容易出错,在具体的功能设计和实现的过程中要尽可能用最简单的语句实现基本的播放器功能。

相关文档
最新文档