zoukankan      html  css  js  c++  java
  • 以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的代码贴上来是因为我前端代码写的太烂了。。。

     
  • 相关阅读:
    javascript高级知识点——函数原型
    javascript高级知识点——临时作用域
    javascript中的部分函数应用
    javascript高级知识点——闭包
    使用HIPQTools播放视频—记录
    wpa_suppliant编译小结
    内存溢出和内存泄漏
    C代码规范
    Makefiel(一)
    Lua语言
  • 原文地址:https://www.cnblogs.com/scuury/p/9193658.html
Copyright © 2011-2022 走看看