ByteScope

Remove Video Location

檔案記著這支影片在哪裡拍的,就找出來、清掉。不重新編碼、不上傳,還會告訴你檢查了哪些地方、哪些沒檢查。

檔案不會離開你的瀏覽器 — 全部在本機處理。

影片與原況照片

把影片拖到這裡

或點擊選擇檔案 — MP4、MOV、M4V 和 3GP,也可以加入原況照片配對的 HEIC 或 JPG

本頁會檢查的地方

  • QuickTime 金鑰(iPhone):com.apple.quicktime.location.*,含座標、精確度和地名。
  • 影片本體和每條軌道裡的 ©xyz atom(Android 與許多相機)。
  • 影片本體和每條軌道裡的 3GPP loci atom(ffmpeg 輸出的 MP4)。
  • 中繼資料清單裡的 iTunes ©xyz 項目(exiftool 對 MP4 寫入的 GPSCoordinates)。
  • 不只最上層的 meta,還有影片本體 udta/meta 和每條軌道 meta 裡的 QuickTime 金鑰。
  • udta 裡的 QuickTime XMP_ atom。
  • 存在 uuid box 裡的 XMP 區塊。
  • 逐格 GPS 軌跡(GoPro、DJI,iPhone 也可能有):只回報,不會清除。
  • Content Credentials (C2PA) 紀錄:因為它不是位置資訊,所以只回報。影片裡的內容憑證可能也記錄了拍攝資訊(包括位置),這個工具不會清除它。

不檢查也不清除的東西

畫面本身(路牌、門牌號碼)、聲音、檔名、雲端相簿另外保存的位置,還有上傳時平台自己記下的資訊。清除的做法是就地把值覆寫成 0:檔案大小不變,用十六進位編輯器看得到那些 0,這是刻意的設計。本頁只會告訴你找到了什麼、做了什麼,沒辦法替你保證這支影片沒有問題。

原檔不會被改動。清除後的副本會命名為 …-noloc。

瀏覽器支援度

要原地重新命名和刪除檔案,需要 File System Access API,目前只有 Chromium 系列瀏覽器支援。不管支不支援,下面的操作都在你自己的電腦上完成——絕不會上傳任何東西。

功能ChromeEdgeFirefoxSafari
從硬碟開啟資料夾window.showDirectoryPicker——Chrome/Edge 86 以上,僅限桌面版✓支援✓支援✗不支援✗不支援
原地重新命名檔案FileSystemFileHandle.move——Chrome/Edge 111 以上✓支援✓支援✗不支援✗不支援
原地刪除檔案FileSystemDirectoryHandle.removeEntry✓支援✓支援✗不支援✗不支援
記住資料夾供下次使用控制代碼會存在這台裝置的 IndexedDB 裡;權限每次還是要重新授權✓支援✓支援✗不支援✗不支援

在這個瀏覽器偵測到

  • window.showDirectoryPicker …
  • FileSystemFileHandle.move …
  • indexedDB …

在 Firefox、Safari,或任何手機、平板上,這個頁面能說明怎麼做,但沒辦法實際執行。請用桌面版 Chrome 或 Edge 開啟。

想一次檢查好幾種檔案? 改用檔案 metadata 檢查

關於這個工具

手機和相機會把拍攝地點寫進影片檔案本身。iPhone 把它放在 moov 的中繼資料裡,是 +25.0330+121.5654/ 這種 ISO 6709 座標字串;Android 和很多相機用的是 ©xyz atom;有些編輯軟體則會留下一段 XMP。把影片丟進來,這一頁會把找到的全部列出來,附上讀到的原始座標與它在檔案裡的位置,再把能清的清掉。檢查的範圍是 keys 表裡的 ISO 6709 和其他位置 key、udta 裡的 ©xyz,以及 XMP 的 uuid box。就算什麼都沒找到,也會告訴你檢查過哪些地方。

整支影片不會重新編碼。影片絕大部分是一個塞滿壓縮影格的巨大 mdat box,位置資訊則在旁邊那個小小的 moov box,所以工具只讀 moov,寫回去時也只改裡面幾個 byte。畫面和聲音完全沒動,畫質不會掉,檔案大小跟原本一模一樣。這也讓它很適合超大的檔案:4 GB 的影片不會整個讀進記憶體,只有中繼資料那個 box 會。原地改寫的痕跡看得出來:用十六進位編輯器打開,原本放位置的地方是一串零。那是清除生效了,不是沒清乾淨。

有些東西這個工具只會報告、不會清。GoPro、DJI 這類運動相機與空拍機,有時候連 iPhone 也是,會把每一個影格的 GPS 記在另一條帶時間的 metadata 軌裡,這一版不會去改寫它。遇到這種軌,你只會看到它存在的警告;iPhone 的那種軌,文字會寫「可能含有位置」,不會斷定它有。

還有些東西根本不是中繼資料,工具看不到:畫面裡拍到的路牌或門牌、音軌裡的人聲、像 home-garden.mov 這樣的檔名、雲端相簿另外存的位置,以及平台在你上傳時另外記錄的資訊。所以報告絕不會說影片「安全」或位置「已經完全移除」,只會說找到什麼、清掉什麼、沒有檢查什麼。檔案有一段讀不出來的時候,結果是「無法判斷」,這跟「沒找到」是兩回事。

如果這支影片是原況照片(Live Photo)的另一半,把對應的 HEIC 一起丟進來。兩個檔會依檔名配成一組,照片用「只清位置」模式處理,其他中繼資料不會被動到。

常見問題

它會檢查檔案裡的哪些地方有位置?

會清的有三類:QuickTime 的 keys 表,iPhone 把 com.apple.quicktime.location.ISO6709 和精確度、地名這些位置 key 放在這裡;udta 裡的 ©xyz atom,Android 和很多相機用它;還有放在 uuid box 裡的 XMP,有些編輯軟體會留下來。整支影片的標頭和每一條軌都會看。第四類是帶每格 GPS 的 metadata 軌,只會報告,不會清。檢查過的地方都會列在結果裡,包括什麼都沒找到的那些。

影片會被重新編碼嗎?為什麼檔案大小一樣?

不會重新編碼,所以大小才會一樣。工具讀的是小小的 moov box,把位置的值覆蓋成零,把位置 key 改成長度相同的中性名稱,其餘部分逐 byte 原樣寫回去。那幾個 byte 前後的內容都沒動,所以畫面、聲音、拖曳用的索引和檔案大小都不變。用十六進位編輯器比對兩個檔案,會看到原本放位置的地方變成零,這正是預期的結果。

我的 GoPro 或空拍機影片為什麼還是有位置資料?

這類相機是把 GPS 一格一格記在獨立的 metadata 軌,不是只存在單一個標籤裡,而這一版不會改寫那條軌。它只會報告軌存在,然後不動它。iPhone 上同類型的軌不一定有位置,所以報告會寫「可能含有」。如果每格 GPS 對你很重要,就當這支影片還帶著一條位置軌跡,不要以為其他清除動作已經涵蓋它。

我能相信位置已經完全清乾淨了嗎?

沒有任何工具能這樣保證,這個也不會。它會報告找到並清掉哪些位置,還會重新讀一次輸出檔,列出還剩什麼。它不會檢查的有:畫面本身,例如路牌或地標、音軌、檔名、雲端相簿另外存的位置,以及平台在你上傳時另外記錄的資訊。檔案有一段解析不了的時候,它會說無法判斷,不會假裝裡面什麼都沒有。

iPhone 分享時本來就能關閉位置,為什麼還要用這個?

確實可以。在照片的分享選單點「選項」,把「位置」關掉,送出去的副本就沒有位置。如果你每次都記得這樣做,可能不需要這一頁。這一頁派得上用場的是已經存在的檔案:存在電腦或外接硬碟裡的影片、Android 手機或相機拍的影片、想整個資料夾一次清掉,還有準備從電腦傳出去、而不是走分享選單的檔案。

原況照片的影片那一半怎麼辦?

原況照片是一張 HEIC 靜態照加一段很短的 .MOV,.MOV 也帶位置。把兩個檔案一起丟進來,會依檔名配成一組,例如 IMG_1234.HEIC 和 IMG_1234.MOV。影片在這裡清,照片用「只清位置」模式處理,EXIF 裡的配對資訊就不會被丟掉。如果只丟了其中一半,頁面會提醒你另一半也有座標。

我的影片會被上傳嗎?4 GB 的檔案撐得住嗎?

不會上傳。檔案在你的電腦上本機開啟,讀進記憶體的只有小小的中繼資料 box,不是影片本身,所以 4 GB 的錄影和一小段短片負擔差不多。清完的副本寫回你的磁碟,原檔保持原樣。這一頁是沒有伺服器的靜態檔案,影片根本沒地方可以傳,把網路關掉也照常運作。