java播放rtsp视频(连接网络摄像头)和截取视频图片

依赖

<dependency>
	<groupId>org.bytedeco</groupId>
	<artifactId>javacv-platform</artifactId>
	<version>1.4.4</version>
</dependency>

简单代码

代码是从网络上搬运的,测试过可以使用。

public class Test {
	public static void main(String[] args) throws IOException {
		String file = "rtsp://admin:admin@192.168.3.54/1";
		FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(file);
		grabber.setOption("rtsp_transport", "tcp"); // 使用tcp的方式,不然会丢包很严重
		grabber.setImageWidth(960);
		grabber.setImageHeight(540);
		System.out.println("grabber start");
		grabber.start();
		
//1.播放视频
/* 
		CanvasFrame canvasFrame = new CanvasFrame("摄像机");
		canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		canvasFrame.setAlwaysOnTop(true);
		OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
		while (true){
			Frame frame = grabber.grabImage();
			opencv_core.Mat mat = converter.convertToMat(frame);
			canvasFrame.showImage(frame);
		}
 */
		

//2.帧截图
/*
		File outPut = new File("E:\\aa.jpg");
		while (true){
				Frame frame = grabber.grabImage();
				if (frame != null) {
					ImageIO.write(FrameToBufferedImage(frame), "jpg", outPut);
					grabber.stop();
					grabber.release();
					System.out.println("图片已保存");
					break;
				}
		
		}

 */
		

	}

	/**
	 * 创建BufferedImage对象
	 */
	public static BufferedImage FrameToBufferedImage(Frame frame) {
		Java2DFrameConverter converter = new Java2DFrameConverter();
		BufferedImage bufferedImage = converter.getBufferedImage(frame);
//		bufferedImage=rotateClockwise90(bufferedImage);
		return bufferedImage;
	}
	/**
	 * 处理图片,将图片旋转90度。
	 */
	public static BufferedImage rotateClockwise90(BufferedImage bi) {
		int width = bi.getWidth();
		int height = bi.getHeight();
		BufferedImage bufferedImage = new BufferedImage(height, width, bi.getType());
		for (int i = 0; i < width; i++)
			for (int j = 0; j < height; j++)
				bufferedImage.setRGB(j, i, bi.getRGB(i, j));
		return bufferedImage;
	}
}
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值