GroupDocs.Metadata for Java で ASF メタデータを抽出
はじめに
今日のデジタル環境では、マルチメディアコンテンツを効率的に管理することが重要です。メディアファイルから ASF メタデータを抽出 する必要がある場合、手作業で行うと時間がかかりミスも起きやすくなります。本チュートリアルでは、 GroupDocs.Metadata for Java を使用して ASF のさまざまなプロパティを読み取り表示する方法を解説し、資産の整理・検索・処理を自信を持って行えるようにします。
学習内容
- Java プロジェクトに GroupDocs.Metadata を設定する方法
- 作成日、ファイル ID、フラグなど ASF メタデータを抽出 する方法
- ASF ファイルに埋め込まれたコーデック情報を読み取る方法
- 詳細なメタデータ記述子とベースストリームプロパティを表示する方法
それでは、前提条件から始めましょう。
クイックアンサー
- What does “extract ASF metadata” mean? プログラムから ASF ファイルに埋め込まれた情報(タイムスタンプ、コーデック、記述子など)を読み取ることを指します。
- Which library is required? GroupDocs.Metadata for Java(バージョン 24.12 以降)。
- Do I need a license? 開発時は無料トライアルまたは一時ライセンスで動作します。商用・本番環境では正式ライセンスが必要です。
- What Java version is supported? JDK 8 以上。
- Can I use Maven? はい – Maven が推奨される依存関係マネージャです。
前提条件
- Java Development Kit (JDK) 8 以上がインストールされていること。
- IDE(IntelliJ IDEA や Eclipse など)で快適にコーディングできる環境。
- Maven が IDE に設定されていること(任意ですが推奨)。
- Java と外部ライブラリの基本的な知識。
Java 用 GroupDocs.Metadata の設定
Maven のインストール
pom.xml にリポジトリと依存関係を追加します。
<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 から最新の JAR をダウンロードしてください。
ライセンスの概要
- 無料トライアル – GroupDocs のウェブサイトで評価用に利用可能。
- 一時ライセンス – 開発中に制限なくすべての機能を試せます。
- フルライセンス – 商用または本番環境での導入に必須。
基本的な初期化
以下は GroupDocs.Metadata で ASF ファイルを開くための最小コードです。
import com.groupdocs.metadata.Metadata;
class MetadataExample {
public static void main(String[] args) {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.asf")) {
// Your code for accessing metadata properties will go here.
}
}
}
ASF メタデータとは何ですか?
ASF(Advanced Systems Format)は、Microsoft が提供するストリーミング形式で、音声・動画・メタデータを単一コンテナに格納します。メタデータには作成タイムスタンプ、コーデック情報、ストリーム記述子などが含まれます。 ASF メタデータを抽出 することで、ファイルの出所やエンコードパラメータ、コンテンツの説明をプログラムから取得でき、メディアライブラリやトランスコーディングパイプライン、コンプライアンス監査に不可欠です。
GroupDocs.Metadata で ASF メタデータを抽出する理由
- ゼロコード解析 – 低レベルの ASF パーサーを自前で実装する必要がありません。
- リッチオブジェクトモデル – 直感的な Java クラスを通じてプロパティ、コーデック、記述子、ストリーム詳細にアクセスできます。
- クロスプラットフォーム – Java が動作するあらゆる OS で利用可能です。
- ライセンスの柔軟性 – トライアルから始め、必要に応じてフルライセンスへ拡張できます。
実装ガイド
以下のセクションでは、 ASF メタデータを抽出 する具体的なコード例を段階的に示します。
基本的な ASF メタデータプロパティの読み取り
Overview – 作成日、ファイル ID、フラグといった基本情報を取得します。
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.AsfRootPackage;
class ReadBasicProperties {
public static void main(String[] args) {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.asf")) {
AsfRootPackage root = metadata.getRootPackageGeneric();
com.groupdocs.metadata.core.AsfPackage asfPackage = root.getAsfPackage();
System.out.println("Creation date: " + asfPackage.getCreationDate());
System.out.println("File id: " + asfPackage.getFileID());
System.out.println("Flags: " + asfPackage.getFlags());
}
}
}
Why it matters: 作成日を把握することでバージョン管理が容易になり、ファイル ID はシステム間で資産を一意に識別できます。
ASFコーデック情報の表示
Overview – オーディオ・ビデオストリームで使用されているコーデックを列挙します。
import com.groupdocs.metadata.core.AsfCodec;
class ReadCodecInformation {
public static void main(String[] args) {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.asf")) {
AsfRootPackage root = metadata.getRootPackageGeneric();
com.groupdocs.metadata.core.AsfPackage asfPackage = root.getAsfPackage();
for (AsfCodec codecInfo : asfPackage.getCodecInformation()) {
System.out.println("Codec type: " + codecInfo.getCodecType());
System.out.println("Description: " + codecInfo.getDescription());
System.out.println("Codec information: " + codecInfo.getInformation());
System.out.println(codecInfo.getName());
}
}
}
}
Why it matters: コーデック情報は再生デバイスとの互換性確認や、トランスコードの必要性判断に重要です。
メタデータ記述子の表示
Overview – 言語、ストリーム番号、オリジナルタイトルなどの詳細記述子を取得します。
import com.groupdocs.metadata.core.AsfBaseDescriptor;
import com.groupdocs.metadata.core.AsfMetadataDescriptor;
class ReadMetadataDescriptors {
public static void main(String[] args) {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.asf")) {
AsfRootPackage root = metadata.getRootPackageGeneric();
com.groupdocs.metadata.core.AsfPackage asfPackage = root.getAsfPackage();
for (AsfBaseDescriptor descriptor : asfPackage.getMetadataDescriptors()) {
System.out.println("Name: " + descriptor.getName());
System.out.println("Value: " + descriptor.getValue());
System.out.println("Content type: " + descriptor.getAsfContentType());
if (descriptor instanceof AsfMetadataDescriptor) {
AsfMetadataDescriptor metadataDescriptor = (AsfMetadataDescriptor) descriptor;
System.out.println("Language: " + metadataDescriptor.getLanguage());
System.out.println("Stream number: " + metadataDescriptor.getStreamNumber());
System.out.println("Original name: " + metadataDescriptor.getOriginalName());
}
}
}
}
}
Why it matters: 記述子は字幕の言語や元ファイル名など、カタログ化に役立つ文脈情報を提供します。
基本ストリームプロパティの表示
Overview – 各ベースストリームのビットレート、タイミング、言語情報にアクセスします。
import com.groupdocs.metadata.core.AsfBaseStreamProperty;
class ReadBaseStreamProperties {
public static void main(String[] args) {
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/input.asf")) {
AsfRootPackage root = metadata.getRootPackageGeneric();
com.groupdocs.metadata.core.AsfPackage asfPackage = root.getAsfPackage();
for (AsfBaseStreamProperty property : asfPackage.getStreamProperties()) {
System.out.println("Alternate bitrate: " + property.getAlternateBitrate());
System.out.println("Average bitrate: " + property.getAverageBitrate());
System.out.println("Average time per frame: " + property.getAverageTimePerFrame());
System.out.println("Bitrate: " + property.getBitrate());
System.out.println("Stream end time: " + property.getEndTime());
System.out.println("Stream flags: " + property.getFlags());
System.out.println("Stream language: " + property.getLanguage());
System.out.println("Stream start time: " + property.getStartTime());
System.out.println("Stream number: " + property.getStreamNumber());
}
}
}
}
Why it matters: ストリームプロパティは品質(ビットレート)の評価や、再生・編集時の音声・映像同期に役立ちます。
よくある問題とトラブルシューティング
| 症状 | 考えられる原因 | 対策 |
|---|---|---|
NullPointerException が getAsfPackage() 呼び出し時に発生 | ファイルパスが間違っている、または有効な ASF コンテナではない | パスを確認し、ファイルが正しい ASF 形式であることを確認してください |
| コーデック情報が表示されない | ASF ファイルがライブラリバージョンで認識されない独自コーデックを使用している | GroupDocs.Metadata を最新バージョンに更新するか、カスタムコーデックパーサーを使用してください |
| 記述子リストが空 | ファイルにメタデータ記述子が含まれていない(エンコード時に除去された) | メタデータが埋め込まれたソースファイルを使用するか、メタデータ保持設定で再エンコードしてください |
よくある質問
Q: 同じライブラリを使って、他のビデオ形式からメタデータを抽出できますか? A: はい。GroupDocs.Metadata は MP4、MKV、AVI など、多くの形式をサポートしています。適切なパッケージクラスをインスタンス化するだけです。
Q: 抽出後に ASF メタデータを変更することはできますか? A: もちろんです。ライブラリはほとんどのプロパティに対して setter メソッドを提供しており、ファイルを編集して保存できます。
Q: 大きな ASF ファイルには 64 ビット JVM が必要ですか? A: 必ずしも必要ではありませんが、64 ビット JVM を使用するとヒープ領域が広くなり、非常に大きなメディアファイルを処理する際に役立ちます。
Q: ライセンスは試用版の使用にどのような影響を与えますか? A: 試用版ライセンスでは、すべての機能制限が解除されますが、特定の出力にウォーターマークが追加されます。本番環境では、フルライセンスをご購入ください。
Q: このコードは Android で実行できますか? A: GroupDocs.Metadata は Java SE 用にビルドされています。Android では、.NET バージョンまたは互換性のあるラッパーを使用する必要があります。
まとめ
このガイドに従って、 GroupDocs.Metadata for Java を使用した ASF メタデータの抽出 方法を習得できました。基本プロパティ、コーデック情報、詳細記述子、ストリーム属性を読み取ることで、メディア資産をフルに可視化できます。次のステップとして、バッチ処理パイプラインへの統合、検索可能なメタデータデータベースの構築、またはコードを拡張して ASF ファイルの編集・再保存を検討してください。
Last Updated: 2025-12-26
Tested With: GroupDocs.Metadata 24.12 for Java
Author: GroupDocs