java课程设计实验报告带面板的视频播放器的制作
JAVA课程设计报告 视频播放器

重庆大学课程设计说明书题目:Java程序设计之课程设计院系:计算机学院专业班级:计算机科学与技术4班学生:代金龙(20065231)程飞(20065265)王小东(2006)指导教师:李芝兴2009年1月6日目录1、学生成绩评定表 (3)2、课程设计任务说明书 (6)3、需求分析 (7)4、程序设计过程 (7)4.1实验原理 (7)4.2程序设计图 (12)4.3核心代码 (13)5、实验结果 (23)6、总结分析 (23)8、参考文献 (23)姓名:代金龙学号:20065231项目分值优秀(100>x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)评分参考标准参考标准参考标准参考标准参考标准学习态度15学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作学习态度尚可,能遵守组织纪律,能按期完成任务学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度技术水平与实际能力25设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析与计算无大错,实验数据无大错设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题创新10有重大改进或独特见解,有一定实用价值有较大改进或新颖的见解,实用性尚可有一定改进或新的见解有一定见解观念陈旧论文(计算书、图纸)撰写质量50结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰指导教师评定成绩:指导教师签名:年月日姓名:程飞学号:20065265项目分值优秀(100>x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)评分参考标准参考标准参考标准参考标准参考标准学习态度15学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作学习态度尚可,能遵守组织纪律,能按期完成任务学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度技术水平与实际能力25设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析与计算无大错,实验数据无大错设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题创新10有重大改进或独特见解,有一定实用价值有较大改进或新颖的见解,实用性尚可有一定改进或新的见解有一定见解观念陈旧论文(计算书、图纸)撰写质量50结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰指导教师评定成绩:指导教师签名:年月日姓名:王小东学号:2006项目分值优秀(100>x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)评分参考标准参考标准参考标准参考标准参考标准学习态度15学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作学习态度尚可,能遵守组织纪律,能按期完成任务学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度技术水平与实际能力25设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析与计算无大错,实验数据无大错设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题创新10有重大改进或独特见解,有一定实用价值有较大改进或新颖的见解,实用性尚可有一定改进或新的见解有一定见解观念陈旧论文(计算书、图纸)撰写质量50结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰指导教师评定成绩:指导教师签名:年月日课程设计任务说明书课程设计题目Java程序设计之课程设计学院计算机学院专业计算机科学与技术年级2006实验教学的目的、任务与要求Java程序设计是计算机网络工程专业一门重要的专业必修课。
《程序设计实训I》媒体播放器设计和实现综合设计报告 软件工程专业

媒体播放器一.引言现在人们娱乐的方式多种多样,已经有了很明显的变化,以前的户外运动现在已经在锐减,换而之的是网络游戏与网上聊天,而在同时听听音乐看看电影也成为了巨大的需求,所以很多多媒体播放软件出现了,形形色色各种都有,而我也赶下时髦,体验一下编写的过程,现在才发现这并不难,重要的是插件的插入,而其他的功能实现只需调用相应函数就行了!二.系统设计的基本概念与原理1. 基本概念与知识(1). MFCMFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
(2)MFC编程特点微软基础类(Microsoft Foundation Classes),是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。
MFC是Win API与C++的结合,API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现, MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Windows下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图等。
java课程设计报告---视频播放器

重庆大学课程设计说明书题目: Java程序设计之课程设计院系:计算机学院专业班级:计算机科学与技术4班学生:代金龙(20065231)程飞(20065265)王小东(2006 )指导教师:李芝兴2009 年 1月 6 日目录1、学生成绩评定表 (3)2、课程设计任务说明书 (6)3、需求分析 (7)4、程序设计过程 (7)4.1 实验原理 (7)4.2 程序设计图 (12)4.3 核心代码 (13)5、实验结果 (23)6、总结分析 (23)8、参考文献 (23)指导教师评定成绩:指导教师签名:年月日指导教师评定成绩:指导教师签名:年月日指导教师评定成绩:指导教师签名:年月日课程设计任务说明书选题利用java JMF编制一个能播放mpeg,mpg,mov等格式的视频播放器;要求能够进行播放文件的选择,文件列表框中陈列选择的视频文件,能够控制视频的播放,退出,停止,快进,快退,下一个,上一个,音量的控制,静音控制,全屏选择,任意改变播放视频界面大小等功能。
3.需求分析3.1任务目的:1.实现视频文件的正确播放;2. 能够实现对视频播放的控制,如暂停,播放,快进,快退,上一个,下一个等功能;3.能够进行文件视频的选择,全屏,音量的控制,拖动,播放模式的控制等;4.任意改变播放视频界面大小等功能。
要求学生掌握:1)掌握Java的语言规范,面向对象的核心概念和特性。
2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等。
3)掌握Java应用软件的开发环境和开发过程4)掌握基于Jsp网站的开发环境和开发过程5)掌握面向对象的思想和程序设计方法。
3.2程序的设计、调试、运行的软件环境:操作系统:Windows XP(SP2)数据库及数据库管理软件:SQL Server 2000JDK环境:Java SE Development Kit(JDK)Version 6开发工具:Eclipse3.2运行平台:Windows、Linux各个版本、MAC等任何平台运行环境:Java SE Runtime Environment(JRE)Version4.程序设计过程4.1实验原理JMF提供了一个平台无关的框架来呈现时基媒体(time-based media)。
基于Java的在线影音播放器开发及优化

基于Java的在线影音播放器开发及优化一、引言随着互联网的普及和网络带宽的提升,在线影音播放器已经成为人们日常娱乐生活中不可或缺的一部分。
基于Java语言的在线影音播放器具有跨平台性、易维护性和良好的扩展性等优点,因此备受开发者青睐。
本文将探讨基于Java的在线影音播放器的开发过程以及优化方法,帮助开发者更好地实现高性能、稳定可靠的在线影音播放器。
二、开发环境搭建在进行基于Java的在线影音播放器开发之前,首先需要搭建相应的开发环境。
通常情况下,我们可以选择使用JavaFX作为界面开发框架,结合FFmpeg等多媒体处理库来实现音视频播放功能。
同时,还需要考虑到网络通信模块的集成,以实现在线流媒体播放功能。
三、功能设计与实现1. 音视频格式支持在开发在线影音播放器时,需要考虑支持常见的音视频格式,如MP4、AVI、MKV等。
通过集成FFmpeg等多媒体处理库,可以实现对不同格式的音视频文件进行解码和播放。
2. 播放控制功能在线影音播放器通常具备播放、暂停、快进、快退、音量调节等基本控制功能。
通过JavaFX提供的界面组件和事件处理机制,可以轻松实现这些功能,并提供良好的用户体验。
3. 网络流媒体支持为了实现在线直播和点播功能,需要集成网络通信模块,支持HTTP、RTMP等流媒体协议。
通过网络请求和数据解析,可以实现从网络获取音视频数据并进行实时播放。
四、性能优化策略1. 资源管理优化在播放大规模音视频文件时,需要合理管理内存和线程资源,避免内存泄漏和资源浪费。
可以通过使用线程池管理线程、定时清理无用资源等方式来优化资源管理。
2. 缓冲策略优化为了提高在线影音播放器的流畅度和加载速度,可以采用预加载、分段缓冲等策略来优化缓冲机制。
通过合理设置缓冲区大小和加载策略,可以有效减少卡顿和加载时间。
3. 码率自适应优化针对不同网络环境和设备性能,可以实现码率自适应功能,根据当前网络带宽和设备性能动态调整音视频码率。
Java程序设计课程设计报告音乐播放器

《Java及Java web应用开发》实验报告设计题目: Java音乐播放器专业计算机信息管理班级 1班****2014年12月24 日import java*.media.ControllerEvent;import java*.media.ControllerListener;import java*.media.EndOfMediaEvent;import java*.media.PrefetchpleteEvent;import java*.media.RealizepleteEvent;import java*.media.*;import java*.swing.*;import java.awt.*;import java.awt.event.*;public class MediaPlayer e*tends JFrame implements ActionListener, ItemListener, ControllerListener {String title;Player player;boolean first = true, loop = false;ponent vc, cc;String currentDirectory=null;// 构造函数,其中包括了设置响应窗口事件的监听器。
MediaPlayer(String title) {super(title);/* 关闭按钮的实现。
*/addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose(); }public void windowClosed(WindowEvent e) {if (player != null)player.close();System.e*it(0);} }); // 调用程序菜单栏的方法成员完成菜单的布置setupMenu();setSize(400, 400);setVisible(true); } // 本方法用以设置程序菜单栏public void setupMenu() {// 设置一个菜单Menu f = new Menu("文件");// 往设置的菜单添加菜单项MenuItem mi = new MenuItem("打开");f.add(mi);mi.addActionListener(this);f.addSeparator();Checkbo*MenuItem cbmi = new Checkbo*MenuItem("循环", false); cbmi.addActionListener(this);f.add(cbmi);f.addSeparator();MenuItem ee = new MenuItem("退出");ee.addActionListener(this);f.add(ee);f.addSeparator();Menu l = new Menu("播放列表");Menu c = new Menu("播放控制");MenuItem move = new MenuItem("播放");move.addActionListener(this);c.add(move);c.addSeparator();MenuItem pause = new MenuItem("暂停");pause.addActionListener(this);c.add(pause);c.addSeparator();MenuItem stop = new MenuItem("停止");stop.addActionListener(this);c.add(stop);c.addSeparator();// 设置一个菜单栏MenuBar mb = new MenuBar();mb.add(f);mb.add(c);mb.add(l);// 将构造完成的菜单栏交给当前程序的窗口; setMenuBar(mb); }// 动作时间响应成员;捕捉发送到本对象的各种事件; public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString cufile, selectfile, currentDirectory;if (e.getActionmand().equals("退出")) {// 调用dispose以便执行windowCloseddispose();return; }// 此事表明拥护选择了“播放”命令;// 如果当前有一个文件可以播放则执行播放命令;if (e.getActionmand().equals("播放")) {if (player != null) {player.start(); }return; }// 如果当前正在播放*一文件,则执行暂停;if (e.getActionmand().equals("暂停")) {if (player != null) {player.stop(); }return; } // 停止命令的响应;if (e.getActionmand().equals("停止")) {if (player != null) {player.stop();player.setMediaTime(new Time(0)); }return; } // 用户选择要播放的媒体文件if (e.getActionmand().equals("打开")) {FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD); // fd.setDirectory(currentDirectory);fd.setVisible(true);// 如果用户放弃选择文件,则返回if (fd.getFile() == null) {return; }// 保存了所选文件的名称及其路径名称已被稍后使用// 同时设置当前文件夹路径selectfile = fd.getFile();currentDirectory = fd.getDirectory();cufile = currentDirectory + selectfile;// 将用户选择的文件作为一个菜单项加入播放列表,该菜单项名为该文件名; // 被点击后给出的命令串是该文件的全路径名MenuItem mi = new MenuItem(selectfile);mi.setActionmand(cufile);MenuBar mb = getMenuBar();Menu m = mb.getMenu(2);mi.addActionListener(this);m.add(mi);} else {// 程序逻辑运行到次表示用户选择了一个“播放列表”中的媒体文件// 此时可以通过如下动作获得该文件的全路径名cufile = e.getActionmand();selectfile = cufile; }// 如果存在一个播放器,则先将其关闭,稍后再重新创建// 创建播放器时需要捕捉一些异常if (player != null) {player.close(); }try {player = Manager.createPlayer(new MediaLocator("file:" + cufile));} catch (E*ception e2) {System.out.println(e2);return; }/** catch(NoPlayerE*ception e2){ System.out.println("不能找到播放器"); * return ; }*/if (player == null) {System.out.println("无法创建播放器");return; }first = false;setTitle(selectfile);// 设置处理播放控制器实际的对象;/**/player.addControllerListener(this);player.prefetch(); }// 菜单状态改变事件的响应函数;public void itemStateChanged(ItemEvent arg0) {// TODO Auto-generated method stub }public static void main(String[] args) {// TODO Auto-generated method stubnew MediaPlayer("播放器"); }// 调用绘图函数进行界面的绘制// public void update() { // }// 绘图函数成员//public void paint(Graphics g) { // }public void controllerUpdate(ControllerEvent e) {// TODO Auto-generated method stubContainer tainer = getContentPane();// 调用player.close()时ControllerClosedEvent事件出现// 如果存在视觉部件,则该部件应该拆除(为了一致起见,我们对控制面版部件也执行同样的操作,下一次需要时再构造)if (e instanceof ControllerClosedEvent) {if (vc != null) {remove(vc);vc = null; }if (cc != null) {remove(cc);cc = null; } }// 播放结束时,将播放指针置于文件之首,如果设定了循环播放,则再次启动播放器;if (e instanceof EndOfMediaEvent) {player.setMediaTime(new Time(0));if (loop) {player.start(); }return; }// PrefetchpletEvent事件发生后调用start,正式启动播放if (e instanceof PrefetchpleteEvent) {player.start();return; }// 本事件表示由于播放的资源已经确定;此时要将媒体的图形conmopnent// 如果有显示出来,同时将播放器player的控制显示到窗口里;if (e instanceof RealizepleteEvent) {// 如果媒体中有图像,将对应图像ponent载入窗体;vc = player.getVisualponent();if (vc != null)tainer.add(vc, BorderLayout.CENTER);// 将对应控制器ponent载入窗体;cc = player.getControlPanelponent();cc.setBackground(Color.blue);if (cc != null)tainer.add(cc, BorderLayout.SOUTH);// 有一些特殊媒体在播放时提供另外的控制手段,将控制器一并加入窗口; /* * gc=player.getGainControl(); gcc=gc.getControlponent();* if(gcc!=null) tainer.add(gcc,BorderLayout.NORTH); */// 根据媒体文件中是否有图像,设定相应的窗口大小if (vc != null) {pack();return;} else {setSize(300, 75);setVisible(true);return; } } } }。
教你利用VC++和JAVA_设计视频播放器的详细步骤

1.利用VC++设计视频播放器一 需求分析制作一个视频播放器,能够播放多种格式的多媒体文件:CD 音乐曲目(.cda )、数字化波形声音(.WA V )、MIDI 文件(. mid, .rmi, .midi )、Windows Media 文件(. asf, .wm, .wma )、电影文件(. mpeg , . mpg , .mp3)、视频文件(.avi , . wmv )、音频文件(. wav , . snd , .au , .aif )等。
能够有用户自己选择文件,提供媒体播放控制:打开、播放、暂停、停止、全屏能控制播放音量的大小。
应用程序界面美观,使用方便,有完善的操控按钮或进度指示条等。
本课题对软硬件平台要求不高,操作系统可选择Windows2000/Window XP 。
在Visual C++ 6.0下用ActiveMovie 控件来实现。
本课程设计用例如图1所示,用户使用播放器,播放器完成媒体播放和音量调节两大功能。
<< use>> 用户图1 视频播放器UML 用例图二 对象分析由于播放器主要围绕实现以上两大功能,可以建立如表1所示的对象。
表1 播放器所建对象列表对象属性方法操作界面媒体文件、路径,媒体播放进度、状态,音量信息 显示媒体文件信息(文件名、路径) 媒体播放控制:打开文件、播放、暂停、停止、退出、全屏显示播放信息(播放进度、状态)、控制音量媒体播放 媒体文件名、路径,控制命令 打开文件、播放、暂停、停止、退出、全屏 音量控制音量调节 放大音量,减小音量媒体播放 音量调节 播放器音量控制和媒体播放对象对界面管理存在依赖关系,这两个对象要从界面获取控制指令,它们的属性要在界面上显示。
本播放器的类图如图2所示。
图2 播放器类图三 界面设计界面应满足以下要求:1. 界面首先要布置一系列按钮控件实现所有要实现的功能;2. 设置“播放进度条”来指示媒体文件的播放进度,还应该可以用鼠标拖动进度条来改变播放进度;3. 设置音量控制按钮(包括增大和减小);4. 界面应尽量美观;根据以上描述,程序运行时效果如图3所示。
java媒体播放器实验报告

Java程序设计题目:媒体播放器姓名:学号:2014年5月10日目录实验报告一、实验目的二、实验原理三、实验环境四、功能需求五、实验总结系统方案书一、引言1、编写目的2、参考资料二、系统的结构(程序流程图)三、模块设计说明1、模块描述2、总体功能3、关于帮助媒体播放器使用说明书一、使用方法:1、打开媒体播放器2、打开文件3、播放,暂停,停止,快进,快退4、退出程序5、帮助(关于)二、分析摘要1、能力2、缺陷和限制技术报告一、实现的类二、部分功能的实现三、具体代码实验报告一、实验目的通过了解和运用Java编程工具编写制作视频媒体播放器,提高Swing和jmf技术结合的综合运用能力。
二、实验原理本实验要求在理解Java文件操作原理基础和GUI编写的基础上,实现视频文件的打开、播放、暂停、后退和前进等功能,实现媒体播放器基本功能。
三、实验环境软件环境Windows操作系统J2SDK1.6Eclipse等硬件环境计算机四、功能需求实现媒体播放器的功能如下:(1)可以打开视频文件夹;(2)双击文件或者选中后打开可播放该视频。
(3)播放时可以开始、暂停、停止、快进、快退进行控制;(4)可以退出和关闭播放器。
五、实验总结通过这次自主实验,让我了解到了编写一个Java应用程序的过程:一开始我先分析这个“媒体播放器”要实现的功能,并归纳出来,然后我开始确定相关的Java和JMF 的知识点,寻找相关的参考书和上网搜索知识点。
我分析出的知识包括:swing和JMF 及相关组件的使用,根据这些做出程序的界面、播放器组件的设置和使用文件的处理。
几个星期的学习使我们提高自己的编程能力。
系统方案书一、引言1、编写目的为了能够使在编写媒体播放器的过程能够高效的进行,少走弯路。
2、参考资料《Java程序设计教程》机械工业出版社《Java多媒体技术》清华大学出版社二、系统的结构(程序流程图)三、模块设计说明随着社会文明的发展,人们不再仅仅满足于物质享受,更加追求精神上的享受。
用Java构造自己的媒体播放器

用Java构造自己的媒体播放器用Java构造自己的媒体播放器关键词:媒体播放器, 构造, Java , 媒体, 播放一、概述首先我们来看看构造这个媒体播放器要达到什么样的目标,确定了目标也就确定了代码量和程序的复杂程度。
本文的媒体播放器要达到如下目标:媒体播放器是一个菜单驱动的简单AWT应用。
媒体播放器包含一个“文件”菜单,文件菜单包含三个菜单项:“打开”,用来打开媒体文件。
“循环”,是播放一次(默认),还是重复播放。
“退出”,退出程序。
媒体播放器可以在多种平台上运行。
媒体播放器的核心功能通过JMF(Java Media Framework)API 实现。
JMF扩展了J2SE 平台的多媒体能力,允许Java应用和Applet 截取、回放、转换包括音频和视频在内的多种媒体。
JMF支持多种媒体格式,具体请参见Supported Media Formats and Capture Devices。
二、初步设计我们把这个媒体播放器的设计分成两个部分:GUI设计,伪代码设计。
在GUI设计中,我们要了解构成程序的各个GUI部件。
在伪代码设计中,我们用自然语言写出程序运行原理。
2.1 GUI设计媒体播放器的用户界面包含一个主窗口、一个菜单和一个打开文件的对话框。
首先我们来看看主窗口的设计。
主窗口应该把窗口标题显示为“媒体播放器1.0”,显示“文件”菜单,显示彩色背景的“欢迎”信息。
图一显示了程序刚启动时的主窗口。
图一:媒体播放器的主窗口“文件”菜单包含三个菜单项。
“打开”菜单显示一个对话框,用来选择媒体文件的位置。
“循环”菜单决定媒体文件只播放一次(默认)还是反复播放(当菜单被选中)。
最后,“退出”菜单关闭程序。
另外,点击主窗口右上角的关闭按钮也可以关闭程序。
请参见图二。
图二:“文件”菜单点击“文件/打开”菜单时,“打开媒体文件”对话框出现。
选中媒体文件之后,点击“打开”按钮即可打开媒体文件;点击“取消”按钮中止文件打开操作。
实验8数字视频播放器120515修改

实验8 数字视频播放器实验目的:1.进一步掌握MCI函数的应用。
2.制作数字视频播放器,并具有以下功能:打开视频播放设备,播放视频文件,可静态观看每一帧视频,并且可设置播放速度,还能在全屏播放与正常播放之间转换。
实验步骤:一如实验1建立应用程序框架二制作应用程序界面1.制作对话框对话框控件属性表控件ID 标题控件ID 标题pictrue IDC_DISPLAY Static IDC_PLAY_SOUNDGroup Box IDC_STATIC 视频信息Static IDC_FRAMES Static IDC_STATIC 视频文件名:Static IDC_DEMENSIONStatic IDC_STATIC 播放速度:Button IDC_OPEN 打开Static IDC_STATIC 是否静音:Button IDC_PLAY 播放Static IDC_STATIC 视频帧数:Button IDC_PAUSE 暂停Static IDC_STATIC 视频尺寸:Button IDC_PRE 上一帧Static IDC_VIDEO_NAME Button IDC_NEXT 下一帧Static IDC_PLAY_SPEED Button IDC_STOP 停止现在在应用程序中插入一个对话框资源(插入—资源—对话框),用来设置播放速度,其ID 设为IDD_SPEED:IDD_SPEED对话框控件属性表控件ID 标题Edit Box IDC_SPEED1Button IDOK 确定Button IDCANCEL 取消还需象应用程序中插入一个对话框资源,用做视频输出窗口,ID为IDD_DISPLAY。
2.制作菜单插入一个菜单资源,将ID设为IDR_MAINFRAME。
IDR_MAINFRAME 中的菜单项在你的主对话框的属性中的菜单项中,选中IDR_MAINFRAME现在编译一下,就得到了我们所要的界面。
播放器实验报告(3篇)

第1篇一、实验目的1. 熟悉播放器的基本原理和功能模块。
2. 掌握音频、视频文件的解码与播放技术。
3. 提高编程能力和项目实践能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++4. 常用库:FFmpeg三、实验内容1. 播放器界面设计2. 音频、视频文件解码3. 音频、视频同步播放4. 控制功能实现四、实验步骤1. 播放器界面设计(1)创建项目,添加所需控件(2)设置控件属性,包括大小、位置、颜色等(3)添加播放按钮、暂停按钮、停止按钮等控制按钮2. 音频、视频文件解码(1)引入FFmpeg库(2)加载音频、视频文件(3)解码音频、视频数据3. 音频、视频同步播放(1)创建音频、视频播放线程(2)实现音频、视频数据同步(3)调整播放进度4. 控制功能实现(1)添加播放按钮、暂停按钮、停止按钮等事件处理函数(2)实现播放、暂停、停止等功能五、实验结果与分析1. 播放器界面设计本实验成功实现了播放器界面设计,包括播放区域、控制按钮、进度条等。
界面简洁美观,用户操作方便。
2. 音频、视频文件解码通过引入FFmpeg库,成功实现了音频、视频文件的解码。
在解码过程中,我们提取了音频、视频的采样率、码率、帧率等关键信息,为后续同步播放提供了依据。
3. 音频、视频同步播放在实现音频、视频同步播放时,我们采用了线程同步技术。
通过创建音频、视频播放线程,分别处理音频、视频数据的播放,确保了音频、视频播放的同步性。
同时,我们还实现了播放进度调整功能,方便用户实时查看和调整播放进度。
4. 控制功能实现本实验成功实现了播放、暂停、停止等功能。
用户可以通过控制按钮,轻松实现播放器的控制操作。
六、实验总结通过本次实验,我们掌握了播放器的基本原理和功能模块,熟悉了音频、视频文件的解码与播放技术。
同时,我们还提高了编程能力和项目实践能力。
以下为实验过程中总结的一些心得体会:1. 熟练掌握FFmpeg库的使用,能够实现音频、视频文件的解码与播放。
JAVA带面板的视频播放器制作课程设计

04
视频播放器功能实现
视频文件读取与解码
视频文件格式: MP4、AVI、 MKV等
读取视频文件: 使用Java的 FileInputStre am类读取视频 文件
视频解码:使用 Java的 MediaCodec 类进行视频解码
视频播放:使用 Java的 MediaPlayer 类进行视频播放
视频播放控制
设置选项:视频画质、音频设置、字幕设 置等个性化设置
02
JAVA开发环境搭建
JDK安装与配置
下载JDK:访问Oracle官网,下载适合自己操作系统的JDK版本
安装JDK:按照安装向导的提示,完成JDK的安装
配置环境变量:在系统环境变量中 ,添加JAVA_HOME 、PATH和CL ASSPATH三个变量,并设 置其值
添加标题
添加标题
理解视频播放器的工作原理
添加标题
添加标题
提高编程能力和解决问题的能力
视频播放器功能介绍
暂停/继续:可以暂停播放, 也可以继续播放
音量调节:可以调节视频 播放的音量大小
字幕显示:可以显示视频 文件的字幕内容
视频搜索:可以搜索和播 放网络上的视频文件
播放视频:支持多种格式 的视频文件播放
视频播放器项目创建与配置
创建项目:使用Eclipse或IntelliJ IDEA创建Java项目
配置项目:设置项目名称、路径、 JDK版本等信息
添加依赖:添加JavaFX库等必要依赖
编写代码:编写视频播放器的主类, 实现视频播放功能
运行项目:在IDE中运行项目,查看视 频播放器效果
调试项目:根据需要调试项目,解决 可能出现的问题
单击此处添加副标题
JAVA带面板的视频播放器
java视频播放器的实现

package com.tainyisoft.jmf;import java.awt.BorderLayout;import ponent;import java.awt.Dimension;import java.awt.Frame;import java.awt.Panel;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import .MalformedURLException;import .URL;import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.Manager;import javax.media.MediaLocator;import javax.media.NoPlayerException;import javax.media.Player;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.Time;@SuppressWarnings({ "restriction", "unused" })public class JMFSample implements ControllerListener { public static void main(String[] args) { JMFSamplesp = new JMFSample();sp.play();}private Player mediaPlayer;private Frame f;private Player player;private Panel panel;private Component visual;private Component control = null;public void play(){f = new Frame("JMF Sample1");f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent we) {if(player != null) {player.close();}System.exit(0);}});f.setSize(500,400);f.setVisible(true);URL url = null;try {//准备一个要播放的视频的URL//file:/home/gsoft2-3/桌面/1.aviurl = new URL("home/gsoft2-3/桌面/1.avi");} catch (MalformedURLException e) {e.printStackTrace();}try {//通过调用Manager的createPlayer方法来创建一个Player对象//这个对象是媒体播放的核心控制对象player = Manager.createPlayer(url);} catch (NoPlayerException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}//对player对象注册监听器,能监听相关的时间发生时执行相应的动作player.addControllerListener(this);//让player对象进行相关的资源分配player.realize();}private intvideoWidth = 0;private intvideoHeight = 0;private intcontrolHeight = 30;private intinsetWidth = 10;private intinsetHeight = 30;//监听player的相关事件public void controllerUpdate(ControllerEventce) {if (ceinstanceofRealizeCompleteEvent) {//player实例化完成后进行player播放前预处理player.prefetch();} else if (ceinstanceofPrefetchCompleteEvent) {if (visual != null)return;//取得player中的播放视频的组建,并得到视频窗口的大小//然后把视频窗口的组建添加到Frame窗口中,if ((visual = player.getVisualComponent()) != null) {Dimension size = visual.getPreferredSize();videoWidth = size.width;videoHeight = size.height;f.add(visual);} else {videoWidth = 320;}////取得player中的视频播放控制条组件,并把改组件添加到Frame窗口中if ((control = player.getControlPanelComponent()) != null) {controlHeight = control.getPreferredSize().height;f.add(control, BorderLayout.SOUTH);}//设定Framge窗口的大小,使得满足视频文件的默认大小f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);f.validate();//启动视频播放组件开始播放player.start();mediaPlayer.start();} else if (ceinstanceofEndOfMediaEvent) {//当播放视频完成后,把时间进度恢复到开始,并在次重新播放player.setMediaTime(new Time(0));player.start();}}}。
使用Java创建视频播放器

使用Java创建视频播放器-一个实战教程视频播放器是一种常见的应用程序,它允许用户播放本地视频文件或在线视频流。
在这个实战博客中,我们将创建一个简单的Java视频播放器,演示如何使用Java编程语言和Java多媒体库来实现视频播放功能。
以下是本实战博客的主要内容:项目概述准备工作创建Java项目添加多媒体库创建GUI界面播放本地视频播放在线视频总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个Java视频播放器应用程序,它包括以下主要功能:显示视频播放窗口,包括播放、暂停、停止、音量控制和进度条。
允许用户选择本地视频文件并播放。
允许用户输入在线视频的URL并播放。
我们将使用Java编程语言和Java多媒体库来构建这个视频播放器应用程序。
2. 准备工作在开始之前,确保您的开发环境已设置好。
我们将使用Java编程语言和一些开发库来构建视频播放器应用程序,不需要额外的工具或库。
3. 创建Java项目首先,创建一个新的Java项目,您可以使用任何Java集成开发环境(IDE)来完成此操作。
在项目中,我们将创建Java类来实现视频播放器应用程序。
4. 添加多媒体库为了播放视频,我们需要引入一个Java多媒体库。
在本示例中,我们将使用JavaFX,它是Java的官方多媒体库,具有强大的视频播放功能。
请确保您的Java开发环境包含JavaFX库。
大多数现代的Java开发工具都默认包含JavaFX。
如果您不确定是否已包含JavaFX,可以在项目配置中进行检查。
5. 创建GUI界面我们将创建一个简单的Swing GUI界面,用于显示视频播放窗口和控制按钮。
创建一个Java 类,例如VideoPlayerApp,并在其中创建GUI界面。
javaCopy codeimport javafx.embed.swing.JFXPanel;import javafx.scene.media.Media;import javafx.scene.media.MediaPlayer;import javafx.scene.media.MediaView;import javafx.util.Duration;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;public class VideoPlayerApp {private JFrame frame;private JFXPanel videoPanel;private MediaView mediaView;private MediaPlayer mediaPlayer;private JButton playButton;private JButton pauseButton;private JButton stopButton;private JSlider volumeSlider;private JSlider progressSlider;public VideoPlayerApp() {frame = new JFrame("视频播放器");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);frame.setLayout(new BorderLayout());videoPanel = new JFXPanel();frame.add(videoPanel, BorderLayout.CENTER);JPanel controlPanel = new JPanel(new FlowLayout());playButton = new JButton("播放");pauseButton = new JButton("暂停");stopButton = new JButton("停止");volumeSlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50);progressSlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 0);controlPanel.add(playButton);controlPanel.add(pauseButton);controlPanel.add(stopButton);controlPanel.add(volumeSlider);controlPanel.add(progressSlider);frame.add(controlPanel, BorderLayout.SOUTH);playButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {playVideo();}});pauseButton.addActionListener(new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) {pauseVideo();}});stopButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {stopVideo();}});volumeSlider.addChangeListener(e -> {adjustVolume(volumeSlider.getValue());});progressSlider.addChangeListener(e -> {seekToProgress(progressSlider.getValue());});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(() -> new VideoPlayerApp());}private void playVideo() {// 实现播放视频的代码,略...}private void pauseVideo() {// 实现暂停视频的代码,略...}private void stopVideo() {// 实现停止视频的代码,略...}private void adjustVolume(int volume) {// 实现调整音量的代码,略...}private void seekToProgress(int progress) {// 实现跳转进度的代码,略...}}在上述代码中,我们创建了一个VideoPlayerApp类,包括一个Swing窗口和视频播放窗口、控制按钮以及音量和进度条。
JAVA媒体播放器实验报告

调用start方法将使Player转入Started状态。此时,Player的媒体时间被映射到time-base 时间,并且clock开始运行。此时播放器有可能会等待一个恰当的时间来呈现媒体数据。
当player从一个状态转入另一个状态时,会抛出 TransitionEvents(转换事件),我们可以通过 实现 ControllerListener接口来监听这些时间并作出恰当的响应。
当播放器开始Realizing和Prefetching的时候,我们可以使用事件报告机制对Player进 行管理,在调用Player方法之前,我们可以先检查Player状态,在作出恰当的操作。
3.1.5 Calling JMF Methods 调用JMF方法时的一些约定 JMF对于errors(错误)和exceptions(异常)作如下约定。 Java Media Errors 是当程序调用了一个当前状态下非法的方法时抛出的。Errors是在外部程 序有控制权的状态下执行了非法的请求而抛出的。举例来说,调用一个处于Started的Player的方法 时抛出的就是error。开发者有责任在调用方法前确认Player已被停止。JMF error是可以通过优化 代码来避免的,应用程序不应该捕获JMF errors, 好的应用程序不会碰到这些错误。 Java Media Exceptions是当程序调用了不能完成的方法或在当前状态下不适用的方法。 Exceptions是在外部程序没有控制权的状态下抛出的。例如当我们试图同步两个time-base不匹配的 Player时,就会抛出异常。之所以是异常而不是错误,是因为我们无从检测time-base是否匹配,是 无法预期的。
3.1.1数据源(Data Source) 一个DataSource 封装了媒体的地址、协议和分发的软件。一个JavaMediaPlayer包含一个 DataSource。一旦创建,这个DataSource不能被用于其他媒体的传输。 一个Player的数据源可以 用MediaLocator或URL来标示。 MdiaLocator(媒体定位器)是一个JMF类,用来描述Player播放的媒体。MediaLocator与URL 类似,并且可以从URL来创建。他们的区别在于,在Java中,URL只有其协议是已知协议时才能被创建, 而MediaLocator则没有这个限制。 Java 媒体播放器可以播放来自多种数据源的媒体数据,包括本地、网络文件和实时广播等。 JMF支持两种不同的数据源。 Pull Data-Source (数据源被动的被获取)-由客户端发起数据传输并控制数据流,已知的协 议包括HTTP(超文本传输协议)和本地文件。 Push Data-Source (数据源主动推送)-由服务器发起数据传输并控制推送数据流。此类数据 源包括广播媒体,多点传送的媒体和VOD(视频点播)。 客户端程序所能够控制的度量,取决于媒体源的类型。举个例子说,MPEG文件可以被重定位 (reposition),那么播放MPEG的客户端程序就可以允许用户重播或者跳进至一个新时间点;而由服 务器段控制的广播媒体则不能被重定位;另外VOD协议则支持有限的用户操作,比如一个VOD客户端程 序可以允许用户跳进至新位置,但不能快进和快倒。 3.1.2 Players 一个Java Media Player是一个对象。她基于时间来处理数据流,从DataSource读取数据并在 确切的时间点渲染媒体。一个Java Media Player必须实现Player interface. Clock定义了基本的计时和同步操作, 她被Player 用来控制媒体的呈现。 Controller继承Clock对外提供提供如下方法: 管理系统资源 预载数据 提供监听机制(Observable),对外发送媒体事件通知 Duration提供了检测媒体时长的途径。 Player支持标准的用户控制,并放宽了来自于Clock的一些操作限制。 多个Player共享一个公共的计时和同步模型。一个Player的媒体时间表示了媒体流的当前位置。
JavaScript编程开发的在线视频播放器系统设计

申请新加坡留学中学需要具备哪些条件很多学生都想要到新加坡去读中学,接受优质的教育。
但是新加坡的中学留学到底需要什么条件?它的中学留学有什么优势?下面就来给大家讲讲怎么申请新加坡的中学。
1、学习成绩申请新加坡高中留学,需要参加新加坡的每年举办的招生考试“O level”,在O level” 考试英文与另外五科成绩的积分为20分以下的学生,便可以选择进入初级学院修读高中课程。
2、语言成绩新加坡留学普遍是使用英语,虽然没有明确规定中学申请者的英语等级,但至少能够进行基础的交流,所以至少要达到三级的英语水平。
然后去了新加坡会继续学习英语,新加坡毕业对英语成绩的要求会高一些,而且如果想通过在新加坡留学高中转而去英国留学大学,对英语成绩要求也是非常高的。
完成新加坡中学的四年(或五年)课程教育,参加新加坡O水准考试就有机会入读新加坡初级学院或是新加坡五所理工学校,更进一步也要进入新加坡公立大学的机会。
新加坡中学留学语言优势:新加坡的官方用语是英语,在整个小学到中学的课程当中,学校的全部课程用英语授课,华文作为第二外语教学。
这意味着到新加坡读中小学,学生能够在接受国际化教育的同时又不会遗忘中华传统文化的精髓。
1、英语基础不好很多中国留学生语言基础薄弱,在新加坡留学生活充满了障碍,很多学生要花至少一年甚至更长的时间来学习英语。
新加坡的语言氛围虽好,但要想通过语言课程有相当的难度,很多留学生雅思或托福始终达不到学校要求成绩,因此只能选择先回国考语言,在去新加坡留学。
因此英语基础扎实是高中生留学新加坡的首要条件。
2、生活自理能力差高中生留学新加坡,成熟的心智是最基本的条件。
然而很多高中生虽然寒窗苦读了12年,但学到的只是书本知识,独立思考能力缺乏。
这些问题使高中生无法融入新环境。
3、家庭经济条件供应不足高中生留学新加坡的花费绝对不小。
新加坡教育联盟建议留学生家长要考虑到家庭近几年的经济状况能否支付孩子新加坡留学花费。
带面板的视频播放器的制作

带面板的视频播放器的制作导言面板是现代电子设备的常见部分,它可以提供易于操作的界面和控制功能。
在视频播放器中加入面板,可以使用户更方便地控制和操作播放器。
本文将介绍如何制作一个带面板的视频播放器。
一、基本原理视频播放器是一个通过媒体文件来播放视频的设备。
它包括以下几个基本部分:视频输入、视频解码、视频显示以及控制器等。
带面板的视频播放器需要在控制器上添加面板部分以实现用户的操作控制。
二、硬件设计1. 控制器选择:根据项目需求选择合适的控制器,可以采用单片机、Arduino、Raspberry Pi等。
在选择控制器时需要考虑其性能和接口的丰富程度。
2.显示屏:选择合适的显示屏,可以是LCD屏、OLED屏等。
确保显示屏的尺寸和分辨率能够满足项目需求,并支持控制器的接口。
3.面板设计:根据需求设计面板的布局和尺寸,并预留合适的孔洞用于安装显示屏和控制按钮。
可以使用CAD软件进行设计,并输出制作面板的文件。
4.按钮和连接器:根据面板设计的布局,选择合适的按钮和连接器,安装到面板上。
按钮可以选择带有触摸感应功能的按钮,连接器可以选择具有稳定传输性能的连接器。
5.线路设计:根据控制器和其他元件的接口,设计合适的线路连接方式,确保信号传输的稳定性和可靠性。
可以使用PCB设计软件进行线路设计,并输出线路图和PCB文件。
三、软件开发1.硬件驱动程序:根据控制器的型号和接口,编写相应的硬件驱动程序。
包括显示屏驱动程序、按键输入驱动程序、连接器驱动程序等。
2.播放程序:根据视频播放器的要求,编写相应的播放程序。
播放程序需要实现视频文件的读取、解码和显示等功能,可以选择合适的视频解码库进行开发。
3.控制程序:编写控制程序,实现面板上各个按钮的功能。
可以通过读取按钮状态来触发相应的操作,如播放、暂停、停止、快进、快退等。
4.用户界面设计:设计用户界面,包括显示屏上的播放界面、设置界面等。
可以使用图形界面设计软件进行设计,并将设计好的图形界面导入到控制程序中。
Java实现视频网站的视频上传及视频播放功能

J a v a实现视频网站的视频上传、视频转码、视频关键帧抽图,及视频播放功能视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器.多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
??ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
1.能支持的格式ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)2.不能支持的格式对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.实例是将上传视频转码为flv格式,该格式ffmpeg支持,所以我们实例中需要ffmpeg视频处理工具.数据库MySQL5.5实例所需要的数据库脚本drop database if exists db_mediaplayer;create database db_mediaplayer;use db_mediaplayer;create table tb_media(id int not null primary key auto_increment comment '主键' ,title varchar(50) not null comment '视频名称' ,src varchar(200) not null comment '视频存放地址' ,picture varchar(200) not null comment '视频截图' ,descript varchar(400) comment '视频描述' ,uptime varchar(40) comment '上传时间');desc tb_media;项目结构图:上传视频界面设计在上传文件时,Form表单中?enctype属性值必须为"multipart/form-data".模块界面设计如下图:enctype属性值说明application/x-www-form-urlencoded表单数据被编码为名称/值对,这是标准的编码格式multipart/form-data表单数据被编码为一条消息,页面上每个控件对应消息中的一部分text/plain表单数据以纯文本形式进行编码,其中不含任何控件格式的字符业务接口定义面向接口编程,接口中定义系统功能模块.这样方便理清业务,同时接口的对象必须由实现了该接口的对象来创建.这样就避免编码中的某些业务遗漏等,同时扩展性也增强了.packageimportimport/**** MediaDao.java** @version: 1.1** @author** @since: 1.0 创建时间: 2013-2-07 上午10:19:54** TODO : interface MediaDao.java is used for ...**/public interface MediaDao {/*** 视频转码* @param ffmpegPath 转码工具的存放路径* @param upFilePath 用于指定要转换格式的文件,要截图的视频源文件* @param codcFilePath 格式转换后的的文件保存路径* @param mediaPicPath 截图保存路径* @return* @throws Exception*/public boolean executeCodecs(String ffmpegPath,String upFilePath, String codcFilePath, String mediaPicPath)throws Exception;/*** 保存文件* @param media* @return* @throws Exception*/public boolean saveMedia(Media media)throws Exception;/*** 查询本地库中所有记录的数目* @return* @throws Exception*/public int getAllMediaCount()throws Exception;/*** 带分页的查询* @param firstResult* @param maxResult* @return*/public List<Media> queryALlMedia(int firstResult, int maxResult)throws Exception;/*** 根据Id查询视频* @param id* @return* @throws Exception*/public Media queryMediaById(int id)throws Exception;}接口的实现,这里列出ffmpeg视频转码与截图模块/*** 视频转码* @param ffmpegPath 转码工具的存放路径* @param upFilePath 用于指定要转换格式的文件,要截图的视频源文件* @param codcFilePath 格式转换后的的文件保存路径* @param mediaPicPath 截图保存路径* @return* @throws Exception*/public boolean executeCodecs(String ffmpegPath, String upFilePath, String codcFilePath,String mediaPicPath) throws Exception {// 创建一个List集合来保存转换视频文件为flv格式的命令List<String> convert = new ArrayList<String>();convert.add(ffmpegPath); // 添加转换工具路径convert.add("-i"); // 添加参数"-i",该参数指定要转换的文件convert.add(upFilePath); // 添加要转换格式的视频文件的路径convert.add("-qscale"); //指定转换的质量convert.add("6");convert.add("-ab"); //设置音频码率convert.add("64");convert.add("-ac"); //设置声道数convert.add("2");convert.add("-ar"); //设置声音的采样频率convert.add("22050");convert.add("-r"); //设置帧频convert.add("24");convert.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的文件convert.add(codcFilePath);// 创建一个List集合来保存从视频中截取图片的命令List<String> cutpic = new ArrayList<String>();cutpic.add(ffmpegPath);cutpic.add("-i");cutpic.add(upFilePath); // 同上(指定的文件即可以是转换为flv格式之前的文件,也可以是转换的flv文件)cutpic.add("-y");cutpic.add("-f");cutpic.add("image2");cutpic.add("-ss"); // 添加参数"-ss",该参数指定截取的起始时间cutpic.add("17"); // 添加起始时间为第17秒cutpic.add("-t"); // 添加参数"-t",该参数指定持续时间cutpic.add("0.001"); // 添加持续时间为1毫秒cutpic.add("-s"); // 添加参数"-s",该参数指定截取的图片大小cutpic.add("800*280"); // 添加截取的图片大小为350*240cutpic.add(mediaPicPath); // 添加截取的图片的保存路径boolean mark = true;ProcessBuilder builder = new ProcessBuilder();try {mand(convert);builder.redirectErrorStream(true);builder.start();mand(cutpic);builder.redirectErrorStream(true);// 如果此属性为 true,则任何由通过此对象的 start() 方法启动的后续子进程生成的错误输出都将与标准输出合并,//因此两者均可使用 Process.getInputStream() 方法读取。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JA V A 课程设计报告课 题: 带面板的视频播放器的制作 专业班级: 学 号: 姓 名: 同组成员: 指导教师:目 录评阅意见:评定成绩:指导老师签名:年 月 日目录第1章课程设计的目的和意义 (1)第2章课程设计要求 (1)第3章需求分析 (2)第4章程序设计过程 (3)第5章系统测试 (13)第6章课程设计心得体会 (16)第7章参考文献 (17)第1章课程设计的目的和意义java 是一种高级编程语言,是编程的基本工具,是为软件开发,网页制作等与计算机编程有关专业的基础课程!学好java语言程序设计对计算机专业的人来说必不可少的一件事,对大学生将来进入软件行业从事java软件开发有着不可替代的作用,为大学生提供了一种锻炼自我勇于实践的能力,也提高大学生的动手能力,所以课程设计是相当的重要。
此次课程设计的目的在于1.训练掌握,加深理解并巩固《java语言程序设计》课程中所学到的基本概念、编程思路以及语法知识2.综合运用java程序设计的编程方法,能够利用这些程序设计方法来解决工程和科研中常见的实际问题3.培育分析问题解决问题的能力,进一步提高并巩固进行大型程序设计的能力4.提高学生实践论文撰写能力第2章课程设计要求《Java程序设计》是计算机网络工程专业一门重要的专业必修课。
为了进一步巩固课堂上所学到的知识,深刻把握Java技术的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设Java程序设计的课程设计。
课程设计的任务是完成课程设计内容,写出课程设计报告。
要求学生掌握:1.掌握Java的语言规范,面向对象的核心概念和特性;2.掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;3.掌握Java应用软件的开发环境和开发过程;4.掌握基于Jsp网站的开发环境和开发过程;5.掌握面向对象的思想和程序设计方法。
第3章需求分析3.1任务目的:1.实现视频文件的正确播放;2. 能够实现对视频播放的控制,如暂停,播放,快进,快退,上一个,下一个等功能;3.能够进行文件视频的选择,全屏,音量的控制,拖动,播放模式的控制等;4.任意改变播放视频界面大小等功能。
3.2程序的设计、调试、运行的软件环境:操作系统:Windows XP(SP2)数据库及数据库管理软件:SQL Server 2005JDK环境:Java SE Development Kit(JDK)Version 6开发工具:Eclipse运行平台:Windows、Linux各个版本、MAC等任何平台运行环境:Java SE Runtime Environment(JRE)Version第4章程序设计过程4.1实验原理JMF提供了一个平台无关的框架来呈现时基媒体(time-based media)。
JavaMediaPlayerAPI的设计目标是支持多种标准的媒体格式,包括MPEG-1,MPEG-2,QuickTime,AVI,WAV,AU和MIDI.使用JMF,可以同步呈现不同来源的时基媒体。
现有的一些媒体播放器都严重依赖原生码来执行解压缩、渲染等计算密集型任务。
而JMF API则隐藏了具体实现,只提供抽象的编程接口。
举例来说,一个用JMF制作的播放器,具体运行的过程中可能会调用到操作系统的本地方法,但开发者写代码时可以无视本地方法的存在。
JMF Player API :∙接入不同的协议和分发(传输)机制∙接入不同的媒体数据类型定义事件模型,用于Player和应用程序间的异步通信JMF对于errors(错误)和exceptions(异常)作如下约定。
∙Java Media Errors 是当程序调用了一个当前状态下非法的方法时抛出的。
Errors是在外部程序有控制权的状态下执行了非法的请求而抛出的。
举例来说,调用一个处于Started的Player的方法时抛出的就是error。
开发者有责任在调用方法前确认Player已被停止。
JMF error是可以通过优化代码来避免的,应用程序不应该捕获JMF errors, 好的应用程序不会碰到这些错误。
∙Java Media Exceptions是当程序调用了不能完成的方法或在当前状态下不适用的方法。
Exceptions是在外部程序没有控制权的状态下抛出的。
例如当我们试图同步两个time-base不匹配的Player时,就会抛出异常。
之所以是异常而不是错误,是因为我们无从检测time-base是否匹配,是无法预期的。
有时,JMF的一些方法会返回非预期的结果,通过检查返回直,我们可以检测实际发生的事情:∙我们可以通过返回直检查实际被设置的数值,例如:并不是所有的播放器都可以每周期5次的速率呈现媒体数据,如果我们调了setRate(5.0),播放器将会设置一个合法的近似直,这个数值可能是5.0也可能是1.0,我们需要检查返回数据来确认被设置的数据。
∙有时,我们请求的信息是不可用的。
例如:Player在播完一个媒体之前,可能不知道媒体的时长,这时如果我们调了getDuration(),getDuration 会返回DURATION_UNKNOWN.当媒体被播放完一次,再调getDuration时,则会返回正确的时长。
4.2程序设计图JMF播放器文件播放上一个设置打开循环退出暂停删除下一个4.3设计及核心代码创建“文件”菜单●创建“打开”菜单●把JMFMediaPlayer对象注册成功为“打开”菜单项动作事件的监听器●把“打开”菜单项加入“文件”菜单●把“文件”菜单中加入一条水平分隔线●创建带检查框的“循环”菜单项●把JMFMediaPlayer对象注册成功为“循环”菜单项动作事件的监听器●把“循环”菜单项加入“文件”菜单●在“文件”菜单项中加入一条水平分隔线●按照创建“打开”菜单项的过程,创建“退出”菜单项●创建“播放”菜单●创建“上一个”菜单●创建“下一个”菜单项●创建“保存”菜单●把JMFMediaPlayer对象注册成功为“暂停”菜单项动作事件的监听器●把“暂停”菜单项加入“设置”菜单●在“设置”菜单中加入一条水平分隔线●创建“删除”菜单项●把JMFMediaPlayer对象注册成功为“删除”菜单项动作事件的监听器●创建一个菜单条(MenuBar)●把“文件”菜单加入到菜单条●把“播放控制”菜单加入到菜单条●把“播放列表”菜单加入到菜单条// 创建播放器的菜单JMenu zhu= new JMenu("设置");JMenu fileMenu = new JMenu("文件");JMenu zhu1= new JMenu("播放");JMenu zhu2= new JMenu("上一个");JMenu zhu3= new JMenu("下一个");JMenuItem openMemuItem = new JMenuItem("打开");JMenuItem haha1 = new JMenuItem("暂停");JMenuItem haha2 = new JMenuItem("删除");openMemuItem.addActionListener(this);fileMenu.add(openMemuItem);zhu.add(haha1);zhu.addSeparator();zhu.add(haha2);zhu.addSeparator();zhu.add(haha3);zhu.addSeparator();zhu.add(haha4);zhu.addSeparator();zhu.add(haha5);zhu.addSeparator();// 添加一个分割条fileMenu.addSeparator();// 创建一个复选框菜单项JCheckBoxMenuItem loopMenuItem = new JCheckBoxMenuItem("循环", false); loopMenuItem.addItemListener(this);fileMenu.add(loopMenuItem);fileMenu.addSeparator();JMenuItem exitMemuItem = new JMenuItem("退出");exitMemuItem.addActionListener(this);fileMenu.add(exitMemuItem);JMenuBar menuBar = new JMenuBar();menuBar.add(fileMenu);menuBar.add(zhu);menuBar.add(zhu1);menuBar.add(zhu2);menuBar.add(zhu3);this.setJMenuBar(menuBar);this.setSize(200, 200);try {// 设置界面的外观,为系统外观UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); SwingUtilities.updateComponentTreeUI(this);} catch (Exception e) {e.printStackTrace();}this.setVisible(true);}动作监听器动作监听器根据用户的操作作出相应的反应(1)如果动作事件起源于“退出”菜单项,触发一个给查监听器的窗口关闭事件(2)如果动作事件起源于“播放“菜单项,判断当前是否存在一个播放器,存在则将该播放器置于运动状态(3)如果动作事件起源于“暂停”菜单项,判断当前是否存在一个播放器,存在则停止该播放器的播放(4)如果动作事件起源于“下一个”菜单项,判断当前是否存在一个播放器,存在则停止该播放器的播放,并把播放指针移到下一个文件(5)如果动作事件起源于“打开”菜单,则:●创建一个“打开媒体文件“对话框●把对话框的当前目录设置为上次关闭时的目录●显示对话框。
这个对话框是一个模式对话框●如果用户没有通过对话框选择媒体文件,则返回(6)如果出现异常●显示错误信息,然后返回●把主窗口的标题设置为媒体文件的名字●把JMFMediaPlayer对象注册为来自JMF播放器对象的控制器事件的监听器●让JMF播放器对象预先提取媒体内容/*** 实现了ActionListener接口,处理组件的活动事件*/public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("退出")) {// 调用dispose以便执行windowCloseddispose();return;}FileDialog fileDialog = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);fileDialog.setDirectory(currentDirectory);fileDialog.setVisible(true);// 如果用户放弃选择文件,则返回if (fileDialog.getFile() == null){return;}currentDirectory = fileDialog.getDirectory();if (player != null){// 关闭已经存在JMF播放器对象player.close();}try {// 创建一个打开选择文件的播放器player = Manager.createPlayer(new MediaLocator("file:" + fileDialog.getDirectory() + fileDialog.getFile())); } catch (java.io.IOException e2) {System.out.println(e2);return;} catch (NoPlayerException e2) {System.out.println("不能找到播放器.");return;}if (player == null) {System.out.println("无法创建播放器.");return;}first = false;this.setTitle(fileDialog.getFile());// 播放器的控制事件处理player.addControllerListener(this);// 预读文件内容player.prefetch();}控制监听器控制监听器完成与控制相关的操作,具体包括以下几种情况(1)当控制器被关闭,如果JMF播放器的视觉部分存在,从JMFMediaPlayer容器拆除视觉部件。