rtsp+javacv 获取图片

这个博客展示了如何使用javacv库从rtsp视频流中抓取图像,并将其转换为BufferedImage,然后保存为jpg格式的文件。代码示例中包含了FFmpegFrameGrabber的使用,设置rtsp传输方式为tcp,以及图像处理的流程。
摘要由CSDN通过智能技术生成

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();
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值