
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条)