【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);
