【java小程式】利用ffmpeg對視訊進行截圖操作
阿新 • • 發佈:2018-12-21
ffmpeg程式對視訊進行的截圖的命令如下語法如下:
ffmpeg.exe -ss 00:00:01 -i spring.mp4 -vframes 1 bb.jpg
- 00:00:01 擷取視訊圖片的時間。
- spring.map4 需要擷取的視訊名稱。
- 1 當前時間內的第幾幀,1表示第一幀。
- bb.jpg 表示生成的圖片名稱。
程式碼如下:
** * 獲取視訊的資訊 */ public class FetchVideoCover { //視訊路徑 private String ffmpegEXE; public void getCover(String videoInputPath, String coverOutpuPath) throws IOException,InternalError{ //擷取圖片的命令 ffmpeg.exe -ss 00:00:01 -i spring.mp4 -vframes 1 bb.jpg List<String> command = new ArrayList<>(); command.add(ffmpegEXE); //指定擷取第1秒 command.add("-ss"); command.add("00:00:01"); command.add("-y"); command.add("-i"); command.add(videoInputPath); command.add("-vframes"); command.add("1"); command.add(coverOutpuPath); ProcessBuilder builder = new ProcessBuilder(command); Process process = builder.start(); InputStream errorStream = process.getErrorStream(); InputStreamReader inputStreamReader = new InputStreamReader(errorStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line = ""; while((line = bufferedReader.readLine()) != null) { } if(bufferedReader != null) { bufferedReader.close(); } if(inputStreamReader != null){ inputStreamReader.close(); } if(errorStream != null) { errorStream.close(); } } public String getFfmpegEXE() { return ffmpegEXE; } public void setFfmpegEXE(String ffmpegEXE) { this.ffmpegEXE = ffmpegEXE; } public FetchVideoCover() { super(); } public FetchVideoCover(String ffmpegEXE) { this.ffmpegEXE = ffmpegEXE; } }
對以上工具類的呼叫
//對視訊進行截圖
FetchVideoCover videoInfo = new FetchVideoCover(FFMPEG_EXE);
videoInfo.getCover(finalVideoPath,FILE_SPACE + coverPathDB);