/** * 视频截图 * @param veido_path 视频路径 * @param ffmpeg_path ffmpeg路径 * @param image_name 图片保存路径 * @param time 截图时间戳 * @return */ public static boolean processImg(String veido_path, String ffmpeg_path, String image_name, float time) { File file = new File(veido_path); if (!file.exists()) { log.info("路径[" + veido_path + "]对应的视频文件不存在!"); return false; } List<String> commands = new java.util.ArrayList<String>(); commands.add(ffmpeg_path); commands.add("-ss");//SS参数放在最开始截图速度最快 commands.add("\""+time+"\"");//这个参数是设置截取视频多少秒时的画面 commands.add("-i"); commands.add(veido_path); commands.add("-y"); commands.add("-f"); commands.add("image2"); // commands.add("-t"); // commands.add("\""+z+"\""); // commands.add("-s"); // commands.add("700x525"); commands.add(image_name+".jpg"); try { ProcessBuilder builder = new ProcessBuilder(); builder.command(commands); builder.start(); log.info(veido_path+",第 "+time+" 秒截取成功..."); return true; } catch (Exception e) { e.printStackTrace(); return false; } }
参数介绍:
-i 输入文件 "f:\\test.flv"
-f 表示输出文件格式
-ss 表示相对于文件开始处的时间偏移值, 即从5秒出开始截图
-s 表示截图的的大小,如果不指定,则为视频原始分辨率
-vframes 表示截图的桢数
-y 输出文件"f:\\test.jpg"