Java代码如何获取视频时长、宽高、文件大小、格式、截图呢?

书欣 Java经验 发布时间:2022-10-08 09:40:40 阅读数:13952 1
下文笔者讲述java中获取视频时长,视频大小,视频格式等相关信息简介说明,如下所示
实现思路:
     1.下载相应的jar包
	      http://www.sauronsoftware.it/projects/jave/download.php 
     2.借助it.sauronsoftware.jave.MultimediaInfo类中的
	   相关方法,即可获取视频的相关信息
例:

import it.sauronsoftware.jave.Encoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.channels.FileChannel;

/**  
 * @Description:获取视频宽高大小时间
 */
public class ReadVideo {

	public static void main(String[] args) {
		File source = new File("D://testmp4.mp4");

		Encoder encoder = new Encoder();
		FileChannel fc = null;
		String size = "";
		try {

			it.sauronsoftware.jave.MultimediaInfo m = encoder.getInfo(source);
			long ls = m.getDuration();
			System.out.println("此视频时长为:" + ls / 60000 + "分" + (ls) / 1000 + "秒!");
			// 视频帧宽高
			System.out.println("此视频高度为:" + m.getVideo().getSize().getHeight());
			System.out.println("此视频宽度为:" + m.getVideo().getSize().getWidth());
			System.out.println("此视频格式为:" + m.getFormat());

			FileInputStream fis = new FileInputStream(source);
			fc = fis.getChannel();
			BigDecimal fileSize = new BigDecimal(fc.size());
			size = fileSize.divide(new BigDecimal(1048576), 2, RoundingMode.HALF_UP) + "MB";
			System.out.println("此视频大小为" + size);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != fc) {
				try {
					fc.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

对视频进行截图

public static boolean processImg(String veido_path,String ffmpeg_path) {
	File file = new File(veido_path);
	if (!file.exists()) {
		System.err.println("路径[" + veido_path + "]对应的视频文件不存在!");
		return false;
	}
	list<String> commands = new java.util.ArrayList<String>();
	commands.add(ffmpeg_path);
	commands.add("-i");
	commands.add(veido_path);
	commands.add("-y");
	commands.add("-f");
	commands.add("image2");
	commands.add("-ss");
	commands.add("1");//这个参数是设置截取视频多少秒时的画面
	commands.add("-t");
	commands.add("0.001");
	commands.add("-s");
	commands.add("1920x1080");//宽X高
	commands.add(veido_path.substring(0, veido_path.lastIndexOf(".")).replaceFirst("vedio", "file") + ".jpg");
	try {
		ProcessBuilder builder = new ProcessBuilder();
		builder.command(commands);
		builder.start();
		System.out.println("截取成功");
		return true;
	} catch (Exception e) {
		e.printStackTrace();
		return false;
	}
}


public static void main(String[] args) {
	processImg("C:\\Users\\java265\\Desktop\\hellTestMp4.mp4","src/test/lib/ffmpeg.exe");
}

注意事项: 
    此处借助了ffmpeg.exe这个程序进行截图操作
	ffmpeg.exe应用程序的下载位置
     http://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20170921-183fd30-win64-static.zip 
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202210/16651933024590.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者