以springMVC为例获取上传视频文件时长
毕设项目是一个在线学习系统,教师用户有上传视频的功能,在答辩之前赶了一个demo出来,好多功能都写死了,比如课程学习进度就是被我写死在前端的一个变量,最近导师要我把项目打包发给他,这才心慌慌赶紧把这些功能补上。不知道正规的学习网站怎么做的学习进度,根据我的理解就是用户已经观看的视频时长除以整个课程的时长,这里就涉及到获取视频的时长问题了。
除了在maven中添加文件上传所需的依赖外,获取视频时长还依赖一个jave(注意啊,不是java,我最开始就是看成了java,一脸懵逼)的jar包,这个包在maven仓库找不到!!!然后只能手动添加了,可以先将jar包下载下来http://download.csdn.net/detail/xiaofei_9070/9650294,由于maven提供了scope为system的依赖,所以这样可就以添加dependency而不需要再将jar包安装到本地库中了。我们为了方便起见,将jar包放到src/main/resources/lib/这个目录下,然后在依赖中写下
<dependency>
<groupId>jack.jave</groupId>
<artifactId>jave</artifactId>
<version>1.0.2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/jave-1.0.2.jar</systemPath>
</dependency>
我之前在网上看到的一段代码是这样的
MultipartFile file = null;
CommonsMultipartFile cf= (CommonsMultipartFile)file;
DiskFileItem fi = (DiskFileItem)cf.getFileItem();
File f2 = fi.getStoreLocation();
Encoder encoder = new Encoder();
try {
MultimediaInfo m = encoder.getInfo(f2);
long ls = m.getDuration();
System.out.println(ls/1000);
} catch (Exception e) {
logger.error("get ivr duration error");
}
我试了一下
CommonsMultipartFile cf= (CommonsMultipartFile)file; 这句代码一直报类型无法转换的错,于是乎我就直接将视频文件保存,再去获取时长,下面这段代码包含了上传文件的功能
int minute = 0; //视频时长
String newFileNameVideo = "";//新视频文件名字
if(videoFile!=null) {
//上传文件名
String originFileNameVideo = videoFile.getOriginalFilename();
//新文件名
newFileNameVideo = UUID.randomUUID()+originFileNameVideo.substring(originFileNameVideo.lastIndexOf("."));
//新文件地址
String videoFileUrl = request.getSession().getServletContext().getRealPath("videoUpload/")+newFileNameVideo;
//新文件
File newVideoFile = new File(videoFileUrl );
//上传新文件
videoFile.transferTo(newVideoFile);
//获取视频文件时长
Encoder encoder = new Encoder();
try {
MultimediaInfo m = encoder.getInfo(newVideoFile);
minute = (int) (m.getDuration()/60); //获取视频时长
if(minute<1)
minute = 1;
} catch (Exception e) {
System.out.println("出现错误");;
}
}
以上代码只包含了上传视频和获取时长的功能,没有把全套的前端获取文件然后传给controller的代码贴上来是因为我前端代码写的太烂了。。。
以springMVC为例获取上传视频文件时长的更多相关文章
- js 获取上传视频的时长、大小、后缀名
参考资料:获取时长 var fileName = $("#sectionfileUpload").val(); //C:\fakepath\3.jpeg var exts = fi ...
- ant design + react,自动获取上传音频的时长(react-audio-player)
在后台管理项目中,用户要求上传音频,并且自动获取音频时长. 第一步, import { Upload, Button, Icon } from 'antd'; 第二步,在表单中使用 Upload 组件 ...
- ASP.NET 使用 plupload 上传大文件时出现“blob”文件的Bug
最近在一个ASP.NET 项目中使用了plupload来上传文件,结果几天后客户发邮件说上传的文件不对,说是文件无法打开 在进入系统进行查看后发现上传的文件竟然没有后缀,经过一番测试发现如果文件上传的 ...
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...
- MVC两种获取上传的文件数据变量的方式
第一种方式,在控制器中利用HttpPostedFileBase参数对象获取. [HttpPost] public ActionResult SaveFile(HttpPostedFileBase up ...
- plupload分片上传视频文件源码展示
plupload分片上传视频文件目录结构如下: |- images//视频上传小图片 |-js// plupload js文件 |-uploads//视频文件存放文件夹 里面是按日期存放 |-ajax ...
- java上传视频文件
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...
- 批量上传文件或者上传大文件时 gateWay报错DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
一.描述 最近在批量上传文件时网关出现了异常,后面发现上传大文件也会出现文件超过256发生异常,异常信息如下: org.springframework.core.io.buffer.DataBuffe ...
- .NET上传大文件时提示Maximum request length exceeded错误的解决方法
使用IIS托管应用程序时,当我们需要上传大文件(4MB以上)时,应用程序会提示Maximum request length exceeded的错误信息.该错误信息的翻译:超过最大请求长度. 解决方法: ...
随机推荐
- ASP.NET Core 2.1 : 十三.httpClient.GetAsync 报SSL错误的问题
不知什么时候 ,出现了这样的一个奇怪问题,简单的httpClient.GetAsync("xxxx")居然报错了.(ASP.NET Core 系列目录) 一.问题描述 把原来的程序 ...
- Java的几个基本类型之间的相互转换
前言: 转载申明: 作者:王蒙 链接:http://matt33.com/2015/10/27/TheTransformOfJava/ 之前在写java程序的时候,经常会遇到很多的需要需要转换基础数据 ...
- DSAPI 获取实时统计信息CPU/内存/硬盘/网络
有时,我们需要获取当前计算机中CPU.内存.硬盘.网络等实时信息,如下图:\ 要实现上述几项信息的获取,通常需要使用Timer控件来间隔获取,以便刷新最新的数据. 本示例中,放一个Timer控件,放一 ...
- C#如何生成缩略图、水印
1.安装CodeCarvings.Piczard Install-Package CodeCarvings.Piczard 2.生成缩略图 ImageProcessingJob jobThumb ...
- IOC的理解,整合AOP,解耦对Service层和Dal层的依赖
DIP依赖倒置原则:系统架构时,高层模块不应该依赖于低层模块,二者通过抽象来依赖依赖抽象,而不是细节 贯彻依赖倒置原则,左边能抽象,右边实例化的时候不能直接用抽象,所以需要借助一个第三方 高层本来是依 ...
- Java开发笔记(十五)短路逻辑运算的优势
前面提到逻辑运算只能操作布尔变量,这其实是不严谨的,因为经过Java编程实现,会发现“&”.“|”.“^”这几个逻辑符号竟然可以对数字进行运算.譬如下面的代码就直接对数字分别开展了“与”.“或 ...
- Lansat8大气校正USGS-EROS项目espa-surface-reflectance中的LaSRC Version 1.3.0模块利用vs2010编译出windows64位版本的使用(三)
Landsat8大气校正程序LaSRC是目前最好的,使用方式也够傻瓜,输入文件输出结果. 但有一个限制,就是程序需要预先下载好的MODIS辅助文件来确定水汽.压强等大气参数. 如果待大气校正的land ...
- Python 使用Python远程连接并操作InfluxDB数据库
使用Python远程连接并操作InfluxDB数据库 by:授客 QQ:1033553122 实践环境 Python 3.4.0 CentOS 6 64位(内核版本2.6.32-642.el6.x86 ...
- Android为TV端助力listview 非常重要的几个属性
首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false Android:stackFromBottom="true" ...
- Monkey测试记录
配置环境变量,不然用不了adb命令 path这里也一样配置一下 命令的各种意思百度一下看看也就知道了 看到一篇博客推荐的一种测试命令,我也直接拿来用了 adb shell monkey -p 你的包名 ...