javacv需要添加的依赖(内容比较多)
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.6</version>
</dependency>
简单的demo
public void getPicture() {
try {
FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
log.info("创建grabber成功");
grabber.setOption("rtsp_transport", "tcp");
grabber.setImageWidth(frameWidth);
grabber.setImageHeight(frameHeight);
FFmpegLogCallback.set();
grabber.start();
log.info("grabber.start");
Java2DFrameConverter java2DFrameConverter = new Java2DFrameConverter();
while (true){
Frame frame = grabber.grabImage();
if (null == frame) {
continue;
}
BufferedImage bufferedImage = java2DFrameConverter.getBufferedImage(frame);
byte[] bytes = imageToBytes(bufferedImage, "jpg");
byte2image(bytes);
}
} catch (FFmpegFrameGrabber.Exception e) {
e.printStackTrace();
} finally {
try {
grabber.stop();
} catch (FFmpegFrameGrabber.Exception e) {
e.printStackTrace();
}
}
}
/**
* byte数组到图片
*
* @param data
*/
public void byte2image(byte[] data) {
if (data.length < 3) {
return;
}
try (FileImageOutputStream imageOutput = new FileImageOutputStream(new File("D:\\excel\\" + num + ".png"));){
imageOutput.write(data, 0, data.length);
log.info("图片保存成功" + num);
num++;
} catch (Exception ex) {
ex.printStackTrace();
}
}