畢設項目是一個在線學習系統,教師用戶有上傳視頻的功能,在答辯以前趕了一個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