提交 3a7c0418 编写于 作者: eguid_1's avatar eguid_1

BytesGrabber连续截图功能稳定,本次增加其他几个Grabber连续截图功能语法糖实现,老版本暂不支持连续截图

上级 7bbc174f
......@@ -19,7 +19,7 @@ public interface BufferGrabber{
/**
* 抓取图像缓冲区(默认获取BGR数据)
* @param url-视频地址
* @param url 视频地址
* @return
* @throws IOException
*/
......@@ -27,11 +27,31 @@ public interface BufferGrabber{
/**
* 抓取图像缓冲区
* @param url -视频地址
* @param fmt -图像数据结构(默认BGR24)
* @param url 视频地址
* @param fmt 图像数据结构(默认BGR24)
* @return
* @throws IOException
*/
ByteBuffer grabBuffer(String url, Integer fmt) throws IOException;
/**
* 连续截图获取多个图像缓冲(默认BGR24像素格式)
* @param url 视频地址
* @param sum 截图总数
* @param interval 间隔(每隔几帧截图一次,需要自行确定视频帧率)
* @return
* @throws IOException
*/
ByteBuffer[] grabBuffers(String url,int sum, int interval) throws IOException;
/**
* 连续截图获取多个图像缓冲
* @param url -视频地址
* @param fmt -图像数据结构(默认BGR24)
* @param sum 截图总数
* @param interval 间隔(每隔几帧截图一次,需要自行确定视频帧率)
* @return
* @throws IOException
*/
ByteBuffer[] grabBuffers(String url, Integer fmt,int sum, int interval) throws IOException;
}
......@@ -27,5 +27,26 @@ public interface BufferedImageGrabber{
* @throws IOException
*/
BufferedImage grabBufferImage(String url, Integer fmt) throws IOException;
/**
* 连续抓取图像
* @param url -视频地址
* @param sum 截图总数
* @param interval 间隔(每隔几帧截图一次,需要自行确定视频帧率)
* @return
* @throws IOException
*/
BufferedImage[] grabBufferImages(String url, int sum, int interval) throws IOException;
/**
* 连续抓取图像
* @param url -视频地址
* @param fmt -图像数据结构(可选,为空默认BGR24)
* @param sum 截图总数
* @param interval 间隔(每隔几帧截图一次,需要自行确定视频帧率)
* @return
* @throws IOException
*/
BufferedImage[] grabBufferImages(String url, Integer fmt,int sum, int interval) throws IOException;
}
......@@ -99,6 +99,26 @@ public class FFmpeg4VideoImageGrabber extends GrabberTemplate4 implements Base64
return buf;
}
@Override
public ByteBuffer[] grabBuffers(String url, int sum, int interval) throws IOException {
return grabBuffers(url,null,sum,interval);
}
@Override
public ByteBuffer[] grabBuffers(String url, Integer fmt, int sum, int interval) throws IOException {
if(sum>0) {
byte[][] bytes=grabBytes(url,fmt, sum, interval);
if(bytes!=null) {
ByteBuffer[] bufs=new ByteBuffer[sum];
for(int i=0;i<bytes.length;i++) {
bufs[i]=ByteBuffer.wrap(bytes[i]);
}
return bufs;
}
}
return null;
}
@Override
public BufferedImage grabBufferImage() throws IOException {
return grabBufferImage(this.url,null);
......@@ -117,6 +137,28 @@ public class FFmpeg4VideoImageGrabber extends GrabberTemplate4 implements Base64
return image;
}
@Override
public BufferedImage[] grabBufferImages(String url, int sum, int interval) throws IOException {
return grabBufferImages(url,null,sum,interval);
}
@Override
public BufferedImage[] grabBufferImages(String url, Integer fmt, int sum, int interval) throws IOException {
BufferedImage[] images=null;
if(sum>0) {
byte[][] bytes=grabBytes(url,fmt, sum, interval);
if(bytes!=null) {
images=new BufferedImage[sum];
for(int i=0;i<bytes.length;i++) {
images[i]= JavaImgConverter.BGR2BufferedImage(bytes[i],this.width,this.height);
}
return images;
}
}
return null;
}
@Override
public String getBase64Image(String url) throws IOException {
return getBase64Image(url, null);
......
......@@ -136,5 +136,49 @@ public class FFmpegVideoImageGrabber extends GrabberTmplate implements BufferGra
this.fmt = fmt;
}
/**
* 未实现,推荐使用FFmpeg4VideoImageGrabber
* @see FFmpeg4VideoImageGrabber
*/
@Deprecated
@Override
public ByteBuffer[] grabBuffers(String url, int sum, int interval) throws IOException {
// TODO Auto-generated method stub
return null;
}
/**
* 未实现,推荐使用FFmpeg4VideoImageGrabber
* @see FFmpeg4VideoImageGrabber
*/
@Deprecated
@Override
public ByteBuffer[] grabBuffers(String url, Integer fmt, int sum, int interval) throws IOException {
// TODO Auto-generated method stub
return null;
}
/**
* 未实现,推荐使用FFmpeg4VideoImageGrabber
* @see FFmpeg4VideoImageGrabber
*/
@Deprecated
@Override
public BufferedImage[] grabBufferImages(String url, int sum, int interval) throws IOException {
// TODO Auto-generated method stub
return null;
}
/**
* 未实现,推荐使用FFmpeg4VideoImageGrabber
* @see FFmpeg4VideoImageGrabber
*/
@Deprecated
@Override
public BufferedImage[] grabBufferImages(String url, Integer fmt, int sum, int interval) throws IOException {
// TODO Auto-generated method stub
return null;
}
}
......@@ -57,7 +57,7 @@ public abstract class GrabberTemplate4 implements Grabber{
private SwsContext sws_ctx;//图像缩放和像素格式转换上下文
private AVFrame outFrameRGB;//用于存储转换后的RGB像素数据,默认转换成RGB
public GrabberTemplate4() {
super();
}
......@@ -313,7 +313,7 @@ public abstract class GrabberTemplate4 implements Grabber{
//读取错误或读取完成
return null;
}finally {
av_free(buffer);//Don't free buffer
av_free(buffer);//Don't free buffer? Of course not!
freeAndClose();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册