使用 GroupDocs.Metadata 在 Java 中提取 AVI 元資料

快速答案

  • 可以使用哪個函式庫? GroupDocs.Metadata for Java
  • 主要解決什麼任務? 從 AVI 容器中提取影片元資料
  • 需要授權嗎? 提供免費試用;正式環境需要授權
  • 需要哪個 Java 版本? JDK 8 或更高
  • 可以一次處理多個檔案嗎? 可以 – 使用多執行緒或批次處理

什麼是影片元資料提取?

影片元資料提取是直接從影片檔案的標頭讀取嵌入資訊的過程,例如作者、建立日期、編碼軟體以及自訂標籤。這些資料讓您能以程式方式對影片資產進行目錄編制、搜尋與分析,而無需解碼整個媒體串流。

為什麼使用 GroupDocs.Metadata 提取 AVI 元資料?

GroupDocs.Metadata 提供純 Java API,能一次呼叫即讀取 AVI 標頭,免除外部工具需求。它支援 30+ 影片與音訊容器,每個檔案消耗低於 5 MB 記憶體,且在一般伺服器上可每分鐘處理 數百個檔案。函式庫亦提供型別安全的 getter,讓程式碼更易讀且可靠。

先決條件

  • GroupDocs.Metadata for Java(版本 24.12 或更新)
  • JDK 8 或以上,及 IntelliJ IDEA 或 Eclipse 等 IDE
  • 具備 Maven 與 Java 程式開發的基本知識

設定 GroupDocs.Metadata for Java

Maven 設定

將 GroupDocs 倉庫與相依性加入您的 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>

直接下載

您也可以直接從官方發行頁面取得 JAR: GroupDocs.Metadata for Java releases.

取得授權

  • 免費試用 – 取得臨時金鑰以進行測試。
  • 完整授權 – 當您準備好投入正式使用時購買。

初始化與設定

Metadata 是 GroupDocs.Metadata 的主要入口點,負責載入文件並提供其元資料套件的存取。以下是開啟 AVI 檔案的最小程式碼範例:

import com.groupdocs.metadata.Metadata;

public class MetadataSetup {
    public static void main(String[] args) {
        // Initialize metadata object for your AVI file path
        try (Metadata metadata = new Metadata("your_file.avi")) {
            System.out.println("Initialization successful!");
        }
    }
}

如何在 Java 中提取 AVI 元資料?

使用 Metadata 物件載入 AVI 檔案,取得 AviRootPackage,檢查是否存在 INFO 區塊,然後讀取所需欄位——只需幾行簡潔程式碼。若標籤缺失,會回傳 null,讓您能優雅地處理缺少的資料。

逐步實作

1. 匯入必要的套件

AviRootPackage 代表 AVI 容器的頂層結構,公開其 RIFF INFO 區塊與其他子套件。

import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.AviRootPackage;

2. 建立元資料提取類別

以下類別示範完整的提取工作流程,包含 null 檢查與使用 try‑with‑resources 進行資源清理。

public class ExtractAviInfoMetadata {
    public static void main(String[] args) {
        // Replace with the actual path to your AVI file
        String aviFilePath = "YOUR_DOCUMENT_DIRECTORY/your_file.avi";

        try (Metadata metadata = new Metadata(aviFilePath)) {
            // Obtain the root package of the AVI file
            AviRootPackage root = metadata.getRootPackageGeneric();

            // Check if RiffInfoPackage is available
            if (root.getRiffInfoPackage() != null) {
                // Extract and print various pieces of metadata information
                String artist = root.getRiffInfoPackage().getArtist();
                String comment = root.getRiffInfoPackage().getComment();
                String copyright = root.getRiffInfoPackage().getCopyright();
                String creationDate = root.getRiffInfoPackage().getCreationDate();
                String software = root.getRiffInfoPackage().getSoftware();
                String engineer = root.getRiffInfoPackage().getEngineer();
                String genre = root.getRiffInfoPackage().getGenre();

                // Output the extracted metadata
                System.out.println("Artist: " + artist);
                System.out.println("Comment: " + comment);
                System.out.println("Copyright: " + copyright);
                System.out.println("Creation Date: " + creationDate);
                System.out.println("Software: " + software);
                System.out.println("Engineer: " + engineer);
                System.out.println("Genre: " + genre);

                // These variables now contain the extracted metadata fields.
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

程式碼說明

  • Metadata 初始化 – Metadata 物件載入 AVI 檔案並自動解析其結構。
  • 根套件存取 – getRootPackageGeneric() 回傳表示容器頂層階層的 AviRootPackage。
  • RIFF INFO 檢查 – 並非所有 AVI 檔案都有 INFO 區塊;null 檢查可防止 NullPointerException。
  • 欄位提取 – 每個 getter(如 getArtist()、getComment() 等)取得特定的影片元資料。

故障排除技巧

  • 確認 AVI 檔案未損壞;受損的標頭會導致解析錯誤。
  • 確保檔案路徑為絕對路徑或相對於專案工作目錄正確。
  • 如果某欄位回傳 null,表示來源檔案中不存在該標籤。

實務應用

  1. 媒體管理系統 – 自動填入作者、類型與建立日期等目錄資訊。
  2. 數位資產管理 (DAM) – 使用提取的標籤啟用多面向搜尋。
  3. 內容分析 – 追蹤哪個軟體產出最多影片,或分析隨時間變化的製作趨勢。
  4. 資料庫整合 – 將取得的值存入關聯式資料表,以供報告與稽核使用。

效能考量

  • 批次處理 – 將提取邏輯包在執行緒池中,以有效處理大量集合。
  • 記憶體調校 – 處理極大 AVI 檔案時,提升 JVM 堆積大小(-Xmx2g 或更高)。
  • 資源清理 – try‑with‑resources 區塊會自動釋放原生句柄;務必保留此寫法。

常見問題與解決方案

問題原因解決方案
NullPointerException 發生於 root.getRiffInfoPackage()AVI 檔案缺少 INFO 區塊加入 null 檢查(如前所示)或確認來源檔案包含元資料
找不到檔案路徑不正確或缺少檔案權限使用絕對路徑或將檔案放在專案的 resources 資料夾中
處理上千檔案時速度緩慢單執行緒執行實作 ExecutorService 以平行執行提取
欄位出現意外的 null 值AVI 標頭中不存在該標籤將 null 視為「不可用」並在 UI 或日誌中優雅處理

常見問答

Q: GroupDocs.Metadata 能讀取非標準 INFO 區塊的自訂標籤嗎?
A: 可以,函式庫提供一個通用字典,供存放在 RIFF INFO 區塊中的非標準鍵/值對使用。

Q: 每個部署環境需要單獨的授權嗎?
A: 單一授權即可覆蓋所有環境(開發、測試、正式),只要遵守授權條款。

Q: 能否修改 AVI 元資料,而不僅是讀取?
A: 當然可以。同一個 AviRootPackage 提供如 setArtist(String) 等 setter 方法,可更新欄位並儲存檔案。

Q: 此方式與使用 FFmpeg 提取元資料相比如何?
A: FFmpeg 是功能強大的指令列工具,但 GroupDocs.Metadata 提供純 Java API、整合更緊密,且無需外部程序的開銷。

Q: 如果我的 AVI 檔案存放在雲端儲存桶(例如 AWS S3)呢?
A: 先將檔案下載至暫存本機路徑,或使用接受 InputStream 的 Metadata 建構子進行串流載入。

最後更新: 2026-08-20
測試環境: GroupDocs.Metadata 24.12 for Java
作者: GroupDocs

相關教學