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

pom包

        <dependency>
			<groupId>org.bytedeco</groupId>
			<artifactId>javacv</artifactId>
			<version>1.5.6</version>
		</dependency>
		<dependency>
			<groupId>org.bytedeco</groupId>
			<artifactId>ffmpeg-platform</artifactId>
			<version>4.4-1.5.6</version>
		</dependency>

代码

package com.test.springboot;

import lombok.extern.slf4j.Slf4j;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;


@SpringBootTest
@Slf4j
@SuppressWarnings("unchecked")
class SpringbootApplicationTests {

    @Test
    void contextLoads() throws IOException {
                String file = "rtsp://admin:123456@192.168.1.19:554/h264/ch1/main/stream";
                FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(file);
                grabber.setOption("rtsp_transport", "tcp"); // 使用tcp的方式,不然会丢包很严重
                grabber.setImageWidth(1920);
                grabber.setImageHeight(1080);
                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("D:\\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;
            }



}

总结

ok了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值