/*
获取视频音频需要的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);
}
}
}
获取视频、音频、图片详细信息
于 2022-11-18 13:28:06 首次发布