A small Java library to make it easy to get media information from local files.
This library uses JNA to provide simple Java bindings to the native MediaInfo tool.
Add the following Maven dependency to your own project pom.xml:
<dependency>
<groupId>uk.co.caprica</groupId>
<artifactId>vlcj-info</artifactId>
<version>2.0.3</version>
</dependency>
15th August, 2021 - release 2.0.3, return all available data from the native library (set the "complete" flag)
11th August, 2021 - release 2.0.2, fixes an infinite recursion issue in Duration#hours()
4th May, 2021 - release 2.0.1, fixes an issue when using custom formatting options (or using MediaInfo after using MediaFile)
7th March, 2019 - add API to get individual piece of information from the media file Maven Central.
The vlcj-info project page is at github.
Usage is trivial:
MediaInfo mediaInfo = MediaInfo.mediaInfo("/home/movies/A-Cool-Movie.mp4");
Section video = mediaInfo.first("Video");
Integer width = video.integer("Width");
Integer height = video.integer("Height");
You can then query the returned media info instance for general information, audio, video and SPU tracks and so on.
The previous example extracts the media information en masse, you can use an alternate API to pick out the particular pieces of information you require (and optionally specify its formatting):
MediaInfoFile file = new MediaInfoFile("test.mp4");
if (file.open()) {
System.out.println(file.info("Video;%Duration%"));
System.out.println(file.info("Video;%Duration/String3%"));
System.out.println(file.info("General;%Duration%"));
file.close();
}
The values used when picking out information in this way are the exact same as used by the MediaInfo tool itself.
Generally the values are String
values that must be parsed. Since you can specify the formatting
it is up to you to parse those values as required.
The vlcj-info framework is provided under the GPL, version 3 or later.