Cara mengekstrak metadata mkv di Java dengan GroupDocs.Metadata
Di panduan komprehensif ini Anda akan belajar cara mengekstrak metadata mkv di Java menggunakan pustaka GroupDocs.Metadata. Baik Anda sedang membangun katalog media, memvalidasi parameter enkoding, atau mengotomatisasi pembuatan thumbnail, membaca metadata Matroska (MKV) secara programatik menghemat banyak jam kerja manual. Kami akan membahas mengapa, prasyarat, langkah‑langkah penyiapan yang tepat, dan potongan kode terperinci yang menampilkan header EBML, informasi segmen, tag, dan data trek.
Jawaban Cepat
- What does “read mkv metadata java” mean? Ini adalah ekstraksi programatik metadata kontainer Matroska (judul, codec, durasi, dll.) dari file MKV menggunakan Java.
- Which library should I use? GroupDocs.Metadata untuk Java menawarkan API lengkap, berperforma tinggi untuk Matroska dan lebih dari 50 format lainnya.
- Do I need a license? Versi percobaan gratis dapat digunakan untuk evaluasi; lisensi komersial menghapus semua batas percobaan.
- Can I read other formats? Ya – API yang sama dapat membaca MP4, AVI, MOV, MP3, dan banyak kontainer lainnya.
- Is internet access required at runtime? Tidak – semua ekstraksi terjadi secara lokal setelah JAR berada di classpath Anda.
Apa itu metadata Matroska (MKV)?
Metadata Matroska (MKV) adalah kumpulan informasi struktural dan deskriptif yang disimpan di dalam kontainer Matroska, termasuk header EBML (versi file dan tipe dokumen), detail segmen (durasi, aplikasi multiplexing), tag yang ditentukan pengguna (judul, deskripsi), dan spesifikasi trek (ID codec audio/video, bahasa, bitrate). Mengakses data ini memungkinkan Anda membangun katalog yang dapat dicari, memverifikasi integritas file, atau menggerakkan alur kerja otomatis seperti pembuatan thumbnail.
Mengapa membaca metadata mkv di Java?
Membaca metadata MKV dari Java memungkinkan Anda mengotomatiskan katalogisasi ribuan file video, memvalidasi persyaratan codec dan bahasa sebelum dipublikasikan, dan mengisi basis data yang dapat dicari dengan judul, durasi, dan bahasa trek. Ini juga menyediakan basis kode tunggal untuk mengekstrak metadata video dari berbagai kontainer, mengurangi beban pemeliharaan dan memastikan pemeriksaan kualitas yang konsisten di seluruh alur media Anda.
Mengapa menggunakan GroupDocs.Metadata untuk Java?
GroupDocs.Metadata untuk Java adalah pustaka matang yang mendukung lebih dari 50 format input dan output, termasuk Matroska, MP4, AVI, dan MOV. Ia melakukan streaming struktur kontainer, sehingga konsumsi memori tetap rendah bahkan untuk file multi‑gigabyte. API mengabstraksi parsing EBML tingkat rendah, memungkinkan Anda fokus pada logika bisnis. Integrasi semudah menambahkan satu dependensi Maven, dan pustaka terus diperbarui untuk menangani spesifikasi codec terbaru.
Prasyarat
- GroupDocs.Metadata for Java versi 24.12 atau lebih baru.
- Java Development Kit (JDK) 8 atau lebih baru terpasang.
- Maven (atau penanganan JAR manual) untuk mengelola dependensi.
- File MKV untuk pengujian, ditempatkan dalam folder yang dapat Anda referensikan dari kode (misalnya
YOUR_DOCUMENT_DIRECTORY).
Menyiapkan GroupDocs.Metadata untuk Java
GroupDocs.Metadata untuk Java adalah pustaka yang memungkinkan membaca metadata dari lebih dari 50 format file, termasuk Matroska (MKV). Tambahkan ke proyek Anda dengan Maven atau unduh JAR secara manual.
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>
Direct download:
Jika Anda lebih memilih tidak menggunakan Maven, unduh versi terbaru dari GroupDocs.Metadata for Java releases.
Akuisisi Lisensi
Mulailah dengan percobaan gratis untuk menjelajahi fitur. Untuk penggunaan produksi, beli lisensi atau dapatkan lisensi sementara dari GroupDocs untuk menghapus batasan percobaan.
Inisialisasi dan Penyiapan Dasar
Berikut adalah kode minimal yang diperlukan untuk membuka file MKV dengan 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
}
}
}
Cara membaca metadata mkv di Java dengan GroupDocs.Metadata
Metadata adalah kelas utama yang mewakili file MKV dan menyediakan akses ke metadata-nya.
Muat file MKV Anda dengan new Metadata("path/to/file.mkv") dan panggil getter yang sesuai – getRootPackageGeneric(), getSegments(), getTags(), dan getTracks() – untuk mengambil setiap bagian metadata. Rantai pemanggilan tunggal ini memberi Anda visibilitas penuh ke header EBML, informasi segmen, tag pengguna, dan detail trek individual tanpa menulis logika parsing tingkat rendah.
Membaca header EBML Matroska
Header EBML menyimpan informasi inti file seperti versi, tipe dokumen, dan ukuran file.getRootPackageGeneric() mengembalikan paket header EBML dari file yang dibuka.
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
}
}
}
Key points
getRootPackageGeneric()mengembalikan titik masuk paket Matroska.- Properti EBML (
docType,version, dll.) memungkinkan Anda memverifikasi kompatibilitas file sebelum pemrosesan lebih lanjut.
Membaca informasi segmen Matroska
Segmen menggambarkan garis waktu media secara keseluruhan, alat pembuatan, dan informasi judul opsional.getSegments() mengambil koleksi objek segmen yang berisi durasi dan detail pembuatan.
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
}
}
}
}
Key points
getSegments()mengembalikan koleksi; setiap segmen dapat memiliki judul, durasi, dan detail aplikasi pembuatan masing‑masing.- Data ini berguna untuk membangun playlist atau memvalidasi parameter enkoding pada sekumpulan file.
Membaca metadata tag Matroska
Tag menyimpan informasi yang dapat dibaca manusia seperti judul, artis, atau catatan khusus.getTags() mengembalikan daftar entri tag yang terkait dengan 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
}
}
}
}
}
Key points
- Tag diatur berdasarkan
targetType(misalnya,movie,track). - Entri
simpleTagmenyimpan pasangan kunci/nilai sepertiTITLE=My Video.
Membaca metadata trek Matroska
Trek mewakili aliran audio, video, atau subtitle individual di dalam kontainer.getTracks() memberikan akses ke spesifikasi teknis setiap trek.
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
}
}
}
}
Key points
track.getType()memberi tahu Anda apakah aliran tersebut video, audio, atau subtitle.codecIdmengidentifikasi codec (misalnya,V_MPEG4/ISO/AVC).- Informasi ini penting untuk pipeline transcoding, pemeriksaan kualitas, dan keputusan streaming dinamis.
Contoh penggunaan umum untuk membaca metadata mkv di Java
- Media catalogs – Isi tabel basis data dengan judul, durasi, dan kode bahasa untuk pencarian cepat.
- Automated quality control – Verifikasi bahwa setiap file berisi tag yang diperlukan dan sesuai dengan standar codec sebelum dirilis.
- Dynamic streaming – Pilih trek audio atau subtitle yang sesuai berdasarkan preferensi pengguna pada waktu berjalan.
- Content migration – Ekstrak metadata sekali, lalu sisipkan ke sistem penyimpanan baru atau jaringan distribusi konten.
Masalah umum & pemecahan masalah
| Gejala | Penyebab kemungkinan | Solusi |
|---|---|---|
NullPointerException saat mengakses getEbmlHeader() | Jalur file tidak benar atau file tidak ditemukan | Verifikasi jalur di new Metadata("...") dan pastikan file ada di disk. |
| Tidak ada tag yang dikembalikan | File MKV tidak memiliki elemen tag | Gunakan file media yang berisi tag metadata (misalnya, ditambahkan melalui MKVToolNix). |
| Pemrosesan lambat pada file besar | Memori heap tidak cukup | Tingkatkan heap JVM (-Xmx2g atau lebih tinggi) atau proses file dalam potongan jika memungkinkan. |
Pertanyaan yang sering diajukan
Q: Can I extract metadata from other video formats with the same library?
A: Ya, GroupDocs.Metadata mendukung MP4, AVI, MOV, dan banyak lagi. Pola API identik – cukup gunakan kelas paket root yang sesuai untuk format tersebut.
Q: Is a license required for production use?
A: Lisensi komersial menghapus batas percobaan dan membuka semua fungsi. Pustaka berfungsi dalam mode percobaan untuk tujuan evaluasi.
Q: Does the extraction happen offline?
A: Tentu saja. Setelah JAR berada di classpath Anda, semua pembacaan metadata dilakukan secara lokal tanpa panggilan jaringan apa pun.
Q: How does the library perform on very large MKV files (several GB)?
A: Pustaka melakukan streaming struktur kontainer, menjaga penggunaan memori tetap wajar. Pastikan JVM Anda memiliki heap yang cukup untuk koleksi tag besar, dan pertimbangkan meningkatkan -Xmx jika Anda memproses file yang sangat besar.
Q: Can I modify the metadata and write it back to the file?
A: GroupDocs.Metadata terutama fokus pada pembacaan. Dukungan penulisan terbatas; lihat dokumentasi API terbaru untuk kemampuan menulis kembali.
Terakhir Diperbarui: 2026-09-02
Diuji Dengan: GroupDocs.Metadata 24.12 for Java
Penulis: GroupDocs