• 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() + "	ttdir");
    					// 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());
    	}
    
    }
    
  • 相关阅读:
    jdk silent install test
    jdk silent install
    PS_note_01
    string.split('',-1)的作用
    dos下静默安装
    dos命令中rem 与::的区别
    barcode4j用法
    查看tomcat的版本
    eclipse里启动rabbitmq报错 java.net.SocketException: Connection reset
    Mysql性能调优
  • 原文地址:https://www.cnblogs.com/chizizhixin/p/7111054.html
Copyright © 2020-2023  润新知