From 3a7c041816956e67484131bc496216ef4f530795 Mon Sep 17 00:00:00 2001 From: eguid Date: Mon, 22 Jul 2019 23:56:01 +0800 Subject: [PATCH] =?UTF-8?q?BytesGrabber=E8=BF=9E=E7=BB=AD=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E5=8A=9F=E8=83=BD=E7=A8=B3=E5=AE=9A=EF=BC=8C=E6=9C=AC?= =?UTF-8?q?=E6=AC=A1=E5=A2=9E=E5=8A=A0=E5=85=B6=E4=BB=96=E5=87=A0=E4=B8=AA?= =?UTF-8?q?Grabber=E8=BF=9E=E7=BB=AD=E6=88=AA=E5=9B=BE=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E8=AF=AD=E6=B3=95=E7=B3=96=E5=AE=9E=E7=8E=B0=EF=BC=8C=E8=80=81?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9A=82=E4=B8=8D=E6=94=AF=E6=8C=81=E8=BF=9E?= =?UTF-8?q?=E7=BB=AD=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../videoimageshot/grabber/BufferGrabber.java | 26 +++++++++-- .../grabber/BufferedImageGrabber.java | 21 +++++++++ .../ffmpeg/FFmpeg4VideoImageGrabber.java | 42 ++++++++++++++++++ .../ffmpeg/FFmpegVideoImageGrabber.java | 44 +++++++++++++++++++ .../grabber/ffmpeg/GrabberTemplate4.java | 4 +- 5 files changed, 132 insertions(+), 5 deletions(-) diff --git a/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferGrabber.java b/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferGrabber.java index 23b2f28..e433efc 100644 --- a/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferGrabber.java +++ b/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferGrabber.java @@ -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; } diff --git a/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferedImageGrabber.java b/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferedImageGrabber.java index 3468f84..e759ba7 100644 --- a/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferedImageGrabber.java +++ b/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/BufferedImageGrabber.java @@ -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; } diff --git a/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/ffmpeg/FFmpeg4VideoImageGrabber.java b/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/ffmpeg/FFmpeg4VideoImageGrabber.java index 6b4d6c5..cbe73b8 100644 --- a/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/ffmpeg/FFmpeg4VideoImageGrabber.java +++ b/corelib/videoimageshot/src/main/java/cc/eguid/cv/corelib/videoimageshot/grabber/ffmpeg/FFmpeg4VideoImageGrabber.java @@ -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;i0) { + byte[][] bytes=grabBytes(url,fmt, sum, interval); + if(bytes!=null) { + images=new BufferedImage[sum]; + for(int i=0;i