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