栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaCV:将rtsp流媒体保存为jpg到磁盘

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaCV:将rtsp流媒体保存为jpg到磁盘

注:文章说明的内容是记录了解的一些常见单位或名词的含义等,如有错误请在评论指出,不胜感激。

文章目录
  • 前言
  • 一、BufferedImage
  • 二、JavaCV操作rtsp流媒体
    • 1.依赖库
    • 2.代码
    • 3.结果


前言

图像:一个图像由像素点和像素点的色彩信息构成,常见的像素数据有rgb、yuv、rbga等。

图像容量:例如一幅彩色图像(RGB),分辨率为256×512,每一种颜色用8bit表示,则该彩色图像的数据量为 2565128*3 bit。

视频帧:图像经过编码形成(如H264等,对图像数据进行压缩),视频帧由关键帧(i帧)和B/P帧组成。

帧率:单位FPS(每秒钟要多少帧画面),影响画面流畅度,与画面流畅度成正比。

码率:编码器每秒编出的数据大小,单位是kbps,比如800kbps代表编码器每秒产生800kb(或100KB)的数据。

一、BufferedImage

位于java.awt.image包中,主要用于将一副图片加载到内存。(具体使用方法jdk的doc)

二、JavaCV操作rtsp流媒体 1.依赖库

      org.bytedeco
      javacv
      1.4.4
    

    
      org.bytedeco.javacpp-presets
      ffmpeg-platform
      4.1-1.4.4
    
2.代码
public class RtspTest {
  private FFmpegframeGrabber grabber;
  private String rtsp;
  private boolean isStart = false;
  
  @Test
  public void test01() throws Exception {
    rtsp = "rtsp://admin:123456@192.168.100.100";
    grabber = FFmpegframeGrabber.createDefault(rtsp);         
    grabber.setOption("rtsp_transport","tcp");                  //tcp方式连接
    grabber.setframeRate(10);                                   //设置帧率
    grabber.setImageWidth(740);                                 //设置获取的视频宽度
    grabber.setImageHeight(480);                                //设置获取的视频高毒
    grabber.setVideoBitrate(2000000);                           //设置视频比特率
   
    Java2DframeConverter java2DframeConverter = new Java2DframeConverter();
    while(true){
      try{
        if(grabber != null && !isStart) {
          grabber.start();
          isStart = true;
          System.out.println("启动成功");
        }
        if(grabber != null){
          frame frame = grabber.grabImage();
          if(null == frame){
            continue;
          }
          BufferedImage bufferedImage = java2DframeConverter.getBufferedImage(frame);
          String fileName = UUID.randomUUID().toString();
          File file = new File("E:\jpg\"+fileName+"."+"jpg");
          ImageIO.write(bufferedImage,"jpg",file);
          bufferedImage.flush();
        }
      }catch(frameGrabber.Exception | RuntimeException e){
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
3.结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号