获取视频、音频、图片详细信息


/*
获取视频音频需要的jar包,图片不需要 引入
 <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacv-platform</artifactId>
        <version>1.5.7</version>
    </dependency>
    */
@Slf4j
public class GetFileInfo {
    public static void main(String[] args) {
        getVideoInfoByFile(new File("D:\\Desktop\\xx.mp4"));
        getImagesInfo(new File("D:\\Desktop\\1667545666842xx.png"));
    }

    public static void getVideoInfoByFile(File file) {
         //像素比 = a : b
            //分辨率 = x*y
            //画面比 = m : n
            // 计算公式:
           //  a*x/b*y = m : n(画面比)
           //  m*y/n*x = a : b(像素比)
           //  m*b/n*a = x : y(分辨率)

            //16:9 1.7777777777777777777777777777778
            //4:3 1.3333333333333333333333333333333
        try (FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(file)) {
            grabber.start();
             System.out.println("url:" + url);
             System.out.println("Size:" + file.length());
            System.out.println("Duration:" +grabber.getLengthInTime() / 1000);
            System.out.println("Container:" +(FileUtil.getType(file).toUpperCase());
       
            //视频
            String videoCodecName = grabber.getVideoCodecName();
            if (StringUtils.isNotBlank(videoCodecName)) {
               System.out.println("VideoCodec:" +videoCodecName.toUpperCase());
                 System.out.println("VideoDuration:" +(long) (grabber.getLengthInVideoFrames() / grabber.getVideoFrameRate() * 1000));
                 
                 System.out.println("VideoBitrate:" +grabber.getVideoBitrate() / 1000 + " kbps");
                 int imageWidth = grabber.getImageWidth();
                int imageHeight = grabber.getImageHeight();
                 System.out.println("Resolution:" +imageWidth + "x" + imageHeight);
                 System.out.println("Width:" +imageWidth);
                  System.out.println("Height:" +imageHeight);
                  
                double width = imageWidth * grabber.getAspectRatio();
                double height = imageHeight * grabber.getAspectRatio();
                int divisor = NumberUtil.divisor((int) width, (int) height);
                
                  System.out.println("AspectRatio:" +(int) (width / divisor) + ":" + (int) (height / divisor));
                    System.out.println("Fps:" +grabber.getFrameRate());
             
            }

            //音频
            int audioChannels = grabber.getAudioChannels();
            System.out.println("audioChannels:" +audioChannels);

            System.out.println("ContainsAudioTracks:" +audioChannels > 0 ? 1 : 0);
            if (audioChannels > 0) {
            System.out.println("AudioCodec:" +grabber.getAudioCodecName().toUpperCase());
            System.out.println("AudioDuration:" +(long) (grabber.getLengthInAudioFrames() / grabber.getAudioFrameRate() * 1000));
            System.out.println("AudioBitrate:" +grabber.getAudioBitrate() / 1000 + " kbps");
                System.out.println("AudioSamplerat:" +NumberUtil.div(grabber.getSampleRate(), 1000, 3) + " kHz");
          System.out.println("Channel:" +audioChannels);
                mediaInfo.setChannel(audioChannels);
            }

        } catch (Exception e) {
            System.out.println("msg:" +e);
        }
        
    }
        
 

    public static void getImagesInfo(File file) {
        try {
            BufferedImage sourceImg = ImageIO.read(file);
            ColorModel color = sourceImg.getColorModel();
            System.out.println("位深"+color.getPixelSize());
            System.out.println("height"+sourceImg.getHeight());
            System.out.println("width"+sourceImg.getWidth());


        } catch (IOException e) {
            System.out.println("获取图片信息异常" + e);
        }
    }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值