jave 獲取音視頻文件的大小、以及播放時長
阿新 • • 發佈:2017-07-03
try message 文件夾 -1 sig system als alt for
首先引入jave-1.0.2.jar,
寫了個demo 僅供參考
package com.readVideo.test; public class VideoName { private int id; private String name; private String time; private String size; private String leaf; private String url; private String brief; private int VIDEO_DETAIL_ID; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getSize() { return size; } public void setSize(String size) { this.size = size; } public String getLeaf() { return leaf; } public void setLeaf(String leaf) { this.leaf = leaf; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getBrief() { return brief; } public void setBrief(String brief) { this.brief = brief; } public int getVIDEO_DETAIL_ID() { return VIDEO_DETAIL_ID; } public void setVIDEO_DETAIL_ID(int vIDEO_DETAIL_ID) { VIDEO_DETAIL_ID = vIDEO_DETAIL_ID; } }
package com.readVideo.test; import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.MultimediaInfo; import java.io.File; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; public class ReadVideoMessages { /** * 得到視頻的大小 * * @param f * 文件 * @return 視頻的大小 */ public static String getFileSize(File f) { // 保留兩位小數 DecimalFormat df = new DecimalFormat(".##"); // 得到視頻的長度 Long long1 = f.length(); String size = ""; long G = 1024 * 1024 * 1024; long M = 1024 * 1024; long K = 1024; // 視頻大小超過G、超過M不超過G、超過K不超過M if (long1 / G >= 1) { size = df.format((double) long1 / G) + "G"; } else if (long1 / M >= 1) { size = df.format((double) long1 / M) + "M"; } else if (long1 / K >= 1) { size = df.format((double) long1 / K) + "K"; } else { size = long1 + "B"; } // System.out.println(time); return size; } /** * 得到視頻的長度 * * @param f * 文件 * @return 視頻的長度 */ public static String getVideoTime(File f) { String time = ""; //新建編碼器對象 Encoder encoder = new Encoder(); try { //得到多媒體視頻的信息 MultimediaInfo m = encoder.getInfo(f); //得到毫秒級別的多媒體是視頻長度 long ls = m.getDuration(); //轉換為分秒 time = ls / 60000 + "分" + (ls - (ls / 60000 * 60000)) / 1000 + "秒"; } catch (Exception e) { e.printStackTrace(); } return time; } // 顯示目錄的方法 /** * 得到視頻所有的信息 * * @param file * 文件夾 or 文件 * @return 視頻的信息 */ public static List<VideoName> getAllMessage(File file) { List<VideoName> videoNames = new ArrayList<VideoName>(); // System.out.println( file.getAbsolutePath()); String time = ""; String size = ""; // 判斷傳入對象是否為一個文件夾對象 if (!file.isDirectory()) { System.out.println("你輸入的不是一個文件夾,請檢查路徑是否有誤!!"); } else { File[] f = file.listFiles(); for (int i = 0; i < f.length; i++) { // 判斷文件列表中的對象是否為文件夾對象,如果是則執行tree遞歸,直到把此文件夾中所有文件輸出為止 if (f[i].isDirectory()) { System.out.println(f[i].getName() + "\tttdir"); // getAllMessage(f[i]); } else { time = getVideoTime(f[i]); if (time.equals("")) { time = "未知"; } size = getFileSize(f[i]); VideoName videoName = new VideoName(); int j = f[i].getName().indexOf("-", 1); videoName.setName(f[i].getName().substring(0, j)); videoName.setSize(size); videoName.setTime(time); videoName.setBrief(f[i].getName().substring(j + 1, f[i].getName().length())); videoName.setUrl("F:/Resource/video/硬件/AltiumDesigner/" + f[i].getName()); videoNames.add(videoName); System.out.println(time + "---" + size + "---" + f[i].getName().substring(0, j) + "---" + f[i].getName().substring(j + 1, f[i].getName().length()) + "---" + "F:/Resource/video/硬件/AltiumDesigner/" + f[i].getName()); } } } return videoNames; } public static void main(String[] args) { File f = new File("F:\\Resource\\video\\軟件\\LabView"); List<VideoName> videoMessages = getAllMessage(f); System.out.println(videoMessages.size()); } }
jave 獲取音視頻文件的大小、以及播放時長