/**

* @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 2018-08-16 19:00

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

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

    web /java 实现多种格式视频上传.转码.播放.下载 1.前言 前段时间一直在做一个生物资源共享平台,采用SSM框架技术,其中涉及一个模块,是关于视频资源的播放. 本来不是很大的问题,但是无奈用 ...

  2. srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)

    #为SRS流媒体服务器添加HLS加密功能(附源码)# 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的 ...

  3. Qt利用avilib实现录屏功能_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...

    内容概览 1.openlayers6结合geoserver利用WFS服务实现图层编辑功能 2.源代码demo下载 效果图如下: 本篇主要是参照openlayers6结合geoserver利用WFS服务 ...

  4. arcgis xml 下载 切片_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...

    内容概览 1.openlayers6结合geoserver利用WFS服务实现图层编辑功能 2.源代码demo下载 效果图如下: 本篇主要是参照openlayers6结合geoserver利用WFS服务 ...

  5. VC++利用笔记本自带摄像头扫二维码功能(附源码demo)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第8章:VC++利用笔记本自带摄像头扫二维码功能(附源码demo) 源代码demo已上传到百度网盘:永久生效  ,代码实现了打开笔记本 ...

  6. html实现视频网站,仿爱奇艺,搜狐,迅雷看看(附源码)

    文章目录 1.功能模板 1.1 仿爱奇艺 1.2 仿搜狐视频 1.3 仿迅雷看看 1.4 视频播放 1.5 影视公司官网 2.效果和源码 2.1 源代码 2.2 模板目录 源码下载 作者:xcLeig ...

  7. 曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)

    曝肝三天,两千行Python代码,制作B站视频下载工具(附源码) 文章目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_vide ...

  8. android flv 编码器,Android 音视频深入 十七 FFmpeg 获取 RTMP 流保存为 flv (附源码下载)...

    Android 音视频深入 十七 FFmpeg 获取 RTMP 流保存为 flv (附源码下载) 项目地址 https://github.com/979451341/RtmpSave 这个项目主要代码 ...

  9. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

最新文章

  1. jquery实现返回顶部按钮和scroll滚动功能[带动画效果] 转载
  2. 【转】adobe acrobat pro修改pdf文字
  3. css样式之background详解(格子效果)
  4. 第十六届智能车竞赛比赛进行中 - 参赛队员提出的问题
  5. SSL/TLS抓包出现提示Ignored Unknown Record
  6. python.freelycode.com-不完整的Http读取和Python中的Requests库
  7. Android Studio经常使用配置及使用技巧(二)
  8. asp.net core新特性(1):TagHelper
  9. 第一个express app 详细步骤
  10. php: 0跟字符串做比较永远是true。 php大bug。
  11. 【开发工具】之windows下通过批处理编译VS工程
  12. sublime怎么配置python环境_在Sublime Editor中配置Python环境的详细教程
  13. 分布式和微服务区别_分布式、集群、微服务到底有啥区别?
  14. Excel表格中如何将文本型改为数值型数据
  15. lucas–kanade_异常检测常用光流法量化对比:Farneback/Horn-Schunck / Lucas–Kanade
  16. linux下的清屏方法
  17. Linux配置pip清华镜像源
  18. ohci之usb_submit_urb
  19. 仿迅雷播放器遇到的字符串处理函数
  20. 用 Python 写了一个表白神器,照片隐藏表白话语!

热门文章

  1. mybatis-通用Mapper
  2. 从SpringBootApplication注解入手
  3. 数据采集提升性能篇-使用Mybatis的批量操作api导入数据
  4. 部门微服务:基本dao和service代码编写
  5. SpringMVC拦截器之拦截器接口方法演示
  6. plsql(轻量版)_游标的使用1
  7. Zookeeper_zkClientListener讲解
  8. Nginx_负载均衡配置讲解
  9. 基于matlab的局放仿真,基于MATLAB/Simulink系统仿真权威指南
  10. Java8函数式编程(3)--规约操作