package com.webapp.service;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang3.StringUtils;
import com.webapp.dao.DaoFactory;
import com.webapp.dao.MediaDao;
import com.webapp.entity.Media;
public class UploadMediaService 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 {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
MediaDao mediaDao = DaoFactory.getMediaDao();
String message = "";
String uri = request.getRequestURI();
System.out.println("uri>>"+uri);
String path = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
if ("/uploadFile".equals(path)) {
// 提供解析时的一些缺省配置
DiskFileItemFactory factory = new DiskFileItemFactory();
// 创建一个解析器,分析InputStream,该解析器会将分析的结果封装成一个FileItem对象的集合
// 一个FileItem对象对应一个表单域
ServletFileUpload sfu = new ServletFileUpload(factory);
try {
Media media = new Media();
List<FileItem> items = sfu.parseRequest(request);
boolean flag = false; // 转码成功与否的标记
for (int i = 0; i < items.size(); i++) {
FileItem item = items.get(i);
// 要区分是上传文件还是普通的表单域
if (item.isFormField()) {// isFormField()为true,表示这不是文件上传表单域
// 普通表单域
String paramName = item.getFieldName();
String paramValue = item.getString();
System.out.println("参数名称为:" + paramName +
", 对应的参数值为: " + paramValue);
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 {
// 上传文件
// System.out.println("上传文件" + item.getName());
ServletContext sctx = this.getServletContext();
// 获得保存文件的路径
String basePath = sctx.getRealPath("videos");
// 获得文件名
String fileUrl = item.getName();
// 在某些操作系统上,item.getName()方法会返回文件的完整名称,即包括路径
String fileType = fileUrl.substring(fileUrl
.lastIndexOf(".")); // 截取文件格式
// 自定义方式产生文件名
String serialName = String.valueOf(System
.currentTimeMillis());
// 待转码的文件
File uploadFile = new File(basePath + "/temp/"
+ serialName + fileType);
item.write(uploadFile);
if (item.getSize() > 500 * 1024 * 1024) {
message = "<li>上传失败!您上传的文件太大,系统允许最大文件500M</li>";
}
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");
String now = System.currentTimeMillis()+"";
media.setUptime(now);
// 转码
flag = mediaDao.executeCodecs(ffmpegPath,
uploadFile.getAbsolutePath(), codcFilePath,
mediaPicPath);
}
}
if (flag) {
// 转码成功,向数据表中添加该视频信息
mediaDao.saveMedia(media);
message = "<li>上传成功!</li>";
}
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<Media> mediaList;
try {
mediaList = mediaDao.queryALlMedia(0, 6);
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);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JavaWeb中使用ffmpeg实现视频转码、视频截图、播放实现
共50个文件
java:12个
class:12个
jar:7个
1星 需积分: 50 18 下载量 164 浏览量
2017-06-19
22:31:25
上传
评论
收藏 5.23MB RAR 举报
温馨提示
视频网站中提供的在线视频播放功能,播放的都是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视频处理工具.
资源推荐
资源详情
资源评论
收起资源包目录
JavaWeb+ffmpeg.rar (50个子文件)
MediaPlayer
WebContent
media_player.jsp 945B
META-INF
MANIFEST.MF 39B
tools
ffmpeg.exe 11.74MB
vcastr3.swf 25KB
WEB-INF
web.xml 2KB
lib
mysql-connector-java-5.1.10.jar 707KB
commons-dbcp-1.4.jar 157KB
jstl.jar 21KB
commons-fileupload-1.2.2.jar 58KB
commons-dbutils-1.5.jar 60KB
commons-io-1.3.2.jar 86KB
commons-lang3-3.1.jar 308KB
media_list.jsp 4KB
media_upload.jsp 1KB
skins
videos
images
temp
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 305B
org.eclipse.core.resources.prefs 107B
org.eclipse.wst.common.component 487B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 503B
org.eclipse.jdt.core.prefs 395B
src
com
webapp
dao
DaoFactory.java 526B
MediaDao.java 2KB
impl
MediaDaoImpl.java 4KB
test
service
UploadMediaService.java 5KB
PlayMediaService.java 1KB
ShowMediaList.java 1KB
CharacterEncodingFilter.java 832B
entity
Media.java 966B
util
DbHelper.java 1KB
dbconfig.properties 157B
Config.java 939B
ReflectUtil.java 1KB
DBConn.java 3KB
.project 1KB
.classpath 1KB
build
classes
com
webapp
dao
DaoFactory.class 634B
impl
MediaDaoImpl.class 4KB
MediaDao.class 2KB
test
service
CharacterEncodingFilter.class 2KB
ShowMediaList.class 2KB
PlayMediaService.class 2KB
UploadMediaService.class 6KB
entity
Media.class 1KB
util
DBConn.class 3KB
dbconfig.properties 157B
Config.class 1KB
DbHelper.class 1KB
ReflectUtil.class 2KB
db_mediaplayer.sql 2KB
共 50 条
- 1
资源评论
- qq_381475562017-09-29大家不要下载了,坑,不完整的东西,
- deyiStruket2017-08-15骗子 弄了plsql骗积分的大金豆2017-08-16看清楚代码再评论
大金豆
- 粉丝: 20
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功