1. 程式人生 > >jave 獲取音視頻文件的大小、以及播放時長

jave 獲取音視頻文件的大小、以及播放時長

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 獲取音視頻文件的大小、以及播放時長