jave 获取音视频文件的大小以及播放时长

Posted zhuanzhuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jave 获取音视频文件的大小以及播放时长相关的知识,希望对你有一定的参考价值。

首先引入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 获取音视频文件的大小以及播放时长的主要内容,如果未能解决你的问题,请参考以下文章

Java使用JAVE获取MP4播放时长

java 代码获取视频时长

用js获取视频播放时长

Java获取视频的大小时长

如何在 PHP 中获取视频时长、尺寸和大小?

VideoView根据视频路径获取视频长度(播放前,同样适用于音频资源)