java通过摄像头截取图片
1.准备
有可连接的摄像头,例如大华、海康
ffmpeg下载:https://blog.****.net/qq_16855077/article/details/89839708
例如下面rtsp各个品牌的url不同,这里就不过多的说明
rtsp://admin:[email protected]:554/Streaming/Channels/101?transportmode=unicast
2.截图
package com.qihui.qxj.services.system;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
List commend = new ArrayList();
commend.add("c:/bin/ffmpeg.exe");
commend.add("-i");
commend.add("rtsp://admin:[email protected]:554/Streaming/Channels/101?transportmode=unicast");
commend.add("-s");
commend.add("4096*1800");
commend.add("-b");
commend.add("4M");
commend.add("-y");
commend.add("-f");
commend.add("image2");
commend.add("-an");
commend.add("-loglevel");
commend.add("8");
commend.add("d:/project/direct/40/a1.jpg");
Process p = null;
try {
ProcessBuilder builder = new ProcessBuilder(commend);
builder.command(commend);
p = builder.start();
p.getOutputStream().close();
doWaitFor(p);
p.destroy();
System.out.println(1122);
} catch (Exception e) {
PrintCatchErrorMsg.Print(e, "Part", "getRSTPPicture.catch", "Exception");
p.destroy();
}
}
public static int doWaitFor(Process p) {
InputStream in = null;
InputStream err = null;
int exitValue = -1;
try {
in = p.getInputStream();
err = p.getErrorStream();
boolean finished = false;
while(!finished) {
try {
Character c;
while(in.available() > 0) {
c = new Character((char)in.read());
System.out.print(c);
}
while(err.available() > 0) {
c = new Character((char)err.read());
System.out.print(c);
}
exitValue = p.exitValue();
finished = true;
} catch (IllegalThreadStateException var19) {
Thread.currentThread();
Thread.sleep(500L);
}
}
} catch (Exception var20) {
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException var18) {
}
if (err != null) {
try {
err.close();
} catch (IOException var17) {
}
}
}
return exitValue;
}
}
c:/bin/ffmpeg.exe ffmepeg的位置
-i 地址
-s 分辨率
-b 码率
-y 如果文件存在,再替换