JAVA中怎么能将视频中的图片提取出来,将某一时间的图像提取出来。求大神指点下。

JAVA中怎么能将视频中的图片提取出来,将某一时间的图像提取出来。求大神指点下。

用ffmpeg软件包然后用java调用,ffmpeg的缺点是不是所有的视频格式都支持,但大部分都可以,编译好的ffmpeg下载地址见附件,把解压的ffmpeg.exe放在d:\ffmpeg\ffmpeg.exe,下面的java代码是转载的,不是我写的

/**
 * 通过Ffmpeg 截取视频图像
 * author:刘坤林
 * time:2010.12.12
 */
import java.util.List;
public class Snapshot {
/**
 * @param args
 */
public static void main(String[] args) {
String s1="D://test.avi";
String s2="D://test.jpg";
if(take(s1,s2)) System.out.println("yes");
else System.out.println("no");
}
/**
 * 假设命令为
 * ffmpeg -i e:/13.flv -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg 
 * 输入:视频地址,图片生成地址
 * 前置条件:D://ffmpeg//ffmpeg.exe
 */
public static boolean take(String videoLocation, String imageLocation)
{

List<String> commend = new java.util.ArrayList<String>();
//低精度
commend.add("D://ffmpeg//ffmpeg.exe");
commend.add("-i");
commend.add(videoLocation);
commend.add("-y");
commend.add("-f");
commend.add("image2");
commend.add("-ss");
commend.add("08.010");
commend.add("-t");
commend.add("0.001");
commend.add("-s");
commend.add("352x240");
commend.add(imageLocation);
/*
StringBuffer test=new StringBuffer();
for(int i=0;i<commend.size();i++)
test.append(commend.get(i)+" ");
System.out.println(test);
*/
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}

 

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答