JAVA 利用FFmpegframeGrabber 获取rstp监控视频流截图工具
最近在项目内碰见一个需求,需要通过监控视频连接获取视频流截取流内的图片 并保存的功能,在网上找了各种方案费了些时间,写了个工具类,留作以后参考
依赖包
org.bytedeco javacv-platform1.4.4 pom
工具类
package com.alex.project.tool.utils; import org.bytedeco.javacv.*; import org.bytedeco.javacv.frame; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class VideoUtils { private static final Logger log = LoggerFactory.getLogger(VideoUtils.class); private static String rtspTransportType = "tcp"; private static int frameRate = 25; private static int frameWidth = 1920; private static int frameHeight = 1080; private static int count=100; public static void getVideoImagePathByRSTP(String path, String picPath) throws Exception { //创建rstp流对象 FFmpegframeGrabber grabber = createGrabber(path); try { //开启流获取 grabber.start(); //由于视频第一帧的流可能为黑屏 为了确保实时能截取到准确图像 // 故此做了个for循环用于覆盖生成图片 for (int i=0;i工具使用时需注意的点
1.目前测试能解析的视频流有H265,H264的流,不支持Smart…流
2.当碰见无法解析的流时会产生阻塞
3. 截取流内的图片第一帧,不一定是监控图,建议多遍历几次覆盖刷新输出的图片如果大家有好的想法可以探讨下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)