下载下来的东西可能有不少,可是完成所须要的其实就这两个。java
打开cmd,依照图中的命令,进入ffmpeg的路径下,输入ffmpeg.exe -i 视频路径地址编程
若是出现以下信息,代表插件可用。信息中会记载时长,开始点,文件格式,等等app
/** * 获取视频总时间 * * @param videoPath 视频路径 * @param ffmpegPath ffmpeg路径 * @return */ public static int getVideoTime(String videoPath, String ffmpegPath) throws Exception { List<String> commands = new java.util.ArrayList<String>(); commands.add(ffmpegPath); commands.add("-i"); commands.add(videoPath); //模拟cmd指令发送 ProcessBuilder builder = new ProcessBuilder(); builder.command(commands); final Process p = builder.start(); //从输入流中读取视频信息 BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream())); StringBuffer sb = new StringBuffer(); String line; while ((line = br.readLine()) != null) { sb.append(line); } br.close(); //从视频信息中解析时长 String regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s"; Pattern pattern = Pattern.compile(regexDuration); Matcher m = pattern.matcher(sb.toString()); if (m.find()) { int time = getTimelen(m.group(1)); // System.out.println(video_path+",视频时长:"+time+", 开始时间:"+m.group(2)+",比特率:"+m.group(3)+"kb/s"); return time; } return 0; } //格式:"00:00:10.68" 转化为秒数 public static int getTimelen(String timelen) { int min = 0; String strs[] = timelen.split(":"); if (strs[0].compareTo("0") > 0) { min += Integer.valueOf(strs[0]) * 60 * 60;//秒 } if (strs[1].compareTo("0") > 0) { min += Integer.valueOf(strs[1]) * 60; } if (strs[2].compareTo("0") > 0) { min += Math.round(Float.valueOf(strs[2])); } return min; }
/** * 获取视频第几秒的截图 * * @param videoPath * @param ffmpegPath * @param time * @param savePath */ public static void getVideoCover(String videoPath, String ffmpegPath, int time, String savePath) throws Exception { String videoName = videoPath.substring(videoPath.lastIndexOf("\\") + 1); String videoCoverName = videoName.substring(0, videoName.lastIndexOf(".")) + ".jpg"; List<String> cmd = new ArrayList<>(); cmd.add(ffmpegPath); cmd.add("-i"); cmd.add(videoPath); cmd.add("-y"); cmd.add("-f"); cmd.add("mjpeg"); cmd.add("-ss"); cmd.add(String.valueOf(time)); cmd.add("-t"); cmd.add("0.001"); cmd.add("-s"); cmd.add("1920*1080"); cmd.add(savePath + "\\" + videoCoverName); ProcessBuilder builder = new ProcessBuilder(); builder.command(cmd); builder.start(); }