Java如何准确获取MP4视频文件的具体播放时长?
- 后端开发
- 2025-10-24
- 5
在Java中获取MP4视频文件的时长,可以通过多种方式实现,以下是一些常用的方法:
使用Java Media Framework (JMF)
Java Media Framework是Java提供的一个用于处理多媒体数据的标准API,以下是使用JMF获取MP4视频时长的步骤:
-
添加依赖:确保你的项目中已经添加了JMF库。
-
创建Player实例:使用javax.media.Manager类创建一个Player实例。
-
获取时长:通过调用getDuration()方法获取视频时长。
以下是具体的代码示例:

import javax.media.Manager; import javax.media.Player; import javax.media.NoPlayerException; import java.net.URL; public class GetMP4Duration { public static void main(String[] args) { try { // 获取视频文件的URL URL url = new URL("http://example.com/path/to/your/video.mp4"); // 创建Player实例 Player player = Manager.createPlayer(url); // 打开Player player.start(); // 获取时长 long duration = player.getDuration().getSeconds() * 1000; System.out.println("视频时长:" + duration + "毫秒"); // 关闭Player player.stop(); player.deallocate(); } catch (Exception e) { e.printStackTrace(); } } }
使用Apache Commons IO
Apache Commons IO是一个Java库,提供了许多用于文件操作的实用方法,以下是使用Apache Commons IO获取MP4视频时长的步骤:
-
添加依赖:确保你的项目中已经添加了Apache Commons IO库。
-
读取视频信息:使用java.io.File和java.io.FileInputStream读取视频文件。

-
解析时长:解析视频文件信息,获取时长。
-
添加依赖:确保你的系统中已经安装了FFmpeg。
-
调用FFmpeg命令:使用ProcessBuilder类调用FFmpeg命令行工具。
-
解析输出:解析FFmpeg的输出结果,获取时长。

- 确保你的系统中已经安装了FFmpeg。
- 使用ProcessBuilder类调用FFmpeg命令行工具,命令格式为:ffprobe v error show_entries format=duration of default=noprint_wrappers=1:nokey=1 <video_path>。
- 解析FFmpeg的输出结果,获取时长。
以下是具体的代码示例:
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.List; public class GetMP4Duration { public static void main(String[] args) { try { // 获取视频文件路径 String videoPath = "path/to/your/video.mp4"; // 读取文件内容 List<String> lines = FileUtils.readLines(new File(videoPath)); // 解析时长 String durationLine = lines.stream() .filter(line > line.contains("duration")) .findFirst() .orElse(null); if (durationLine != null) { String[] parts = durationLine.split("="); String durationStr = parts[1].trim(); String[] durationParts = durationStr.split(","); long duration = Long.parseLong(durationParts[0].trim()) * 1000; System.out.println("视频时长:" + duration + "毫秒"); } } catch (IOException e) { e.printStackTrace(); } } }
使用FFmpeg
FFmpeg是一个强大的视频处理工具,可以通过Java调用FFmpeg命令行工具来获取视频时长,以下是使用FFmpeg获取MP4视频时长的步骤:
以下是具体的代码示例:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class GetMP4Duration { public static void main(String[] args) { try { // 获取视频文件路径 String videoPath = "path/to/your/video.mp4"; // 构建FFmpeg命令 String command = "ffprobe v error show_entries format=duration of default=noprint_wrappers=1:nokey=1 " + videoPath; // 调用FFmpeg命令 Process process = Runtime.getRuntime().exec(command); // 读取输出结果 BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 关闭流 reader.close(); process.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }
FAQs
Q1:Java中获取视频时长需要哪些库?
A1:获取视频时长可以使用Java Media Framework (JMF)、Apache Commons IO或FFmpeg,JMF和Apache Commons IO是Java库,而FFmpeg是独立的命令行工具。
Q2:如何使用FFmpeg获取视频时长?
A2:使用FFmpeg获取视频时长的步骤如下: