java 获取MP4时长 | Java工具类

Posted 剑客阿良_ALiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 获取MP4时长 | Java工具类相关的知识,希望对你有一定的参考价值。

目录

简述

Maven依赖

获取结果单位毫秒

获取结果单位秒

总结


简述

获取mp4视频的时长,没啥好说明的。

Maven依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mp4parser</groupId>
            <artifactId>isoparser</artifactId>
            <version>1.9.41</version>
        </dependency>

获取结果单位毫秒

上代码

import lombok.extern.slf4j.Slf4j;
import org.mp4parser.IsoFile;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/** @Author huyi @Date 2021/10/20 11:09 @Description: MP4工具类 */
@Slf4j
public class Mp4Utils {
  public static long readDuration(Path mp4Path) {
    if (Files.notExists(mp4Path) || !Files.isReadable(mp4Path)) {
      log.warn("文件路径不存在或不可读 {}", mp4Path);
      return 0;
    }
    try {
      IsoFile isoFile = new IsoFile(mp4Path.toFile());
      long duration = isoFile.getMovieBox().getMovieHeaderBox().getDuration();
//      long timescale = isoFile.getMovieBox().getMovieHeaderBox().getTimescale();
      return duration;
    } catch (IOException e) {
      log.error("读取MP4文件时长出错", e);
      return 0;
    }
  }

  public static void main(String[] args) {
    System.out.println(readDuration(Paths.get("C:\\\\Users\\\\huyi\\\\Desktop\\\\测试.mp4")));
  }
}

执行结果:

 

验证结果:

获取结果单位秒

上代码

import lombok.extern.slf4j.Slf4j;
import org.mp4parser.IsoFile;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/** @Author huyi @Date 2021/10/20 11:09 @Description: MP4工具类 */
@Slf4j
public class Mp4Utils {
  public static long readDuration(Path mp4Path) {
    if (Files.notExists(mp4Path) || !Files.isReadable(mp4Path)) {
      log.warn("文件路径不存在或不可读 {}", mp4Path);
      return 0;
    }
    try {
      IsoFile isoFile = new IsoFile(mp4Path.toFile());
      long duration = isoFile.getMovieBox().getMovieHeaderBox().getDuration();
      long timescale = isoFile.getMovieBox().getMovieHeaderBox().getTimescale();
      return duration / timescale;
    } catch (IOException e) {
      log.error("读取MP4文件时长出错", e);
      return 0;
    }
  }

  public static void main(String[] args) {
    System.out.println(readDuration(Paths.get("C:\\\\Users\\\\huyi\\\\Desktop\\\\测试.mp4")));
  }
}

执行结果:

总结

没啥好总结的,今天南京好冷。

如果本文对你有帮助,请点个赞支持一下吧。

 

 

 

以上是关于java 获取MP4时长 | Java工具类的主要内容,如果未能解决你的问题,请参考以下文章

java 获取音频视频文件时长代码示例

java 获取音频视频文件时长代码示例

Java 实现音频添加自定义时长静音(附代码) | Java工具类

Java 实现音频添加自定义时长静音(附代码) | Java工具类

ffmpeg获取文件的总时长(mp3/mp4/flv等)

15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片