jsp 上传转码_web/java实现多种格式视频上传、转码、截图、播放、下载等功能附源码(详细)...

/**

* @Description:(视频资源的单独上传的接收)

* @param:@param request

* @param:@param response

* @param:@param session

* @param:@return

* @return:ModelAndView

* @author:Zoutao

* @date:2018-6-12

* @version:V1.0

*/

@RequestMapping(value = "/addVideo")

public ModelAndView uploadflie_Video(

@RequestParam("file") CommonsMultipartFile file,

HttpServletRequest req, HttpServletRequest request) {

System.out.println("进入addVideo视频上传控制层");

if (file.getSize() != 0) {

//上传的多格式的视频文件-作为临时路径保存,转码以后删除-路径不能写//

String path = "E:/Projectpicture/websiteimages/temp/";

File TempFile = new File(path);

if (TempFile.exists()) {

if (TempFile.isDirectory()) {

System.out.println("该文件夹存在。");

}else {

System.out.println("同名的文件存在,不能创建文件夹。");

}

}else {

System.out.println("文件夹不存在,创建该文件夹。");

TempFile.mkdir();

}

// 获取上传时候的文件名

String filename = file.getOriginalFilename();

// 获取文件后缀名

String filename_extension = filename.substring(filename

.lastIndexOf(".") + 1);

System.out.println("视频的后缀名:"+filename_extension);

//时间戳做新的文件名,避免中文乱码-重新生成filename

long filename1 = new Date().getTime();

filename = Long.toString(filename1)+"."+filename_extension;

//去掉后缀的文件名

String filename2 = filename.substring(0, filename.lastIndexOf("."));

System.out.println("视频名为:"+filename2);

//源视频地址+重命名后的视频名+视频后缀

String yuanPATH =(path+filename);

System.out.println("视频的完整文件名1:"+filename);

System.out.println("源视频路径为:"+yuanPATH);

//上传到本地磁盘/服务器

try {

System.out.println("写入本地磁盘/服务器");

InputStream is = file.getInputStream();

OutputStream os = new FileOutputStream(new File(path, filename));

int len = 0;

byte[] buffer = new byte[2048];

while ((len = is.read(buffer)) != -1) {

os.write(buffer, 0, len);

}

os.close();

os.flush();

is.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("========上传完成,开始调用转码工具类=======");

//调用转码机制flv mp4 f4v m3u8 webm ogg放行直接播放,

//asx,asf,mpg,wmv,3gp,mov,avi,wmv9,rm,rmvb等进行其他转码为mp4

if (filename_extension.equals("avi") || filename_extension.equals("rm")

|| filename_extension.equals("rmvb") || filename_extension.equals("wmv")

|| filename_extension.equals("3gp") || filename_extension.equals("mov")

||filename_extension.equals("flv") || filename_extension.equals("ogg")

) {

ConverVideoTest c = new ConverVideoTest();

c.run(yuanPATH); //调用转码

System.out.println("=================转码过程彻底结束=====================");

}

//获取转码后的mp4文件名

String Mp4path = "E://Projectpicture/websiteimages/finshvideo/";

filename2 = filename2+".mp4";

String NewVideopath =Mp4path +filename2;

System.out.println("新视频的url:"+NewVideopath);

//删除临时文件

File file2 = new File(path);

if (!file2.exists()) {

System.out.println("没有该文件");

}

if (!file2.isDirectory()) {

System.out.println("没有该文件夹");

}

String[] tempList = file2.list();

File temp = null;

for (int i = 0; i < tempList.length; i++) {

if (path.endsWith(File.separator)) {

temp = new File(path + tempList[i]);

} else {

temp = new File(path + File.separator + tempList[i]);

}

if (temp.isFile() || temp.isDirectory()) {

temp.delete();//删除文件夹里面的文件

}

}

System.out.println("所有的临时视频文件删除成功");

// 实例化用户类

tb_resource resource = new tb_resource();

//获取填写的相关信息

String title = request.getParameter("title");

String writer = request.getParameter("writer");

int state = Integer.parseInt(request.getParameter("state"));

String time = request.getParameter("time");

int clicks = Integer.parseInt(request.getParameter("clicks"));

int grade = Integer.parseInt(request.getParameter("grade"));

String subclass = request.getParameter("subclass");

int uid = Integer.parseInt(request.getParameter("uid"));

//存储信息

resource.setTitle(title);

resource.setWriter(writer);

resource.setTime(time);

resource.setClicks(clicks);

resource.setGrade(grade);

resource.setSubclass(subclass);

resource.setState(state);

resource.setUid(uid);

resource.setSuffix(filename2);

resource.setUrl(NewVideopath); //已转码后的视频存放地址

// 实现对数据的更新

int n = 0;

n = tb_resourceService.insertResource(resource);

if (n != 0) {

return new ModelAndView("back/public/success").addObject(

"notice", "resourceList?uid=" + uid

+ "&grade=-1&state=-1&subclass=" + subclass);

} else {

return new ModelAndView("back/public/fail").addObject("notice",

"resourceList?uid=" + uid

+ "&grade=-1&state=-1&subclass=" + subclass);

}

}

return null;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值