Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片

先展示maven依赖吧,就一个javacv

<dependency>
			<groupId>org.bytedeco</groupId>
			<artifactId>javacv-platform</artifactId>
			<version>1.5.1</version>
			<type>pom</type>
		</dependency>

然后就是测试类

public static void testzc() throws FrameGrabber.Exception
	{
		String rtsp = "获取的对应rtsp流";

		FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtsp);
		grabber.setOption("rtsp_transport", "tcp"); // 使用tcp的方式,不然会丢包很严重
		grabber.setImageWidth(960);
		grabber.setImageHeight(540);
		grabber.start();

		CanvasFrame canvasFrame = new CanvasFrame("正茂");// 创建窗口
		canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口关闭程序是否也跟随关闭
		canvasFrame.setAlwaysOnTop(true);

		OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
		int ex = 0;
		while (true)
		{
			Frame frame = grabber.grabImage();
			canvasFrame.showImage(frame);
            //程序到这里其实已经实现了预览的功能了,下面的方法就是将流保存成图片


			//opencv_core.Mat
			Mat mat = converter.convertToMat(frame);
			opencv_imgcodecs.imwrite("E:\\tp\\" + ex + ".png", mat);
			
			ex++;
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException e)
			{
				e.printStackTrace();
			} // 1000毫秒刷新一次圖像
		}

	}

还有一个调用这个方法的主类,我也贴出来吧

public static void main(String[] args)
	{
		try
		{
			testzc();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

最后我还是想说一句,在调用rtsp流之前,先弄清楚你的摄像头设备的流获取规则,比如我的摄像头牌子是海康的,对应的获取流的规则,我在另个帖子说了,你们要根据你们的牌子找对应的规则获取到流后再做上面的流处理。

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值