qBittorrent 的「metadata too large」(中繼資料過大) 錯誤會在用戶端無法解析 torrent 檔案時出現,因為其內嵌的中繼資料 (經過 bencode 編碼的 info 字典,加上任何包含的二進位資料,例如 JPEG 封面圖片) 在載入過程中超過了內部的大小限制。 這不是磁碟空間的問題,也不是網路的問題。這是 qBittorrent 在將 torrent 加入之前,必須讀入記憶體以計算 info hash 的資料區塊大小所引發的結構性抱怨。實際上,出問題的位元組通常位於 torrent 的 info 字典中,而且常常來自大型的內嵌圖片檔案 (封面圖、螢幕擷圖或掃描檔),這些圖片的 EXIF 區段因為內嵌了縮圖、感測器灰塵地圖或大量的專屬製造商註記而膨脹。在重新建立 torrent 之前,先移除或修剪這些區段通常足以清除錯誤,但前提是你必須先知道這些區段內部實際的內容。這份知識來自於在本機端讀取 EXIF 區段,而非憑空猜測。

了解究竟什麼內容讓中繼資料膨脹,是修復它的第一步。如果你是 torrent 的建立者,可以重新匯出內嵌的 JPEG,並將其 EXIF 區段移除或修剪。如果你從其他地方取得這個 torrent,至少可以在本機端檢查出問題的圖片,這樣在重新託管、重新分享或重新編碼之前,你就能確實掌握手上的內容。這正是 EXIF Viewer 的用途,這是一個瀏覽器工具,可在不上傳檔案的情況下讀取本機 JPEG 的 EXIF 區段。

metadata too large qbittorrent
qBittorrent 中繼資料過大:檢查 JPEG EXIF

qBittorrent「中繼資料過大」錯誤的含義

qBittorrent 和其他基於 libtorrent 的用戶端一樣,會在決定是否將 .torrent 檔案加入工作階段之前,先解析其 bencode 編碼的 info 字典。Info 字典是 torrent 內容的標準描述:檔案名稱、長度、區塊長度,以及一個可選的內嵌任意資料區塊 (例如海報圖片)。如果該字典的大小,或其中的任何單一欄位,跨越了解析器的限制,用戶端就會顯示「metadata too large」並拒絕加入該 torrent。確切的閾值不會顯示給使用者,而且與目的地磁碟的可用空間無關。

有幾種實際情況會觸發這個錯誤。Torrent 的建立者可能內嵌了一張數 MB 大小的封面圖。重新發布 torrent 的使用者可能未先移除 EXIF 區段,就將螢幕擷圖或掃描檔重新編碼為 JPEG。從 magnet 連結轉換為 torrent 的過程中,可能未將縮圖以獨立檔案的方式引用,而是直接將其原始位元組附加到 info 字典中。在以上所有情況中,內嵌 JPEG 的 EXIF 區段都是可能的元凶,因為 EXIF 區段在內含預覽縮圖、重複的製造商註解子 IFD 或大型 GPS 紀錄時,其大小可以輕易膨脹到超過 1 MB。

JPEG EXIF 資料如何讓檔案中繼資料膨脹

每張包含 EXIF 區段的 JPEG,在檔案開頭附近、緊接在標準影像資料標記之後,都帶有一個 APP1 標記。APP1 區段內部是一個 TIFF 標頭,後面接著一個或多個影像檔案目錄 (IFD),並可選擇性地包含 EXIF 專用標籤和 GPS 座標的子 IFD。一台典型的消費型相機,每張照片會加入大約 5 到 30 KiB 的 EXIF 資料。一台典型的無反光鏡或中片幅相機,特別是設定為內嵌完整解析度預覽縮圖時,可能會額外加入數百 KiB。帶有作用中製造商註記的智慧型手機,則可能讓該區段超過 1 MiB。

當該 JPEG 接著作為封面圖或「預覽」檔案被內嵌到 torrent 的 info 字典中時,EXIF 區段會一起跟著進去。Torrent 用戶端在判斷中繼資料是否過大時,看到的是包含 EXIF 區段在內的完整檔案大小。解析器並不會將像素資料和中繼資料區塊分開計算,而是將它們一起計入內嵌二進位資料的長度中。

如果你手邊有出問題的 JPEG,並且想確切知道其位元組數量中有多少屬於 EXIF、多少屬於像素資料,最簡單的方法就是在本機端讀取 EXIF 區段。這正是 這份本機端 EXIF 檢查指南 所逐步介紹的用途。

使用 EXIF Viewer 在本機端讀取 JPEG EXIF

EXIF Viewer 是一個瀏覽器型的中繼資料讀取器,可在不上傳檔案的情況下,開啟本機的 JPG 或 JPEG、定位第一個有效的 Exif APP1 區段、驗證其 TIFF 標頭,並在有界限的 IFD0、Exif 和 GPS 目錄之間進行遍歷。一切都在目前的分頁中進行;位元組不會被上傳,也不會被傳送出去。

此工具會讀取一份明列的常用標籤允許清單:相機廠牌與型號、方向、軟體、修改與原始拍攝時間、曝光時間、光圈值、ISO、焦距、像素尺寸、鏡頭型號,以及存在的 GPS 經緯度。解析過程遵循 CIPA Exif 2.3 規範 (DC-008-2012),並與官方的 ExifTool 標籤表進行獨立的交叉比對,因此檢視器所顯示的欄位,反映的是檔案中真實且具有型別的值,而非猜測。

如何在瀏覽器中讀取 JPEG EXIF

  1. 選擇一個最大 25 MiB 的本機 JPG 或 JPEG 檔案。開啟 EXIF Viewer 頁面,點擊檔案選擇器,然後選取你想要檢查的 JPEG。檔案是直接從你的裝置讀取,不會上傳到任何地方。
  2. 檢視已識別的 EXIF 資料列,特別是任何 GPS 座標。檢視器會以簡明的表格顯示已識別的欄位。請特別留意 GPS 的緯度、經度與方向參考,因為這些值會洩漏真實世界的地理位置。
  3. 如果你需要不支援的格式、製造商註記或鑑識證據,請使用完整的桌面型中繼資料工具。EXIF Viewer 刻意跳過專屬的製造商註記。若要進行鑑識工作、批次匯出,或處理非 JPEG 格式,請使用像 ExifTool 這類有持續維護的桌面工具,並保留原始檔案。

EXIF Viewer 讀取與跳過的內容

此檢視器在功能上是有意受限的。它並不打算成為一套完整的鑑識工具套件。了解它在哪裡停下,能幫助你判斷它是否足以應付你的情況,或是你是否需要一套更強大的工具。

功能 EXIF Viewer 完整的桌面工具 (例如 ExifTool)
處理位置 目前的瀏覽器分頁 本機機器
支援的格式 JPG、JPEG (最大 25 MiB) JPEG 以及許多 RAW、影片與 sidecar 格式
常用 EXIF 標籤 (相機、拍攝、鏡頭、GPS) 從一份明列的允許清單中讀取 從完整的標籤表中讀取
專屬製造商註記 刻意忽略 依製造商進行解碼
非 EXIF 中繼資料 (XMP、IPTC) 超出範圍 讀取與寫入
鑑識與批次用途 非其設計目的 專為此設計

檢視器在解析過程中同樣會套用安全限制。格式錯誤的區段長度、條目數過多的目錄、規模過大的欄位計數,以及指向選定檔案外部的偏移量,都會被拒絕。讀取器會停在第一個有效的 Exif APP1 區段,能同時處理 little-endian 與 big-endian 的 TIFF 位元組順序,並正確解碼 ASCII、SHORT、LONG、RATIONAL 以及帶正負號的值。它不會執行中繼資料 (這在不安全的解析器中是常見的攻擊面),並且絕不會變更你所選取的檔案。

GPS 座標與隱私考量

GPS 中繼資料可能洩漏照片拍攝時的精確位置。EXIF Viewer 會使用儲存的 N/S 與 E/W 參考,將儲存的度分秒值轉換為帶正負號的十進位度數,並對結果的敏感性提出警告。在你分享照片、將其內嵌為 torrent 封面圖,或匯出中繼資料報告之前,請先檢查 GPS 資料列。如果座標指向私人位置,請先使用專為此目的設計的工具將其移除,而不是重新編碼照片並期待中繼資料會自動消失。

中繼資料也不能作為著作權、所有權、拍攝時間或地點的證明。這些欄位可能遺失、過時、被編輯、被複製,或在你上傳照片時,被通訊軟體與社群平台重新編碼的過程中移除。請將 EXIF 輸出視為描述性資料,而非證據。

何時該使用桌面型中繼資料工具

當你需要超出允許清單之外的任何功能時,請改用像 ExifTool 這類有持續維護的桌面工具:例如製造商註記、XMP 或 IPTC 區塊、RAW 格式、影片中繼資料、批次匯出,或鑑識工作中的證據鏈。ExifTool 是事實上的參考實作,其標籤表正是 EXIF Viewer 用來交叉比對的來源。對於任何你打算作為證據使用的內容,請保留原始檔案、在一份副本上作業,並記錄每一個步驟。

如果你的目標只是單純想了解為何內嵌在 torrent 中的 JPEG 體積如此龐大,EXIF Viewer 是最快能取得答案的方式:開啟檔案、讀取 EXIF 資料列,並留意中繼資料區段的大小與內容。從這裡,你就能決定在重新託管 torrent 之前,是要移除、修剪還是替換這張內嵌的圖片。

延伸閱讀:EXIF Editor Online:在瀏覽器中寫入 JPEG 著作權欄位。