1、 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
2、属性值必须为multipart/form-data.模块界面设计如下图:enctype属性值说明application/x-www-form-urlencoded表单数据被编码为名称/值对,这是标准的编码格式multipart/form-data表单数据被编码为一条消息,页面上每个控件对应消息中的一部分text/plain表单数据以纯文本形式进行编码,其中不含任何控件格式的字符业务接口定义面向接口编程,接口中定义系统功能模块.这样方便理清业务,同时接口的对象必须由实现了该接口的对象来创建.这样就避免编码中的某些业务遗漏等,同时扩展性也增强了.package com.webapp.dao;imp
3、ort java.util.List;import com.webapp.entity.Media;/* * * 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 用于指定要转换格式的文件,要截图的
4、视频源文件 * param codcFilePath 格式转换后的的文件保存路径 * param mediaPicPath 截图保存路径 * return * throws Exception public boolean executeCodecs(String ffmpegPath,String upFilePath, String codcFilePath, String mediaPicPath)throws Exception; * 保存文件 * param media public boolean saveMedia(Media media)throws Exception; *
5、查询本地库中所有记录的数目 public int getAllMediaCount()throws Exception; * 带分页的查询 * param firstResult * param maxResult public List queryALlMedia(int firstResult, int maxResult)throws Exception; * 根据Id查询视频 * param id public Media queryMediaById(int id)throws Exception;接口的实现,这里列出ffmpeg视频转码与截图模块 public boolean ex
6、ecuteCodecs(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); / 添加要转换格式的视频文件的路径-qscale /指定转换的
7、质量6-ab /设置音频码率64-ac /设置声道数2-ar /设置声音的采样频率22050-r /设置帧频24-y / 添加参数-y,该参数指定将覆盖已存在的文件 convert.add(codcFilePath); / 创建一个List集合来保存从视频中截取图片的命令 cutpic = new ArrayList cutpic.add(ffmpegPath); cutpic.add( cutpic.add(upFilePath); / 同上(指定的文件即可以是转换为flv格式之前的文件,也可以是转换的flv文件)-fimage2-ss / 添加参数-ss,该参数指定截取的起始时间17 /
8、添加起始时间为第17秒-t / 添加参数-t,该参数指定持续时间0.001 / 添加持续时间为1毫秒-s / 添加参数-s,该参数指定截取的图片大小800*280 / 添加截取的图片大小为350*240 cutpic.add(mediaPicPath); / 添加截取的图片的保存路径 boolean mark = true; ProcessBuilder builder = new ProcessBuilder(); try mand(convert); builder.redirectErrorStream(true); builder.start(); mand(cutpic); / 如果
9、此属性为 true,则任何由通过此对象的 start() 方法启动的后续子进程生成的错误输出都将与标准输出合并, /因此两者均可使用 Process.getInputStream() 方法读取。这使得关联错误消息和相应的输出变得更容易 catch (Exception e) mark = false; System.out.println(e); e.printStackTrace(); return mark;系统中可能存在多个模块,这些模块的业务DAO可以通过工厂来管理,需要的时候直接提供即可.因为如果对象new太多,会不必要的浪费资源.所以工厂,采用单例模式,私有构造,提供对外可访问的方法即可.import com.webapp.dao.impl.MediaDaoImpl; * DaoFactory.java 2013-2-07 下午02:18:51 class DaoFactory.java is used for .public class DaoFactory /工厂模式,生产Dao对象,面向接口编程,返回实现业务接口定义的对象 private static DaoFactory daoFactory = new DaoFactory(); /单例设计模式, 私有构造,对外
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1