以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/這個目錄下,而後在依賴中寫下java

<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>

我以前在網上看到的一段代碼是這樣的dom

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");
       }

我試了一下maven

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的代碼貼上來是由於我前端代碼寫的太爛了。。。ide

相關文章
相關標籤/搜索