GroupDocs.Metadata와 함께 Java로 MKV 메타데이터 추출
멀티미디어 파일은 어디에나 존재하며, 내부 세부 정보를 읽을 수 있는 능력은 미디어 관리, 카탈로그 작성 및 분석에 필수적입니다. 이 튜토리얼에서는 강력한 GroupDocs.Metadata 라이브러리를 사용하여 how to extract mkv metadata java를 배우게 됩니다. 라이브러리 설정, EBML 헤더, 세그먼트 정보, 태그 및 트랙 데이터를 MKV 파일에서 추출하는 과정을 단계별로 안내하고, 이 지식이 실제로 어떻게 활용되는지 보여드립니다.
빠른 답변
- “extract mkv metadata java”는 무엇을 의미하나요? Java를 사용해 MKV 파일의 메타데이터를 프로그래밍 방식으로 읽는 과정입니다.
- 어떤 라이브러리를 사용해야 하나요? GroupDocs.Metadata for Java는 Matroska 파일을 위한 포괄적인 API를 제공합니다.
- 라이선스가 필요합니까? 무료 체험판으로 평가할 수 있으며, 라이선스를 구매하면 사용 제한이 해제됩니다.
- 다른 포맷도 읽을 수 있나요? 네, 동일한 라이브러리로 MP4, AVI, MP3 등 다양한 포맷을 지원합니다.
- 런타임에 인터넷 연결이 필요합니까? 아니요, 라이브러리를 프로젝트에 추가하면 모든 추출 작업이 로컬에서 이루어집니다.
Matroska (MKV) 메타데이터란?
Matroska는 개방형이며 유연한 컨테이너 포맷입니다. 메타데이터에는 EBML 헤더(파일 버전, 문서 타입), 세그먼트 상세(재생 시간, 믹싱 애플리케이션), 태그(제목, 설명) 및 트랙 사양(오디오/비디오 코덱, 언어) 등이 포함됩니다. 이 데이터를 활용하면 미디어 카탈로그를 구축하거나 파일 무결성을 검증하거나 썸네일을 자동으로 생성할 수 있습니다.
왜 GroupDocs.Metadata for Java를 사용하나요?
- 전체 기능 API – EBML, 세그먼트, 태그, 트랙을 저수준 파싱 없이 처리합니다.
- 성능 최적화 – 대용량 파일에서도 효율적으로 동작합니다.
- 다중 포맷 지원 – 동일한 코드 베이스를 다른 오디오/비디오 컨테이너에도 재사용할 수 있습니다.
- 간편한 Maven 통합 – 단일 의존성 추가만으로 추출을 시작할 수 있습니다.
사전 준비 사항
- GroupDocs.Metadata for Java 버전 24.12 이상.
- Java Development Kit (JDK) 설치.
- Maven(또는 수동 JAR 관리).
- 실험용 MKV 파일 (
YOUR_DOCUMENT_DIRECTORY에 배치).
GroupDocs.Metadata for Java 설정
프로젝트에 Maven을 사용하거나 JAR을 직접 다운로드하여 라이브러리를 추가합니다.
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>
직접 다운로드:
Maven을 사용하지 않으려면 최신 버전을 GroupDocs.Metadata for Java releases에서 다운로드하십시오.
라이선스 획득
무료 체험판으로 기능을 살펴볼 수 있습니다. 실제 운영 환경에서는 라이선스를 구매하거나 GroupDocs에서 임시 라이선스를 받아 체험 제한을 해제하십시오.
기본 초기화 및 설정
아래 코드는 GroupDocs.Metadata를 사용해 MKV 파일을 여는 최소 예제입니다.
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
}
}
}
GroupDocs.Metadata로 extract mkv metadata java 수행하기
이제 읽을 수 있는 각 메타데이터 영역을 자세히 살펴보겠습니다.
Matroska EBML 헤더 읽기
EBML 헤더는 버전 및 문서 타입과 같은 핵심 파일 정보를 저장합니다.
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
}
}
}
핵심 포인트
getRootPackageGeneric()은 Matroska 패키지 진입점을 제공합니다.- EBML 속성(
docType,version등)은 파일 호환성을 확인하는 데 도움이 됩니다.
Matroska 세그먼트 정보 읽기
세그먼트는 전체 미디어 타임라인 및 생성 도구를 설명합니다.
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
}
}
}
}
핵심 포인트
getSegments()는 컬렉션을 반환하며, 각 세그먼트는 자체 제목, 재생 시간 및 생성 애플리케이션 세부 정보를 가질 수 있습니다.- 재생 목록을 만들거나 인코딩 파라미터를 검증할 때 유용합니다.
Matroska 태그 메타데이터 읽기
태그는 제목, 아티스트, 사용자 정의 메모와 같은 인간이 읽을 수 있는 정보를 저장합니다.
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
}
}
}
}
}
핵심 포인트
- 태그는
targetType(예:movie,track)에 따라 조직됩니다. simpleTag항목은TITLE=My Video와 같은 키/값 쌍을 보유합니다.
Matroska 트랙 메타데이터 읽기
트랙은 개별 오디오, 비디오 또는 자막 스트림을 나타냅니다.
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
}
}
}
}
핵심 포인트
track.getType()은 비디오, 오디오, 자막 중 어떤 유형인지 알려줍니다.codecId를 통해 코덱을 식별할 수 있습니다(예:V_MPEG4/ISO/AVC).- 이 데이터는 트랜스코딩 파이프라인이나 품질 검증에 필수적입니다.
일반적인 문제 및 해결 방법
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
NullPointerException 발생 시 getEbmlHeader() 접근 | 파일 경로가 잘못되었거나 파일을 찾을 수 없음 | new Metadata("...")에 지정된 경로를 확인하고 파일이 존재하는지 확인합니다. |
| 태그가 반환되지 않음 | MKV 파일에 태그 요소가 없음 | 메타데이터 태그가 포함된 미디어 파일을 사용하십시오(예: MKVToolNix로 추가). |
| 대용량 파일 처리 시 느림 | 힙 메모리 부족 | JVM 힙을 늘리세요(-Xmx2g 이상) 또는 가능하면 파일을 청크 단위로 처리합니다. |
자주 묻는 질문
Q: 동일한 라이브러리로 다른 비디오 포맷의 메타데이터도 추출할 수 있나요?
A: 네, GroupDocs.Metadata는 MP4, AVI, MOV 등 다양한 포맷을 지원합니다. API 사용 방식은 비슷하니 해당 루트 패키지 클래스를 사용하면 됩니다.
Q: 프로덕션 환경에서 라이선스가 필요합니까?
A: 라이선스를 적용하면 체험 제한이 해제되고 전체 기능을 사용할 수 있습니다. 평가 단계에서는 체험판으로도 동작합니다.
Q: 추출 작업이 오프라인에서 이루어지나요?
A: 전적으로 로컬에서 수행됩니다. JAR 파일을 클래스패스에 추가하면 네트워크 호출 없이 메타데이터를 읽을 수 있습니다.
Q: 몇 GB 규모의 매우 큰 MKV 파일에서는 어떻게 동작하나요?
A: 라이브러리는 컨테이너 구조를 스트리밍 방식으로 읽어 메모리 사용량을 최소화합니다. 다만 대용량 태그 컬렉션을 처리하려면 충분한 JVM 힙을 확보하세요.
Q: 메타데이터를 수정하고 파일에 다시 쓸 수 있나요?
A: GroupDocs.Metadata는 주로 읽기에 초점을 맞추고 있습니다. 쓰기 기능은 제한적이며, 최신 API 문서를 확인해 추가적인 쓰기 지원 여부를 확인하시기 바랍니다.
결론
이제 extract mkv metadata java를 수행하기 위한 완전하고 실무에 적용 가능한 가이드를 모두 익혔습니다. EBML 헤더, 세그먼트 정보, 태그 및 트랙 세부 정보를 활용하면 미디어 카탈로그 구축, 품질 검사 자동화, 비디오 스트리밍 서비스 강화 등 다양한 시나리오에 활용할 수 있습니다. 코드 스니펫을 직접 실행해 보고, 자신의 워크플로에 맞게 조정하며, 라이브러리의 광범위한 포맷 지원을 탐색해 보세요.
Last Updated: 2025-12-22
Tested With: GroupDocs.Metadata 24.12 for Java
Author: GroupDocs