2023年7月11日发(作者:)
[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]重庆大学课程设计说明书题目:Java程序设计之课程设计院系:计算机学院计算机科学与技术4班代金龙(20065231)程飞(20065265))专业班级:学生:王小东(2006指导教师:李芝兴2009年1月6日第1页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]目录1、学生成绩评定表………………………………………………32、课程设计任务说明书…………………………………………63、需求分析………………………………………………………74、程序设计过程…………………………………………………74.1实验原理…………………………………………………74.2程序设计图………………………………………………124.3核心代码…………………………………………………135、实验结果………………………………………………………236、总结分析………………………………………………………238、参考文献………………………………………………………23第2页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]课程设计指导教师评定成绩表姓名:代金龙学号:20065231优秀项目分值(100>x≥90)参考标准学习态度认真,科学作风严谨,学习态度严格保证设计时15间并按任务书中规定的进度开展各项工作设计合理、理论分析与计算正确,实验数据准技术水平与实际能力25确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信有重大改进或独创新10特见解,有一定实用价值结构严谨,逻辑论文(计算书、图纸)撰写质量50语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰有较大改进或新颖的见解,实用性尚可结构合理,符合分明,语言准符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层文理通顺,基化要求,书写比较工整;图清晰结构基本合清楚,文字尚通顺,勉强达到规范化要求;图纸比较内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰次较为分明,理,逻辑基本有一定改进或新的见解有一定见解观念陈旧设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信良好(90>x≥80)参考标准学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务中等(80>x≥70)参考标准学习态度尚好,遵守组织纪律,基本保按期完成各项工作设计合理,理论分析与计实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析错,实验数据无大错及格(70>x≥60)参考标准学习态度尚可,能遵守组织纪律,能按不及格(x<60)参考标准学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题评分证设计时间,期完成任务算基本正确,与计算无大性强,层次清晰,逻辑,文章层次确,文字流畅,本达到规范纸比较工整、工整指导教师评定成绩:指导教师签名:年月日第3页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]课程设计指导教师评定成绩表姓名:程飞学号:20065265优秀项目分值(100>x≥90)参考标准学习态度认真,科学作风严谨,学习态度严格保证设计时15间并按任务书中规定的进度开展各项工作设计合理、理论分析与计算正确,实验数据准技术水平与实际能力25确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信有重大改进或独创新10特见解,有一定实用价值结构严谨,逻辑论文(计算书、图纸)撰写质量50语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰有较大改进或新颖的见解,实用性尚可结构合理,符合分明,语言准符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层文理通顺,基化要求,书写比较工整;图清晰结构基本合清楚,文字尚通顺,勉强达到规范化要求;图纸比较内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰次较为分明,理,逻辑基本有一定改进或新的见解有一定见解观念陈旧设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信良好(90>x≥80)参考标准学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务中等(80>x≥70)参考标准学习态度尚好,遵守组织纪律,基本保按期完成各项工作设计合理,理论分析与计实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析错,实验数据无大错及格(70>x≥60)参考标准学习态度尚可,能遵守组织纪律,能按不及格(x<60)参考标准学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题评分证设计时间,期完成任务算基本正确,与计算无大性强,层次清晰,逻辑,文章层次确,文字流畅,本达到规范纸比较工整、工整指导教师评定成绩:指导教师签名:年月日第4页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]课程设计指导教师评定成绩表姓名:王小东学号:2006优秀项目分值(100>x≥90)参考标准学习态度认真,科学作风严谨,学习态度严格保证设计时15间并按任务书中规定的进度开展各项工作设计合理、理论分析与计算正确,实验数据准技术水平与实际能力25确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信有重大改进或独创新10特见解,有一定实用价值结构严谨,逻辑论文(计算书、图纸)撰写质量50语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰有较大改进或新颖的见解,实用性尚可结构合理,符合分明,语言准符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层文理通顺,基化要求,书写比较工整;图清晰结构基本合清楚,文字尚通顺,勉强达到规范化要求;图纸比较内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰次较为分明,理,逻辑基本有一定改进或新的见解有一定见解观念陈旧设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信良好(90>x≥80)参考标准学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务中等(80>x≥70)参考标准学习态度尚好,遵守组织纪律,基本保按期完成各项工作设计合理,理论分析与计实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析错,实验数据无大错及格(70>x≥60)参考标准学习态度尚可,能遵守组织纪律,能按不及格(x<60)参考标准学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题评分证设计时间,期完成任务算基本正确,与计算无大性强,层次清晰,逻辑,文章层次确,文字流畅,本达到规范纸比较工整、工整指导教师评定成绩:指导教师签名:年月日第5页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]课程设计任务说明书课程设计题目学院计算机学院Java程序设计之课程设计专业计算机科学与技术年级2006实验教学的目的、任务与要求Java程序设计是计算机网络工程专业一门重要的专业必修课。为了进一步巩固课堂上所学到的知识,深刻把握Java技术的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设Java程序设计的课程设计。课程设计的任务是完成课程设计内容,写出课程设计报告。要求学生掌握:1)掌握Java的语言规范,面向对象的核心概念和特性;2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;3)掌握Java应用软件的开发环境和开发过程;4)掌握基于Jsp网站的开发环境和开发过程;5)掌握面向对象的思想和程序设计方法。学生应完成的工作:分组3~4人/组内容:java版视频播放器语言:Java具体设计内容及要求:1)对视频文件的正确播放;2)能够实现对视频播放的控制,如暂停,播放,快进,快退,上一个,下一个等功能;3)能够进行文件视频的选择,全屏,音量的控制,拖动,播放模式的控制等;4)其它的一些提示信息或附加功能。目前资料收集情况(含指定参考资料):1)《Java程序设计之网络编程》,李芝兴编,清华大学出版社,出版时间2006年3月2)(美)ann,GaryCornell编,《Java2核心技术第6版:基础知识》,机械工业出版社,出版时间2003年10月3)(美)BruceEckel编,《Java编程思想第2版》,机械工业出版社,出版时间2002年9月4)《JMF入门指南》,网络下载。课程设计的工作计划:1.需求分析(说明系统目的,要求,操作流程,开发工具与开发平台)2.总体设计(描述系统功能,系统架构,模块化分)3.详细设计(建立系统的数据结构,协议结构,数据流程图)4.系统实现编码(用所选开发工具完成应用系统)任务下达日期2008年12月24日指导教师(签名)完成日期2009年1月6日学生(签名)第6页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]选题利用javaJMF编制一个能播放mpeg,mpg,mov等格式的视频播放器;要求能够进行播放文件的选择,文件列表框中陈列选择的视频文件,能够控制视频的播放,退出,停止,快进,快退,下一个,上一个,音量的控制,静音控制,全屏选择,任意改变播放视频界面大小等功能。3.需求分析3.1任务目的:1.实现视频文件的正确播放;2.能够实现对视频播放的控制,如暂停,播放,快进,快退,上一个,下一个等功能;3.能够进行文件视频的选择,全屏,音量的控制,拖动,播放模式的控制等;4.任意改变播放视频界面大小等功能。要求学生掌握:1)掌握Java的语言规范,面向对象的核心概念和特性。2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等。3)掌握Java应用软件的开发环境和开发过程4)掌握基于Jsp网站的开发环境和开发过程5)掌握面向对象的思想和程序设计方法。3.2程序的设计、调试、运行的软件环境:操作系统:WindowsXP(SP2)数据库及数据库管理软件:SQLServer2000JDK环境:JavaSEDevelopmentKit(JDK)Version6开发工具:Eclipse3.2运行平台:Windows、Linux各个版本、MAC等任何平台运行环境:JavaSERuntimeEnvironment(JRE)Version4.程序设计过程4.1实验原理JMF提供了一个平台无关的框架来呈现时基媒体(time-basedmedia)。JavaMediaPlayerAPI的设计目标是支持多种标准的媒体格式,包括MPEG-1,MPEG-2,QuickTime,AVI,WAV,AU和MIDI.使用JMF,可以同步呈现不同来源的时基媒体。第7页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]现有的一些媒体播放器都严重依赖原生码来执行解压缩、渲染等计算密集型任务。而JMFAPI则隐藏了具体实现,只提供抽象的编程接口。举例来说,一个用JMF制作的播放器,具体运行的过程中可能会调用到操作系统的本地方法,但开发者写代码时可以无视本地方法的存在。JMFPlayerAPI:接入不同的协议和分发(传输)机制接入不同的媒体数据类型定义事件模型,用于Player和应用程序间的异步通信4.1.1数据源(DataSource)一个DataSource封装了媒体的地址、协议和分发的软件。一个JavaMediaPlayer包含一个DataSource。一旦创建,这个DataSource不能被用于其他媒体的传输。一个Player的数据源可以用MediaLocator或URL来标示。MdiaLocator(媒体定位器)是一个JMF类,用来描述Player播放的媒体。MediaLocator与URL类似,并且可以从URL来创建。他们的区别在于,在Java中,URL只有其协议是已知协议时才能被创建,而MediaLocator则没有这个限制。Java媒体播放器可以播放来自多种数据源的媒体数据,包括本地、网络文件和实时广播等。JMF支持两种不同的数据源。PullData-Source(数据源被动的被获取)-由客户端发起数据传输并控制数据流,已知的协议包括HTTP(超文本传输协议)和本地文件。PushData-Source(数据源主动推送)-由服务器发起数据传输并控制推送数据流。此类数据源包括广播媒体,多点传送的媒体和VOD(视频点播)。客户端程序所能够控制的度量,取决于媒体源的类型。举个例子说,MPEG文件可以被重定位(reposition),那么播放MPEG的客户端程序就可以允许用户重播或者跳进至一个新时间点;而由服务器段控制的广播媒体则不能被重定位;另外VOD协议则支持有限的用户操作,比如一个VOD客户端程序可以允许用户跳进至新位置,但不能快进和快倒。4.1.2Players一个JavaMediaPlayer是一个对象。她基于时间来处理数据流,从DataSource读取数据并在确切的时间点渲染媒体。一个JavaMediaPlayer必须实现Playerinterface.第8页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]Clock定义了基本的计时和同步操作,她被Player用来控制媒体的呈现。Controller继承Clock对外提供提供如下方法:1.管理系统资源2.预载数据3.提供监听机制(Observable),对外发送媒体事件通知Duration提供了检测媒体时长的途径。Player支持标准的用户控制,并放宽了来自于Clock的一些操作限制。多个Player共享一个公共的计时和同步模型。一个Player的媒体时间表示了媒体流的当前位置。每一个Player有一个TimeBase。TimeBase定义了Player的时间流逝。当一个Player被执行start,他的媒体时间会被映射到time-base时间。如多个媒体要同步,那么他们必须使用同一个TimeBase.一个Player的用户界面可以包含一个可视组件和一个控制面板组件(control-panelcomponent)。我们用的时候可以选择实现一个自定义的用户界面,或者使用Player的默认的控制面板组件。一般来说,一个Player在能够呈现媒体之前,必须先执行一序列的操作。而这些操作有可能会耗费一定的时间,所以JMF定义了一些操作状态,并且提供了状态转换的操作机制。4.1.3MediaEventsJMF事件报告机制允许我们的程序响应媒体驱动的错误,比如数据丢失或资源不可用。事件系统同时也提供了重要的通知协议;当我们的程序调用一个Player的异步方法时,只有当收到响应的事件消息时,才能确认操作是否完成。有两种JMF对象会抛出事件,他们是:GainControl对象和Controller对象。对于事件,GainControl和Controller遵循JavaBeans形式。GainControl对象只抛出一种类型的事件-GainChangeEvent。我们通过实现GainChangeListenerinterface来响应gain(增益?)的变化。Controller则会抛出多种派生自ControllerEvent的事件。我们通过实现ControllerListenerinterface来接收诸如Player的Controller抛出的事件消息。下图显示了Controller抛出的各种事件类型:ControllerEvents可分为三类:改变通知、关闭事件和转换事件第9页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]变化通知(Changenotificationevents)诸如RateChangeEvent和DurationUpdateEvent。他们表示Player的一些属性数值发生了变化。这类事件通常是对一些方法调用的回馈。例如,一个Player的setRate方法被调用,他会抛出一个RateChangeEvent.转换事件(TransitionEvents)让我们的程序能够响应Player的状态变化。当Player从一个状态转换到另一个状态时,就会抛出一个转换事件。(在1.4中,我们会提供更多的关于Player状态的信息)当player关闭时,则会抛出关闭事件(ControllerClosedEvents)。当一个Player不再可用时,抛出llerErrorEvent(控制器错误事件)则是关闭事件的一个特例。我们写程序时,通过监听控制器错误事件,可以对Player故障作出响应,从而增进用户体验。4.1.4PlayerStatesJavaMediaPlayer有6种状态。Clock接口定义了两种主要的状态:Stopped和Started。在普通操作中,Plyaer在到达Started状态前,会逐个通过上图中的每一个状态。Unrealized(未实现)状态表示Player已经被实例化,但还不知道媒体的任何信息。当Player第一次被创建,他的状态就是Urealized。Player的realize方法被调用后,会从Unrealized转入Realizing(实现中)状态。这时的Player应该正在检测资源需求。在relization过程中,Player会获取只需加在一次的资源。这些资源包括非独享的渲染资源。(独享资源指的受限的资源。例如只能被一个播放器使用的个别硬件资源,此类资源会在预取(Prefetching)的过程中加载。)Realizing中的Player常常通过网络下载东西。Player结束Realizing状态后,会转入Realized(已实现)状态。这个状态下,Player会知道他需要哪些资源,还知道媒体的类型信息。因为RealizedPlayer知道怎样渲染数据,所以他能够提供可视组件和控件。此时,Player与其他系统对象的连接已经就位,但此时还不会占用任何会阻止其他Player启动的资源。Prefetch被调用后,Player会从Realized状态转入Prefetching(预取中)状态。此时播放器在为呈现媒体作准备,包括调用媒体数据、获取独享资源和其他一些准备工作。在媒体呈现过程中,一些操作可能会导致Prefetching状态重现,例如重新定位播放位置、播放器请求额外的缓冲区等。第10页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]当Player结束预取,将转入Prefetched(预取完成)状态。此时Player已经准备开始播放但尚为实际开始。调用start方法将使Player转入Started状态。此时,Player的媒体时间被映射到time-base时间,并且clock开始运行。此时播放器有可能会等待一个恰当的时间来呈现媒体数据。当player从一个状态转入另一个状态时,会抛出TransitionEvents(转换事件),我们可以通过实现ControllerListener接口来监听这些时间并作出恰当的响应。当播放器开始Realizing和Prefetching的时候,我们可以使用事件报告机制对Player进行管理,在调用Player方法之前,我们可以先检查Player状态,在作出恰当的操作。4.1.5CallingJMFMethods调用JMF方法时的一些约定JMF对于errors(错误)和exceptions(异常)作如下约定。JavaMediaErrors是当程序调用了一个当前状态下非法的方法时抛出的。Errors是在外部程序有控制权的状态下执行了非法的请求而抛出的。举例来说,调用一个处于Started的Player的方法时抛出的就是error。开发者有责任在调用方法前确认Player已被停止。JMFerror是可以通过优化代码来避免的,应用程序不应该捕获JMFerrors,好的应用程序不会碰到这些错误。JavaMediaExceptions是当程序调用了不能完成的方法或在当前状态下不适用的方法。Exceptions是在外部程序没有控制权的状态下抛出的。例如当我们试图同步两个time-base不匹配的Player时,就会抛出异常。之所以是异常而不是错误,是因为我们无从检测time-base是否匹配,是无法预期的。有时,JMF的一些方法会返回非预期的结果,通过检查返回直,我们可以检测实际发生的事情:我们可以通过返回直检查实际被设置的数值,例如:并不是所有的播放器都可以每周期5次的速率呈现媒体数据,如果我们调了setRate(5.0),播放器将会设置一个合法的近似直,这个数值可能是5.0也可能是1.0,我们需要检查返回数据来确认被设置的数据。有时,我们请求的信息是不可用的。例如:Player在播完一个媒体之前,可能不知道媒体的时长,这时如果我们调了getDuration(),getDuration会返回DURATION_UNKNOWN.当媒体被播放完一次,再调getDuration时,则会返回正确的时长。第11页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]4.2程序设计图界面级相关组件设置与初始化方法:setComponentProperty()进行相关的组件添加,关联,贴图等初始化工作List中右击鼠标事件处理,弹出选择操作菜单:mousePressed();List中双击鼠标事件处理,开始播放选中文件:mouseClicked();List列表框中鼠标事件监听及处理方法:addPlayListListener()单击List中从列表删除事件:menuItem_seListener();单击List中播放暂停事件:menuItem_seListener();单击List中向列表中添加事件:menuItem_seListener();单击List中清除播放列表事件:menuItem_seListener();左键单击播放暂停按钮事件处理:but_ionListener();左键单击停止按钮事件处理:but_ionListener();界面上控制按钮单击事件监听及处理方法:addPlayBottonListener()左键单击上一个按钮事件处理:but_ionListener();左键单击下一个按钮事件处理:but_ionListener();左键单击快退按钮事件处理:but_ionListener();左键单击快进按钮事件处理:but_ionListener();左键单击静音按钮事件处理:but_ionListener();左键单击文件按钮事件处理:seListener();左键单击单曲播放按钮事件处理:single_seListener();开始:对象实例化构造函数调用成员方法左键单击单曲循环按钮事件处理:single_seListener();左键单击循环播放按钮事件处理:loop_seListener();对菜单条的鼠标事件监听及处理方法:addPlayMenuListener()左键单击随机播放按钮事件处理:random_seListener();左键单击播放暂停按钮事件处理:ionListener();左键单击停止按钮事件处理:ionListener();左键单击打开按钮事件处理:ionListener();左键单击退出按钮事件处理:ionListener();左键单击关于按钮事件处理:ionListener();左键单击帮助按钮事件处理:help_.addActionListener();第12页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]单击播放暂停按钮事件处理:menuItem_ionListener();单击停止按钮事件处理:menuItem_ionListener();对播放界面上播放视频时右击事件监听及处理方法:addRightClickListener()单击快进按钮事件处理:menuItem_ionListener();单击快退按钮事件处理:menuItem_ionListener();单击退出按钮事件处理:menuItem_ionListener();对播放视频时改变窗体大小事件监听及处理方法:pnentLister();对用户拖动进度条事件监听及处理方法:初始化播放器,准备开始播放视频文件:Jslider_seLiatener()startPlayer(StringmediaLocation);一个内部类进行视频文件的相关操作:classPlayerEventHandlerextendsControllerAdapter;4.3核心代码:/******************************************************/publicppp(Strings){//构造函数super(s);setComponentProperty();addPlayListListener();addPlayButtonListener();addPlayMenuListener();addRightClickListener();addFrameChangeListener();}//构造函数结束/******************************************************/publicvoidaddPlayListListener(){//对list列表中鼠标事件进行监听并处理seListener(newMouseAdapter(){//list列表监听事件publicvoidmousePressed(MouseEvente){//ressed(e);n(ifiers());//通过这个函数返回值区分是单击还是双击intmods=ifiers();if(mods==4){//4时为右击(menuItem_playSelect);(menuItem_delete);(menuItem_Addfile);(menuItem_deleteAll);(list,(),());}第13页[键入文字]iava课程设计---视频播放器组员:代金龙程飞王小东[键入文字]}publicvoidmouseClicked(MouseEvente){if(ckCount()==2){//在列表框中双击事件for(inti=0;i
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689067068a202404.html
评论列表(0条)