Java实现视频网站的视频上传及视频播放功能

Java实现视频网站的视频上传及视频播放功能
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 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 convert = new ArrayList();

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 cutpic = new ArrayList();

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*240

cutpic.add(mediaPicPath); // 添加截取的图片的保存路径

boolean mark = true;

ProcessBuilder builder = new ProcessBuilder();

try {

https://www.360docs.net/doc/a37777322.html,mand(convert);

builder.redirectErrorStream(true);

builder.start();

https://www.360docs.net/doc/a37777322.html,mand(cutpic);

builder.redirectErrorStream(true);

// 如果此属性为 true,则任何由通过此对象的 start() 方法启动的后续子进程生成的错误输出都将与标准输出合并,

//因此两者均可使用 Process.getInputStream() 方法读取。这使得关联错误消息和相应的输出变得更容易 builder.start();

} catch (Exception e) {

mark = false;

e.printStackTrace();

}

return mark;

}

系统中可能存在多个模块,这些模块的业务DAO可以通过工厂来管理,需要的时候直接提供即可.

因为如果对象new太多,会不必要的浪费资源.所以工厂,采用单例模式,私有构造,提供对外可访问的方法即可. packageimport

/**

*

* DaoFactory.java

*

* @version: 1.1

*

* @author

*

* @since: 1.0 创建时间: 2013-2-07 下午02:18:51

*

* TODO : class DaoFactory.java is used for ...

*

*/public class DaoFactory { //工厂模式,生产Dao对象,面向接口编程,返回实现业务接口定义的对象private static DaoFactory daoFactory = new DaoFactory();

//单例设计模式, 私有构造,对外提供获取创建的对象的唯一接口,

private DaoFactory(){

}

public static DaoFactory getInstance(){

return daoFactory;

}

public static MediaDao getMediaDao(){

return new MediaDaoImpl();

}

}

视图提交请求,给控制器,控制器分析请求参数,进行相应的业务调用处理.servlet控制器相关代码如下package

importimportimportimport

importimportimportimportimport

importimportimport

importimportimportimport

/**

*

* MediaService.java

*

* @version: 1.1

*

* @author

*

* @since: 1.0 创建时间: 2013-2-08 下午02:24:47

*

* TODO : class MediaService.java is used for ...

*

*/public class MediaService extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

MediaDao mediaDao = DaoFactory.getMediaDao();

String message = "";

String uri = request.getRequestURI();

String path = uri.substring(https://www.360docs.net/doc/a37777322.html,stIndexOf("/"), https://www.360docs.net/doc/a37777322.html,stIndexOf("."));

if("/uploadFile".equals(path)){

//提供解析时的一些缺省配置

DiskFileItemFactory factory = new DiskFileItemFactory();

//创建一个解析器,分析InputStream,该解析器会将分析的结果封装成一个FileItem对象的集合 //一个FileItem对象对应一个表单域

ServletFileUpload sfu = new ServletFileUpload(factory);

try {

Media media = new Media();

List items = sfu.parseRequest(request);

boolean flag = false; //转码成功与否的标记

for(int i=0; i

FileItem item = items.get(i);

//要区分是上传文件还是普通的表单域

if(item.isFormField()){//isFormField()为true,表示这不是文件上传表单域

//普通表单域

String paramName = item.getFieldName();

/*

String paramValue = item.getString();

*/

if(paramName.equals("title")){

media.setTitle(new

String(item.getString().getBytes("ISO8859-1"),"UTF-8"));

}

if(paramName.equals("descript")){

media.setDescript(new

String(item.getString().getBytes("ISO8859-1"),"UTF-8"));

}

}else{

//上传文件

ServletContext sctx = this.getServletContext();

//获得保存文件的路径

String basePath = sctx.getRealPath("videos");

//获得文件名

String fileUrl= item.getName();

//在某些操作系统上,item.getName()方法会返回文件的完整名称,即包括路径

String fileType = fileUrl.substring(https://www.360docs.net/doc/a37777322.html,stIndexOf(".")); //截取文件格式 //自定义方式产生文件名

String serialName = String.valueOf(System.currentTimeMillis());

//待转码的文件

File uploadFile = new File(basePath+"/temp/"+serialName + fileType);

item.write(uploadFile);

if(item.getSize()>500*1024*1024){

message = "

  • 上传失败!您上传的文件太大,系统允许最大文件500M
  • ";

    }

    String codcFilePath = basePath + "/" + serialName + ".flv"; //

    设置转换为flv格式后文件的保存路径

    String mediaPicPath = basePath + "/images" +File.separator+ serialName + ".jpg"; //设置上传视频截图的保存路径

    // 获取配置的转换工具(ffmpeg.exe)的存放路径

    String ffmpegPath = getServletContext().getRealPath("/tools/ffmpeg.exe");

    media.setSrc("videos/" + serialName + ".flv");

    media.setPicture("videos/images/" +serialName + ".jpg");

    media.setUptime(DateTimeUtil.getYMDHMSFormat());

    //转码

    flag = mediaDao.executeCodecs(ffmpegPath, uploadFile.getAbsolutePath(), codcFilePath, mediaPicPath);

    }

    }

    if(flag){

    //转码成功,向数据表中添加该视频信息

    mediaDao.saveMedia(media);

    message = "

  • 上传成功!
  • ";

    }

    request.setAttribute("message", message);

    request.getRequestDispatcher("media_upload.jsp").forward(request,response);

    } catch (Exception e) {

    e.printStackTrace();

    throw new ServletException(e);

    }

    }

    if("/queryAll".equals(path)){

    List mediaList;

    try {

    mediaList = mediaDao.queryALlMedia(0,5);

    request.setAttribute("mediaList", mediaList);

    request.getRequestDispatcher("media_list.jsp").forward(request, response); } catch (Exception e) {

    e.printStackTrace();

    }

    }

    if("/play".equals(path)){

    String idstr = request.getParameter("id");

    int mediaId = -1;

    Media media = null;

    if(null!=idstr){

    mediaId = Integer.parseInt(idstr);

    }

    try {

    media = mediaDao.queryMediaById(mediaId);

    } catch (Exception e) {

    e.printStackTrace();

    }

    request.setAttribute("media", media);

    request.getRequestDispatcher("media_player.jsp").forward(request, response); }

    }

    }

    可以通过分页查找,显示最新top5,展示到首页.相应特效可以使用JS实现.

    相关代码如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import

    <%@ page import="java.util.*"%>

    <%

    String path = request.getContextPath();

    String basePath =

    request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

    视频列表

    最新视频

    首页展示的图片都是带ID的链接请求.图片为视频转码过程中拉取到的图片.点击图片即可发送播放视频请求,

    视频播放页面效果如下图所示.

    视频播放页面需要在页面中嵌入Flash播放器

    代码如下:

    value="<%=basePath%>tools/player.swf?fileName=<%=basePath%><%=media.getSrc()%>" />

    src="<%=basePath%>tools/player.swf?fileName=<%=basePath%><%=media.getSrc()%>"

    width="98%" height="90%">

    相关说明:

    元素,value属性指定被加载的视频文件.实例中用的是flash制作的视频播放器.在value属性值中向player.swf播放器传递了一个file参数.该参数指定了要播放的视频的路径.

    元素,src属性也是用来加载影片,与标记的value属性值具体相同的功能.

    转载请注明出处:[]

    音乐播放器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/a37777322.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();

    java视频播放器源代码

    import java.awt.*; import java.io.*; import java.util.*; import javax.media.*; import javax.media.format.*; import javax.swing.*; public class VideoPlayer implements ControllerListener { Vector audioCapDevList = null; Vector videoCapDevList = null; CaptureDeviceInfo audioCapDevInfo = null; CaptureDeviceInfo videoCapDevInfo = null; MediaLocator audioCapDevLoc = null; MediaLocator videoCapDevLoc = null; Player audioPlayer; Player videoPlayer; public void initAudioCapDevLoc() { //这里可以填写其它的音频编码格式,具体请看AudioFormat类 audioCapDevList = CaptureDeviceManager.getDeviceList(new AudioFormat( AudioFormat.LINEAR)); if ((audioCapDevList.size() > 0)) { //或许有几个CaptureDevice,这里取第一个 audioCapDevInfo = (CaptureDeviceInfo) audioCapDevList.elementAt(0); audioCapDevLoc = audioCapDevInfo.getLocator(); } else { System.out.println("找不到音频采集设备"); System.exit(0); } } public void initVideoCapDevLoc() { //这里可以填写其它的编码视频格式,具体请看VideoFormat类 videoCapDevList = CaptureDeviceManager.getDeviceList(new VideoFormat( VideoFormat.YUV)); if ((videoCapDevList.size() > 0)) {

    Java音乐播放器源代码即结果显示

    简单的音乐播放器一、程序代码: import java.io.File; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.FileDialog; import java.awt.Frame; import java.awt.GridLayout; import https://www.360docs.net/doc/a37777322.html,bel; import java.awt.List; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.MenuShortcut; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; public class Example extends Frame { private static final long serialVersionUID = 1L; boolean isStop = true;// 控制播放线程 boolean hasStop = true;// 播放线程状态

    java视频播放器几种

    package com.bird.jmf; import java.awt.*; import java.awt.event.*; import java.io.*; import https://www.360docs.net/doc/a37777322.html,.*; import javax.swing.*; import javax.media.*; // 视频播放程序 public class VideoPlayDemo extends JFrame { private Player player; // 播放器对象 private Component visualMedia; // 视频显示组件 private Component mediaControl; // 视频播放控制组件 private Container container; // 主容器 private File mediaFile; //媒体文件 private URL fileURL; //媒体文件URL地址 public VideoPlayDemo() { // 构造函数 super("视频播放程序"); //调用父类构造函数 container = getContentPane(); //得到窗口容器 JToolBar toobar = new JToolBar(); //实例化工具栏 JButton openFile = new JButton("打开媒体文件"); //实例化按钮 toobar.add(openFile); //增加按钮到工具栏 JButton openURL = new JButton("打开网络地址"); toobar.add(openURL); container.add(toobar, BorderLayout.NORTH); //设置工具栏 openFile.addActionListener(new ActionListener() { //打开文件按钮事件处理 public void actionPerformed(ActionEvent event) { JFileChooser fileChooser = new JFileChooser(); //实例化文件选择器 fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//设置文件打开模式为仅打开文件 int result = fileChooser.showOpenDialog(VideoPlayDemo.this);//显示对话框 if (result == JFileChooser.APPROVE_OPTION) { //得到用户行为 mediaFile = fileChooser.getSelectedFile(); //得到选择的文件 }

    基于java的音乐播放器的设计源代码+实验报告

    主类M U S I C P L A Y E R类:import .*; public class MusicPlayer implements ActionListener, Serializable,ControllerListener { private static final long serialVersionUID = 1L; private JFrame frame = null; private JPanel controlPanel = null; private JButton btnPlay = null; private JButton btnPre = null; private JButton btnNext = null; private JScrollPane listPane = null; private JList list = null; private DefaultListModel listModel = null; private JMenuBar menubar = null; private JMenu menuFile = null, menuAbout = null, menuMode = null; private JMenuItem itemOpen, itemOpens, itemExit, itemAbout; private JRadioButtonMenuItem itemSingle, itemSequence ,itemRandom; private ListItem currentItem = null; private static Player player = null; private boolean isPause = false; private int mode; private int currentIndex; private ImageIcon iconPlay = new ImageIcon("d:\\"); private ImageIcon iconPre = new ImageIcon("d:\\"); private ImageIcon iconNext = new ImageIcon("d:\\"); private ImageIcon iconPause = new ImageIcon("d:\\"); public static void main(String[] args) { new MusicPlayer(); } public MusicPlayer() { init(); } public void init() { frame = new JFrame(); ("音乐播放器"); (400, 300); (false); (null); ; menubar = new JMenuBar(); menuFile = new JMenu("文件");

    Java实现视频网站的视频上传及视频播放功能

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash 制作的播放器来播放该文件.项目中用制作的播放器. 多媒体视频处理工具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视频处理工具. 数据库 实例所需要的数据库脚本 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 '上传时间' );

    音乐播放器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();

    《Java范例开发大全》

    下面是377个Java的例子。如果你是牛人,看看你能做出多少? 如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》实例1开发第一个Java程序 实例2自动提升 实例3自动转换 实例4常用基础类型之强制转换 实例5算术运算符 实例6关系运算符 实例7逻辑运算符 实例8位运算符 实例9移位运算符 实例10转型运算符 实例11常量与变量 实例12各种进制的转换 实例13 Java中的进制与移位运算符 实例14判断输入的年份是否为闰年 实例15抽奖活动 实例16xx乘法表 实例17如何列出素数 实例18 Java中的递归 实例19男生女生各多少人

    实例20求xx数 实例21求任意一个正数的阶乘 实例22求n的n次方 实例23利用for循环输出几何图形 实例24xx 实例25求1到100之间的和 实例26存上100元需要多少天 实例27输出100之间的所有偶数 实例28如何判断回文数字 实例29输出100之间的所有奇数 实例30求最大的随机数 实例31判断字母分类 实例32优良及差 实例33打印任意一年日历 实例34一年四季的划分 实例35除0发生的算术异常(ArithmeticException) 实例36数组下标越界异常(ArrayIndexOutOfBoundsException)实例37数组元素类型不匹配异常(ArrayStoreException) 实例38强制类型转换异常(ClassCastException) 实例39索引越界异常(IndexOutOfBoundsException) 实例40空指针异常(NullPointerException)

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

    Java课程设计报告题目:java音乐播放器 姓名 学号 院系 班级 专业 任课教师

    1.设计内容及要求 能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加 多首歌曲目录 一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控 制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面 添加歌曲之后才能够查看到里面所包含的歌曲目录。当播放歌曲时,可 以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属 性,如:歌曲名,歌手,发布时间,所属专辑等等。 2.需求分析 1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以 随时了解歌曲的播放进度 2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设 置 3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获 取关于该歌曲的用户所需的相关信息。 4、菜单栏: ①文件: 打开:用户通过该菜单项打开本地音乐文件,听任何用户想 听的歌曲 循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲 退出:退出音乐播放器,及退出该程序

    ②播放控制: 播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐 暂停:暂停当前正在播放的音乐 停止:停止当前正在播放的音乐 ③播放列表:当用户通过文件打开本地音乐文件后,及相当于在 播放列表里面添加了歌曲,及形成相应的歌曲播放目录 3.总体设计 结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制, 播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打 开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单 项,该菜单就是用来显示或者查看相应的歌曲目录的。 该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设 置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个 音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音 乐播放窗口里面用户可以进行相关的音乐播放的控制操作。 当用户进入音乐播放窗口时,该窗口有几个快捷控制的控键:时间追踪轴:可以实现播放的前进、后退功能,根据用户需求调节音乐的 播放进度等;音量控制:设置静音,打开扬声器或者调节音量大小;播 放列表:查看当前播放音乐的相关属性。

    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.任意改变播放视频界面大小等功能。 要求学生掌握: 掌握Java的语言规范,面向对象的核心概念和特性。 掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等。 掌握Java应用软件的开发环境和开发过程 掌握基于Jsp网站的开发环境和开发过程 掌握面向对象的思想和程序设计方法。 3.2程序的设计、调试、运行的软件环境: 操作系统:Windows XP(SP2) 数据库及数据库管理软件:SQL Server 2000 JDK环境:Java SE Development Kit(JDK)Version 6 开发工具:Eclipse3.2 运行平台:Windows、Linux各个版本、MAC等任何平台 运行环境:Java SE Runtime Environment(JRE)Version 4.程序设计过程

    音乐播放器java源代码

    package com.ding.player; import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; public class Player { private String path;//文件路径 private String name;//文件名称 private AudioFormat audioFormat;//播放格式 private AudioInputStream audioInputStream;//音乐播放输入流 private SourceDataLine sourceDataLine;// 播放设备 private boolean isStop = false;// 播放停止标志 /** * 创建对象时需要传入播放路径及文件名称 * @param path * @param name */ public Player(String path ,String name) { this.path = path; https://www.360docs.net/doc/a37777322.html, = name; } /** * 播放音乐 */ public void play() { File file = new File(path + name); try { //获取音乐播放流 audioInputStream = AudioSystem.getAudioInputStream(file); //获取播放格式 audioFormat = audioInputStream.getFormat(); /*System.out.println("取样率:"+ audioFormat.getSampleRate());

    Java实现视频网站的视频上传及视频播放功能

    Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能 视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的播放器. 多媒体视频处理工具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视频处理工具. 数据库 实例所需要的数据库脚本 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;

    Java音乐播放器设计文献综述

    ****大学 专业文献综述 题目:Java音乐播放器设计 文献综述 姓名:**** 学院:计算机科学与信息工程学院专业:计算机科学与技术 班级:********* 学号:**** 成绩: 指导教师:职称: 2012 年4月6 日 ****大学教务处制

    Java音乐播放器设计文献综述 作者:**** 指导教师: 摘要: 随着科学技术的发展,人们对生活质量的要求越来越高,在视听享受方面,家庭影院越来越普遍,便携式电子设备也日趋成熟。目前,人们对嵌入式媒体播放器的研究越来越广泛了,国内外已经出现了像MP3、MP4和智能手机等众多样式的便携式嵌入式媒体播放器。但由于种种环境及条件的限制,这些便携式的媒体播放器都只能播放单一的或几种固定的媒体格式,可扩展性都比较差;而现在随着应用的不断增多,越来越多的更先进的压缩算法被提出,导致了媒体格式的多样化,在这种情况下,必然要求嵌入式媒体播放器要适应多种格式。为此,通过对各种PC机上的播放器设计架构的研究与借鉴,在本文中主要在软件方面为嵌入式媒体播放器设计了一种可扩展性架构,并设计了播放器界面, 实现了播放器的功能。 关键词:Java ;音乐;播放器; Designing the java player of music Abstract: With the development of science and technology, people of the quality of life in demand is higher and higher, in the audio-visual enjoy, home theater is becoming more and more common, portable electronic equipment has become more and more mature. At present, the people of embedded media player is more and more extensive research, had appeared at home and abroad like MP3, MP4 and smart phones and many other styles of portable embedded media player. But because of various environmental and limitations, the portable media player can only play a single or several fixed media formats, scalability is poor. And now, with the increasing of the application, more and more of the more advanced compression algorithm was proposed, leading to the media format diversity, in this case, the inevitable requirement embedded media player to adapt to a variety of formats. Therefore, through various PC player design framework of research and the reference, in this paper mainly in software for embedded media player design a kind of scalability framework, and design the player interface, implements some functionality of the player. Key words: Java ;music;player; 前言: 随着科学技术的发展,嵌入式系统工业是专用计算机工业,其目的就是要把一切变得更简单、更方便、更普遍、更适用。嵌入式播放器的主要解决的是视音频解码器。视音频解码器是基于嵌入式的视频处理、控制及传输设备,其核心是运行实时操作系统的嵌入式计算机和高性能视频DSP。无需PC平台,直接将视音频编码器编码的视音频数据

    JAVA音乐播放器软件设计

    佛山科学技术学院 《可视化编程技术》课程设计报告 音乐播放器软件设计 学生姓名:钟洁文 学号:2012914232 年级专业:12级教育技术学 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2014年6月

    目录 1 前言 (2) 2 概要设计 (3) 2.1开发环境 (3) 2.2播放器功能 (3) 2.3界面设计 (4) 2.4类的总体 (5) 3详细设计 (5) 3.1类的主要方法 (5) 31.1初始化窗口: (5) 3.1.3设计的总体认识 (12) 3.1.4程序流程图 (12) 4运行结果 (14) 5测试分析 (14) 5.1程序运行情况: (15) 5.2 程序异常处理: 6 程序清单: (15) 参考文献 (23) 设计总结 (23) 摘要:该程序是一个简单的音乐播放器,具有良好的界面,使用人员能快捷简单地进行操作。即时准确地播放需要的音乐文件,对人们的生活有一定的帮助。可以实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录。 关键字:java音乐播放器,音乐播放器类,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语

    言之后,我决定使用Java语言编写一个简单的播放器,可以实现简单的播放功能,满足日常基本的工作学习和娱乐需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java 语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。 2 概要设计 2.1开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2 开发工具:JBuilder 2007 + JDK 1.6.0_02 2.2播放器功能 功能1:文件菜单包含打开、循环和退出三个菜单项: 打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲; 循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲; 退出:退出音乐播放器,及退出该程序。 功能2:播放控制菜单包含播放、暂停和停止三个菜单项: 播放:选择歌曲之后,通过点击播放菜单项启动播放器播; 暂停:暂停当前正在播放的音乐;

    javalinux播放声音

    课程设计用的方法 import java.applet.AudioClip; import java.io.*; import java.applet.Applet; import java.awt.Frame; import https://www.360docs.net/doc/a37777322.html,.MalformedURLException; import https://www.360docs.net/doc/a37777322.html,.URL; public class Music extends Frame{ public static String imagePath=System.getProperty("user.dir")+"/Music/"; public Music(){ t ry { URL cb; //File f = new File(imagePath+"mario.midi"); //File f = new File(imagePath+"1000.ogg"); File f = new File(imagePath+"失败音效.wav"); //File f = new File("d:\\铃声.mp3"); cb = f.toURL(); AudioClip aau; aau = Applet.newAudioClip(cb); aau.play();//循环播放 aau.play() 单曲 aau.stop()停止播放//aau.loop(); } catch (MalformedURLException e) { e.printStackTrace(); } } public static void main(String args[]) { n ew Music(); } } 因为最近在研究java的语音聊天问题,所以刚刚好写了几个,给你三个播放的方法,分为三个类,建议采用第二或第三个: package org.bling.music; import java.io.File; import java.io.FileInputStream; import java.io.IOException;

    JAVA带面板的视频播放器制作课程设计

    学号:201017010227 姓名:朱林 同组成员: 李伟 指导教师: 唐石

    目录 第1章课程设计的目的和意义 (3) 1.1 设计目的 (3) 1.2 设计意义 (3) 第2章课程设计要求 (3) 第3章需求分析 (4) 第4章程序设计过程 (5) 4.1 实验原理 (5) 4.2 程序设计图 (6) 4.3 设计及核心代码 (7) 第5章系统测试 (15) 第6章心得体会 (19) 第7章参考文献 (20)

    第1章课程设计的目的和意义 1.1 设计目的 1.训练掌握,加深理解并巩固《java语言程序设计》课程中所学到的基本概念、编程思路以及语法知识 2.综合运用java程序设计的编程方法,能够利用这些程序设计方法来解决工程和科研中常见的实际问题 3.培育分析问题解决问题的能力,进一步提高并巩固进行大型程序设计的能力 4.提高学生实践论文撰写能力 1.2 设计意义 java 是一种高级编程语言,是编程的基本工具,是为软件开发,网页制作等与计算机编程有关专业的基础课程!学好java语言程序设计对计算机专业的人来说必不可少的一件事,对大学生将来进入软件行业从事java软件开发有着不可替代的作用,为大学生提供了一种锻炼自我勇于实践的能力,也提高大学生的动手能力,所以课程设计是相当的重要。 第2章课程设计要求 《Java程序设计》是计算机网络工程专业一门重要的专业必修课。为了进一步巩固课堂上所学到的知识,深刻把握Java技术的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设Java程序设计的课程设计。 课程设计的任务是完成课程设计内容,写出课程设计报告。 要求学生掌握: 1.掌握Java的语言规范,面向对象的核心概念和特性; 2.掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通

    Java实现音频播放--JavaSoundAPI编写音频处理程序

    一、JavaSound的体系结构 二、JavaSound混频原理 三、音频数据与存储格式 四、设计音乐播放器 五、播放音乐 六、支持更多的音频格式 ━━━━━━━━━━━━━ 桌面PC的性能日益提高,Java虚拟机的优化技术也不断获得突破,这一切使得用Java处理实时信号成为可能。本文将通过设计和构造一个支持实时MP3、WAV和Ogg音频格式解码/回放的Java音乐播放器,阐述用JavaSound API编写音频处理程序的思路和一般过程。 JavaSound是一个小巧的低层API,支持数字音频和MIDI数据的记录/回放。在JDK 1.3.0之前,JavaSound是一个标准的Java扩展API,但从Java 2的1.3.0版开始,JavaSound就被包含到JDK之中。由于Java有着跨平台(操作系统、硬件平台)的特点,基于JavaSound的音频处理程序(包括本文的程序)能够在任何实现了Java 1.3+的系统上运行,无需加装任何支持软件。 一、JavaSound的体系结构 当前JDK的JavaSound API随同Java媒体框架(JMF,Java Media Framework)一起发布,主页在java.sun./products/java-media/jmf/,适合JDK 1.1以及更高的版本。除了JDK实现的JavaSound API之外,还有一个源代码开放的JavaSound实现是

    Tritonus,主页在https://www.360docs.net/doc/a37777322.html,/。 图一描述了JavaSound API的体系结构,虚线表示Sun的JavaSound标准定义的API调用。上面一根虚线表示我们编写音频处理程序要调用的API,JavaSound API包含在javax.sound.sampled和javax.sound.midi包中。两根虚线之间的部分就是JavaSound API的具体实现。 图一:JavaSound体系结构 就象上面一根虚线表示的API具有统一标准一样,在所有的JavaSound实现中,图一下面一根虚线表示的SPI(服务提供者接口, Service Provider Interface)也是统一的。SPI的作用是以插件(Plug-In)的形式提供自定义的扩展模块,我们只要提供与SPI兼容的插件扩展模块,就可以在不改变API的情况下扩展音频处理程序的能力。SPI包含在java.sound.sampled.spi和javax.sound.midi.spi包中。 例如,假设有一个只能播放WAV文件的程序,我们只要增加一个支持MP3文件解码的插件模块,就可以在不改动播放程序的任何一行代码的前提下,为这个播放程序添加播放MP3的能力。 二、JavaSound混频原理

    相关文档
    最新文档