Windows下使用ffmpeg与java实现截取视频缩略图
【ffmpeg.exe可执行文件获取】:
网上搜索后得到编译好的ffmpeg文件,下载地址:http://download.csdn.net/source/453719
【安装】:
将下载的文件解压,如:D:\ffmpeg,一共三个文件,分别是:ffmpeg.exe、ffplay.exe、pthreadGC2.dll。我们用到的应该是ffmpeg.exe。
【实现获取视频缩略图的两种方式】:
1、调用批处理文件:
批处理文件(如:ffmpeg.bat),内容:D:/ffmpeg/ffmpeg.exe -i %1 -ss 20 -vframes 1 -r 1 -ac 1 -ab 2 -s 160*120 -f image2 %2 。其中,%1与%2类似C语言中的参数,代码中是需要替换的,Java代码如下:
public static void main(String[] args) {
// 视频文件
String videoRealPath = "E://test.flv";
// 截图的路径(输出路径)
String imageRealPath = "E://test.jpg";
// 1、调用批处理文件
try {
Runtime.getRuntime().exec( "cmd /c start E://ffmpeg.bat " + videoRealPath + " " + imageRealPath);
} catch (IOException e) {
e.printStackTrace();
}
}
2、调用系统中的可执行程序
Java代码如下:
public static final String FFMPEG_PATH = "D:/ffmpeg/ffmpeg.exe";
public static boolean processImg(String path) {
File file = new File(path);
if (!file.exists()) {
System.err.println("路径[" + path + "]对应的视频文件不存在!");
return false;
}
List<String> commands = new java.util.ArrayList<String>();
commands.add(FFMPEG_PATH);
commands.add("-i");
commands.add(path);
commands.add("-y");
commands.add("-f");
commands.add("image2");
commands.add("-ss");
commands.add("38");
commands.add("-t");
commands.add("0.001");
commands.add("-s");
commands.add("320x240");
commands.add(path.substring(0, path.indexOf(".")) + ".jpg");
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commands);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
【总结】:
ffmpeg功能强大,不仅可以获取缩略图,而且支持大部分主流的视频格式,而且也可以对视频进行转码,使用起来也非常方便。虽然它是在Linux下开发而来的,但它可以在包括Windows下的大多操作系统中编译,本文就是用了在Windows环境下编译好的文件来实现的。