Jak extrahovat metadata mkv v Javě pomocí GroupDocs.Metadata
In this comprehensive guide you’ll learn jak extrahovat metadata mkv v Javě using the GroupDocs.Metadata library. Whether you are building a media catalog, validating encoding parameters, or automating thumbnail generation, reading Matroska (MKV) metadata programmatically saves countless manual hours. We’ll walk through the why, the prerequisites, the exact setup steps, and detailed code snippets that expose EBML headers, segment information, tags, and track data.
Rychlé odpovědi
- Co znamená “read mkv metadata java”? Jedná se o programatické získávání metadat kontejneru Matroska (tituly, kodeky, délky atd.) z MKV souborů pomocí Javy.
- Kterou knihovnu mám použít? GroupDocs.Metadata pro Javu nabízí plnohodnotné, výkonné API pro Matrosku a více než 50 dalších formátů.
- Potřebuji licenci? Bezplatná zkušební verze funguje pro hodnocení; komerční licence odstraňuje všechna omezení zkušební verze.
- Mohu číst i jiné formáty? Ano – stejné API čte MP4, AVI, MOV, MP3 a mnoho dalších kontejnerů.
- Je při běhu vyžadován přístup k internetu? Ne – veškeré získávání probíhá lokálně po umístění JAR souboru na classpath.
Co jsou metadata Matroska (MKV)?
Matroska (MKV) metadata jsou soubor strukturálních a popisných informací uložených uvnitř kontejneru Matroska, včetně EBML hlavičky (verze souboru a typ dokumentu), detailů segmentu (délka, aplikace pro multiplexování), uživatelem definovaných tagů (tituly, popisy) a specifikací stop (ID kodeků audio/video, jazyk, bitrate). Přístup k těmto datům vám umožní vytvářet prohledávatelné katalogy, ověřovat integritu souborů nebo řídit automatizované workflow, jako je generování náhledových obrázků.
Proč číst metadata mkv v Javě?
Čtení MKV metadat z Javy vám umožní automatizovat katalogizaci tisíců video souborů, ověřit požadavky na kodeky a jazyky před publikací a naplnit prohledávatelné databáze tituly, délkami a jazyky stop. Poskytuje také jediný kódový základ pro získávání video metadat z různých kontejnerů, čímž snižuje údržbové náklady a zajišťuje konzistentní kontrolu kvality napříč vaším mediálním pipeline.
Proč používat GroupDocs.Metadata pro Javu?
GroupDocs.Metadata pro Javu je vyspělá knihovna, která podporuje 50+ vstupních a výstupních formátů, včetně Matrosky, MP4, AVI a MOV. Streamuje struktury kontejneru, takže spotřeba paměti zůstává nízká i u souborů o velikosti několika gigabajtů. API abstrahuje nízkoúrovňové parsování EBML, takže se můžete soustředit na obchodní logiku. Integrace je tak jednoduchá jako přidání jedné Maven závislosti a knihovna je průběžně aktualizována pro podporu nejnovějších specifikací kodeků.
Předpoklady
- GroupDocs.Metadata pro Javu verze 24.12 nebo novější.
- Java Development Kit (JDK) 8 nebo novější nainstalovaný.
- Maven (nebo ruční správa JAR) pro správu závislostí.
- Soubor MKV pro testování, umístěný ve složce, na kterou můžete odkazovat z kódu (např.
YOUR_DOCUMENT_DIRECTORY).
Nastavení GroupDocs.Metadata pro Javu
GroupDocs.Metadata pro Javu je knihovna, která umožňuje čtení metadat z více než 50 formátů souborů, včetně Matrosky (MKV). Přidejte ji do svého projektu pomocí Maven nebo stáhněte JAR ručně.
Maven:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/metadata/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>24.12</version>
</dependency>
</dependencies>
Přímé stažení:
If you prefer not using Maven, download the latest version from GroupDocs.Metadata for Java releases.
Získání licence
Start with a free trial to explore features. For production use, purchase a license or obtain a temporary one from GroupDocs to remove trial limitations.
Základní inicializace a nastavení
Below is the minimal code needed to open an MKV file with GroupDocs.Metadata.
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.MatroskaRootPackage;
public class MetadataExtraction {
public static void main(String[] args) {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.mkv")) {
MatroskaRootPackage root = metadata.getRootPackageGeneric();
// Access and manipulate metadata here
}
}
}
Jak číst metadata mkv v Javě pomocí GroupDocs.Metadata
Metadata is the main class that represents an MKV file and provides access to its metadata.
Load your MKV file with new Metadata("path/to/file.mkv") and call the appropriate getters – getRootPackageGeneric(), getSegments(), getTags(), and getTracks() – to retrieve each metadata section. This single call chain gives you full visibility into the EBML header, segment information, user tags, and individual track details without writing any low‑level parsing logic.
Čtení EBML hlavičky Matroska
The EBML header stores core file information such as version, document type, and file size.getRootPackageGeneric() returns the EBML header package of the opened file.
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.MatroskaRootPackage;
public class ReadMatroskaEBMLHeader {
public static void run() {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.mkv")) {
MatroskaRootPackage root = metadata.getRootPackageGeneric();
String docType = root.getMatroskaPackage().getEbmlHeader().getDocType();
String docTypeReadVersion = root.getMatroskaPackage().getEbmlHeader().getDocTypeReadVersion();
String docTypeVersion = root.getMatroskaPackage().getEbmlHeader().getDocTypeVersion();
String readVersion = root.getMatroskaPackage().getEbmlHeader().getReadVersion();
String version = root.getMatroskaPackage().getEbmlHeader().getVersion();
// Use the extracted header details as needed
}
}
}
Klíčové body
getRootPackageGeneric()vrací vstupní bod balíčku Matroska.- EBML vlastnosti (
docType,version, atd.) vám umožní ověřit kompatibilitu souboru před podrobnějším zpracováním.
Čtení informací o segmentu Matroska
Segments describe the overall media timeline, creation tools, and optional title information.getSegments() retrieves a collection of segment objects containing duration and creation details.
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.MatroskaRootPackage;
public class ReadMatroskaSegmentInformation {
public static void run() {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.mkv")) {
MatroskaRootPackage root = metadata.getRootPackageGeneric();
for (var segment : root.getMatroskaPackage().getSegments()) {
String dateUtc = segment.getDateUtc();
long duration = segment.getDuration();
String muxingApp = segment.getMuxingApp();
String segmentFilename = segment.getSegmentFilename();
String segmentUid = segment.getSegmentUid();
long timecodeScale = segment.getTimecodeScale();
String title = segment.getTitle();
String writingApp = segment.getWritingApp();
// Process the extracted segment information as needed
}
}
}
}
Klíčové body
getSegments()vrací kolekci; každý segment může mít vlastní název, délku a podrobnosti o aplikaci vytvoření.- Tato data jsou užitečná pro tvorbu playlistů nebo ověřování parametrů kódování napříč dávkou souborů.
Čtení metadat tagů Matroska
Tags store human‑readable information like titles, artists, or custom notes.getTags() returns the list of tag entries associated with the file.
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.MatroskaRootPackage;
import com.groupdocs.metadata.core.MetadataProperty;
public class ReadMatroskaTagMetadata {
public static void run() {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.mkv")) {
MatroskaRootPackage root = metadata.getRootPackageGeneric();
for (var tag : root.getMatroskaPackage().getTags()) {
String targetType = tag.getTargetType();
String targetTypeValue = tag.getTargetTypeValue();
String tagTrackUid = tag.getTagTrackUid();
for (MetadataProperty simpleTag : tag.getSimpleTags()) {
String name = simpleTag.getName();
String value = simpleTag.getValue();
// Utilize the extracted tag information as needed
}
}
}
}
}
Klíčové body
- Tagy jsou organizovány podle
targetType(např.movie,track). simpleTagpoložky obsahují páry klíč/hodnota, např.TITLE=My Video.
Čtení metadat stop Matroska
Tracks represent individual audio, video, or subtitle streams inside the container.getTracks() provides access to each track’s technical specifications.
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.MatroskaRootPackage;
public class ReadMatroskaTrackMetadata {
public static void run() {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.mkv")) {
MatroskaRootPackage root = metadata.getRootPackageGeneric();
for (var track : root.getMatroskaPackage().getTracks()) {
String trackType = track.getType();
String codecId = track.getCodecId();
String language = track.getLanguage();
long duration = track.getDuration();
// Process the extracted track information as needed
}
}
}
}
Klíčové body
track.getType()určuje, zda je stream video, audio nebo titulky.codecIdidentifikuje kodek (např.V_MPEG4/ISO/AVC).- Tyto informace jsou nezbytné pro transkódovací pipeline, kontrolu kvality a rozhodování o dynamickém streamování.
Běžné případy použití pro čtení metadat mkv v Javě
- Mediální katalogy – Naplňte databázové tabulky tituly, délkami a jazykovými kódy pro rychlé vyhledávání.
- Automatizovaná kontrola kvality – Ověřte, že každý soubor obsahuje požadované tagy a odpovídá standardům kodeků před vydáním.
- Dynamické streamování – Vyberte vhodnou audio nebo titulkovou stopu na základě uživatelských preferencí během běhu.
- Migrace obsahu – Extrahujte metadata jednou, poté je vložte do nového úložného systému nebo CDN.
Běžné problémy a řešení
| Příznak | Pravděpodobná příčina | Řešení |
|---|---|---|
NullPointerException při přístupu k getEbmlHeader() | Cesta k souboru je nesprávná nebo soubor nebyl nalezen | Ověřte cestu v new Metadata("...") a ujistěte se, že soubor existuje na disku. |
| Nejsou vráceny žádné tagy | Soubor MKV neobsahuje elementy tagů | Použijte mediální soubor, který obsahuje metadata tagy (např. přidané pomocí MKVToolNix). |
| Pomalejší zpracování velkých souborů | Nedostatečná paměť heap | Zvyšte heap JVM (-Xmx2g nebo vyšší) nebo soubor zpracovávejte po částech, pokud je to možné. |
Často kladené otázky
Q: Mohu extrahovat metadata z jiných video formátů pomocí stejné knihovny?
A: Ano, GroupDocs.Metadata podporuje MP4, AVI, MOV a mnoho dalších. Vzor API je stejný – stačí použít odpovídající třídu kořenového balíčku pro daný formát.
Q: Je licence vyžadována pro produkční použití?
A: Komerční licence odstraňuje omezení zkušební verze a odemyká plnou funkčnost. Knihovna funguje v režimu zkušební verze pro evaluační účely.
Q: Probíhá extrakce offline?
A: Rozhodně. Jakmile je JAR na classpath, všechny čtení metadat jsou prováděny lokálně bez jakýchkoli síťových volání.
Q: Jak si knihovna vede u velmi velkých MKV souborů (několik GB)?
A: Knihovna streamuje strukturu kontejneru, což udržuje spotřebu paměti na rozumné úrovni. Ujistěte se, že JVM má dostatek heap paměti pro velké kolekce tagů, a zvažte zvýšení -Xmx, pokud zpracováváte extrémně velké soubory.
Q: Mohu metadata upravit a zapsat zpět do souboru?
A: GroupDocs.Metadata se primárně zaměřuje na čtení. Podpora zápisu je omezená; podívejte se do nejnovější dokumentace API pro případné možnosti zápisu.
Poslední aktualizace: 2026-09-02
Testováno s: GroupDocs.Metadata 24.12 for Java
Autor: GroupDocs