媒體匯入
通過帶快取的轉碼代理,標註瀏覽器無法顯示的檔案,包括多頁 16 位 TIFF、HEIC、相機 RAW、ProRes 與 MKV。
瀏覽器無法顯示的檔案會得到一塊空白畫布,並且沒有任何報錯,於是標註者會認定工具壞了。 Potato 會在首次請求時轉碼這些檔案並快取結果;當它確實無能為力時,會明確說明,並給出應當改為執行的命令。
請求轉碼後的檔案
引用檔案時使用 /media/proxy/ 而非 /media/:
json
{"id": "scan_001", "image_url": "/media/proxy/scan_001.tif"}瀏覽器本就能顯示的檔案(.jpg、.png、.webp、.mp4、.webm)會直接透傳、不再重新編碼,因此混合格式的語料無需特殊處理。把所有內容都指向代理即可。
結果快取在 <output_annotation_dir>/.media_cache/ 下。快取鍵包含原始檔的大小與修改時間,因此編輯原始檔會產生新條目,而不會命中過期快取。
支援的內容
| 源格式 | 轉換為 | 說明 |
|---|---|---|
| TIFF | WebP | 支援多頁與 16 位,並做百分位視窗化 |
| HEIC | WebP | iPhone 的預設照片格式 |
| 相機 RAW | WebP | 通過 rawpy |
| ProRes、MKV、MOV、HEVC | MP4 | 用 ffmpeg 做代理轉碼,並提供抽幀作為回退方案 |
ffmpeg 與 Pillow-SIMD 仍為可選項。它們缺失時會給出一條指明缺少哪個工具的提示,而不是一塊空白麵板。
16 位視窗化才是實質所在
科研用 TIFF 通常是 16 位的,而其內容通常只佔據可用範圍中很窄的一段。把它粗暴地轉成 8 位並不是一點小損失:一份內容位於 1200 到 1800 之間的掃描件,渲染出來只有 255 級灰階中的 4 級區分度。而在百分位視窗下,它有 254 級。
同一套視窗化邏輯也驅動著深度圖,在那裡,做錯同樣是看不出來的,而不是顯而易見的。