影片拍攝地點怎麼查?七個步驟的方法
· 閱讀時間 2 分鐘
簡短回答
影片拍攝地點怎麼查?先檢查原始檔案,手機錄製的影片常有 ExifTool 能讀取的 GPS 座標。TikTok、YouTube 或 Instagram 的副本已沒有這些資料,因此要用 FFmpeg 擷取清晰畫面、以圖搜圖,並讀取標示、道路與聲音,再對照地圖驗證每個候選地點。
一段十秒、每秒三十格的手機影片,就是同一個地方的 300 張照片,外加一條音軌。這使影片比任何單張照片都更豐富,不過前提是要先接受一個事實:你眼前的副本很少是原始檔案。
以下的方法從檔案往外推進:如果你有原始檔案,先看中繼資料;接著看平台顯示什麼;然後是畫面、搜尋、線索,最後是檢查。每一步都比下一步便宜,而且任何一步都可能結束搜尋。
- 先檢查原始檔案中的 GPS 標籤,如果你手上有它。
- 讀取平台顯示的內容:位置標籤、說明文字、留言。
- 擷取清晰的畫面,使用 FFmpeg 或暫停後的螢幕截圖。
- 用最佳畫面做以圖搜圖,尋找較早的上傳版本。
- 跨畫面讀出線索,並聽一聽音訊。
- 把最清楚的畫面交給 AI 地理定位,取得可能的城市。
- 驗證:下結論之前,先對照地圖影像。
步驟 1:原始檔案有沒有儲存它的位置?
通常有,前提是它直接來自一支相機已開啟定位權限的手機。iPhone 會把位置寫入 QuickTime 位置標籤,Android 手機則寫入檔案的 user-data 區塊,而 ExifTool 能讀取這兩者。這是整段影片的一個位置,而不是一條軌跡。
相機需要先取得權限。在 iPhone 上,路徑是「設定」→「隱私權與安全性」→「定位服務」→「相機」;Android 的相機 App 各自有定位或地理標記的開關。Apple 的標籤保存的是 ISO 6709 座標字串,而 Android 的開發者文件說明,其錄製器會以相同的 ISO 6709 格式把地理資料存在 udta box 中。
用 ExifTool 讀取它
ExifTool 可免費用於 Windows、macOS 與 Linux。這三個指令已用 13.59 版測試過:
exiftool -G1 -s "-*gps*" "-*location*" clip.mov會列出每一個位置標籤,不論手機用的是哪一個 box。輸出中的[Keys]標示 iPhone 風格的標籤,[UserData]則標示 Android 風格的標籤。iPhone 也會儲存LocationAccuracyHorizontal,也就是手機自己估計的水平誤差(公尺)。exiftool -n -GPSPosition clip.mov會印出純十進位座標,例如48.8584 2.2945,可以直接貼進地圖。exiftool -CreationDate clip.mov會顯示 iPhone 的拍攝時間,以及其時鐘的 UTC 偏移量,例如+02:00。
即使沒有 GPS,那個 UTC 偏移量也值得看一眼。它代表的是時區而不是地點,而手機若停留在家鄉時區,就會造成誤導;但它能在幾秒內排除世界上大部分的地區。
已經為第 3 步安裝了 FFmpeg?它附帶的 ffprobe 可以顯示原始值:ffprobe -v error -show_entries format_tags clip.mov。請找像 +48.8584+002.2945+035.000/ 這樣的字串:依序是緯度、經度,然後是以公尺為單位的海拔,加號表示北方或東方。
行車記錄器、無人機與運動相機
這些裝置通常記錄的是一條軌跡:每秒或更頻繁地記錄一個新位置,而不是單一的點。ExifTool 目前能讀取 124 種這類定時 GPS,但必須明確要求。如果它提示 ExtractEmbedded 選項可能找到更多標籤,請執行 exiftool -p gpx.fmt -ee3 clip.mp4 > track.gpx,把路線存成大多數地圖工具都能開啟的 GPX 檔。gpx.fmt 檔案位於完整 ExifTool 下載內的 fmt_files 資料夾中,而且必須放在你執行指令的資料夾裡。
為什麼 TikTok、YouTube 與 Instagram 的副本沒有位置?
因為它們不是上傳的原始檔案。平台會把每個上傳內容重新編碼成自己的串流版本,而這些新檔案寫入時沒有原始檔案的中繼資料,包括 GPS。儲存或下載貼文,取得的是其中一個副本;螢幕錄影則是副本的副本。
YouTube 的說明頁面描述了這個過程:新上傳的影片會先以低畫質處理,較高的解析度隨後才推出。觀看者串流的是新編碼的版本,而創作者原始檔案中的位置標籤根本不屬於這些版本。TikTok 與 Instagram 也會重新編碼上傳內容,這也是照片分享後為何會遺失位置的原因。
所以「影片位置檢查工具」無法從你看到的副本中找回 GPS;它最多只是重複平台對一則貼文所公布的內容。如果你要驗證別人傳給你的影片,請要求原始檔案,並以文件或雲端連結傳送,而不是以一般影片訊息傳送。發布與傳輸的規則決定了中繼資料是否保留,影片與照片皆同。
步驟 2:平台本身顯示什麼?
只有貼文者選擇加入的內容,以及觀眾說過的話。TikTok 與 Instagram 可以顯示標記的地點,YouTube 可以在觀看頁面顯示影片位置,而說明文字、留言和口說內容常常直接寫出地點。標記是一種說法,不是測量。
- 位置標籤。TikTok 與 Instagram 允許貼文者在發布時附加地點,點選它會列出其他標記在同一地點的公開貼文。在 YouTube 上,創作者可以在 YouTube Studio 中設定影片位置;它會顯示在觀看頁面,點選後會搜尋來自同一位置的公開影片。
- 說明文字、描述與主題標籤。旅遊與街頭影片通常是由拍攝者自己標註的。
- 留言。觀眾很快就會說「那是車站旁的轉角」,有時說錯,但它能給你一個可以驗證的假設。
- 口說內容。在 YouTube 上,展開說明並選擇「Show transcript」,然後搜尋其中沒有寫進說明文字的地名。
- 浮水印。轉發的副本通常會保留原始上傳者的浮水印或帳號,而第一次上傳的內容,可能還保有轉發時被捨棄的說明文字與標記。
把所有這些都當作證詞看待。人們會標記最近的地標、城市而非街道,或他們從未去過的地方。Instagram 指南說明了一個標記值得信任到什麼程度。
步驟 3:如何從影片中擷取清晰的畫面?
先取得檔案:原始檔案、平台本身的儲存選項,或以最高畫質的螢幕錄影。然後用 FFmpeg 每秒取樣一張畫面、挑出關鍵影格或切換點,並把最清楚的那一刻匯出為 PNG。一張暫停後的全螢幕螢幕截圖也可以。
螢幕錄影也可以:從這裡開始的每一種方法,讀取的都是像素,而不是中繼資料。先把播放畫質設為最高,並盡可能隱藏字幕與控制項,因為它們會蓋在你想讀的像素上。
FFmpeg 是免費的,其餘的工作都靠它完成。以下每個指令都已用 FFmpeg 8.0.1 在真實的街頭影片上測試過:
- Step 1每秒取樣一張畫面
ffmpeg -i clip.mp4 -vf fps=1 frame_%03d.png會寫出 frame_001.png、frame_002.png 等檔案。若是很長的影片,fps=1/5會每五秒取一張畫面。 - Step 2擷取關鍵影格
ffmpeg -i clip.mp4 -vf "select='eq(pict_type,I)'" -fps_mode vfr key_%03d.png只保留以完整畫面儲存的影格。它在 H.264 與 VP9 檔案上都能運作,而常被引用的-skip_frame nokey捷徑,卻會在一段 60 fps 的 VP9 影片中悄悄匯出每一格畫面,30 秒內產生了 1,800 張圖。 - Step 3抓出剪輯影片中的切換點
ffmpeg -i clip.mp4 -vf "select='gt(scene,0.3)',showinfo" -fps_mode vfr cut_%03d.png會儲存每次切換後的第一個影格,並把它的時間以pts_time印出來。FFmpeg 的文件把 0.3 到 0.5 之間的門檻稱為合理的選擇。在一段連續 65 秒的步行鏡頭上,它什麼都沒有找到,所以這個方法只適用於蒙太奇剪輯。 - Step 4匯出最佳的那一刻
ffmpeg -ss 00:00:12.4 -i clip.mp4 -frames:v 1 best.png會儲存第 12.4 秒的畫面。把時間微調幾個十分之一秒,可以避開動態模糊。 - Step 5製作縮圖總覽
ffmpeg -i clip.mp4 -vf "fps=1/3,scale=480:-1,tile=5x4" -frames:v 1 sheet.png會把第一分鐘內每三秒的一張畫面,放進同一張圖片中,這是找出哪些時刻值得仔細檢視的最快方法。
PNG 可以避免第二次壓縮。在我們對下載的街頭影片所做的測試中,1080p 的 PNG 畫面為 1.5 至 2.6 MB,4K 則為 3.9 至 5.1 MB;而同樣的畫面若以 -q:v 2 存成 .jpg,則都低於 1 MB,如果相機原始檔案產生的 PNG 超過分析器的 10 MB 上限,這就是備用方案。
沒有指令列?在 YouTube 上,暫停後按句號或逗號鍵,即可向前或向後移動一格,然後在全螢幕下截圖。免費的 InVID-WeVerify 外掛適用於 Chrome 與 Firefox,能把連結或上傳的影片切成關鍵影格,並把任何一格送去以圖搜圖。
步驟 4:該拿哪些畫面去做以圖搜圖?
帶有一個醒目主體的畫面:地標、店面、招牌或天際線。把它裁切到該主體,在至少兩個搜尋引擎上搜尋,並把 TinEye 的結果依最早排序,以找出同一段影片較早的上傳版本,這些版本通常帶有原始的說明文字與地點。
以圖搜圖比對的是圖片,而不是地點,所以它回答的是一個較窄的問題:這個場景,或這段完全相同的影片,是否曾經發布過?對於爆紅的片段,答案通常是有,而一個以不同說明文字較早上傳的版本,既是地點的線索,也是一個警訊,表示目前的說明文字可能是錯的。
影片給你的嘗試機會比照片多。試著搜尋三到四個不同的時刻:寬廣的開場鏡頭、最清楚的招牌、最奇特的建築,因為每一個都是一次獨立的比對機會。YouTube 縮圖也值得一搜,不過自訂的縮圖可能根本不是影片中的任何一格。
哪一個引擎適合哪種主題很重要,而 Google Lens 與 Yandex 在不同場景上往往會失敗。在手機上,手機上的各種方式不需要安裝任何 App。
步驟 5:影片能提供哪些照片無法提供的線索?
動態、額外的角度與聲音。行進中的雙向車流能確定人們靠哪一側行駛,一次搖攝能露出單一畫面裁掉的天際線,在某一格模糊的招牌,常常在下一格就很清楚,而配樂也可能帶有語言或地名。
像讀照片一樣讀每一格:文字與標示、道路標線、車牌、建築、植被,然後是光線。國家線索指南說明了為什麼道路標線這類受規範的事物,比地景更具決定性。影片增加的是動態與重複:
- 行駛方向。在靜態照片中,停著的車可能朝向任何一邊。在影片中,行進中的雙向車流即使畫面模糊,也能明確顯示行駛的那一側,只要避開單行道即可。
- 同一個標示,出現好幾次。眩光、模糊或經過的公車,可能在某一格遮住文字,而在下一格露出來。在放棄之前,請逐格查看。
- 搖攝與轉彎。會旋轉的鏡頭,能露出單一畫面遺漏的山丘、海岸線或天際線。
- 整段影片中的太陽。隨著鏡頭轉動,你能看到影子沿著街道的落下方向。當植被無法提供線索時,影子能給出半球與大致的時段。
聽一聽配樂
首先要確認音訊確實來自該場景。在 TikTok 與 Instagram 上,音訊標籤應該顯示「original sound」或「Original audio」,並附上發布者自己的名字;如果是歌名或其他帳號的名字,就表示那是借來的聲音。即使是原創音訊,也可能在上傳前被配音,所以對音樂與旁白都要抱持懷疑。
- 語言與口音。一種語言就能同時縮小國家的範圍,而一種方言甚至能縮小到地區。
- 播報。車站、月台與機場的廣播,依設計會說出地名。把聽到的站名記下來並加以搜尋。
- 特有的聲音。各國的緊急車輛警笛不同,而宣禮聲、有軌電車鈴聲或教堂鐘聲,各自能縮小地區範圍。
- 電力嗡嗡聲。市電頻率在世界大部分地區為 50 Hz,在北美與巴西、南韓等少數國家為 60 Hz。在頻譜圖中出現穩定的 50 Hz 或 60 Hz 音調,能把候選地區一分為二,前提是它沒有被手機降噪功能濾掉,而手機降噪常常會把它去除。
步驟 6:AI 地理定位能定位影片拍攝地點嗎?
不能定位影片檔案,但能定位它的畫面。GeoSpy 分析的是靜態圖片,所以請把最清楚的畫面以 JPG 或 PNG 上傳,大小上限 10 MB。它會回傳可能的城市與國家,而不是地址;而且因為 FFmpeg 擷取的畫面不含 GPS,估計結果仰賴的是畫面中可見的內容。
選擇同時包含最多種證據的畫面:道路、建築、標示與植被同時出現,勝過只拍到其中一項的特寫。先裁掉字幕、副標題與平台按鈕,因為它們會遮住證據,卻不提供任何證據。
接著,再從不同時刻各取一兩格畫面。如果它們指向同一座城市,信心就會提高;如果分散在各處,那麼場景就是模糊的,誠實的結果是一個區域。模型如何判讀場景說明了為什麼有些畫面有效,而有些無效。
步驟 7:影片拍攝地點怎麼查證,下結論前要確認什麼?
在街景或衛星影像中找到候選地點,並檢查你當初找到它時沒有用到的細節,例如路緣、排水管或屋頂線。接著檢查時間:季節、光線以及最早的上傳版本,都應該與附在影片上的故事相符。
只比對那些引導你找到某地點的線索,什麼也證明不了,因為你原本就知道它們是一致的。真正的測試是,沒有用過的細節是否也吻合。影片讓這件事比照片容易:取十秒後的一格畫面,確認下一棟建築是正確的那一棟。
時間是另一半。被重複使用的舊事件影片很常見,因此步驟 4 中最早的副本、樹木的狀態與光線的方向,都應該與該說法相符。OSINT 工作流程列出了完整的準則,包括該記錄什麼,而驗證指南則涵蓋了逐格可行的檢查方法。
在影像不足的地方,街景涵蓋範圍並不均勻,正確的結論應該是一個附有說明信心程度的區域,而不是一條街道。
每一種證據能告訴你什麼?
只有原始檔案中的 GPS 能單獨給出座標。其他一切都是縮小搜尋範圍:標籤與說明文字是說法,以圖搜圖能找到較早的副本,視覺與聲音線索能給出國家或地區,而 AI 地理定位則給出可能的城市。
| 證據 | 能說明 | 無法說明 |
|---|---|---|
| 原始檔案中的 GPS 標籤 | 錄製發生的地點,通常精確到公尺 | 是否經過編輯;平台副本的任何資訊 |
| 定時 GPS 軌跡(行車記錄器、無人機) | 整段路線,逐點呈現 | 檔案重新編碼之後的任何資訊 |
| 平台位置標籤 | 發布者選擇標示的地點 | 相機實際位於何處 |
| 說明文字、留言、逐字稿 | 人們打出或說出的地名 | 它們是否正確 |
| 畫面的以圖搜圖 | 較早的上傳與點名該場景的頁面 | 任何尚未發布場景的資訊 |
| 跨畫面的視覺線索 | 國家、地區,有時能到街道 | 單獨而言,無法得出地址 |
| 音訊 | 語言、地區,有時能到某個具名站點 | 任何事情,若聲音是後來加入的 |
| 畫面的 AI 地理定位 | 可能的城市與國家 | 地址,或證明 |
| 太陽與影子 | 半球與大致的時段 | 單獨而言,無法得出國家 |
兩個彼此獨立且一致的來源,例如一個標籤加上一次街景比對,就能構成一項發現;單獨一項則只是線索。至於靜態圖片,主要照片指南會並排比較同樣的方法。
常見問題
- 能看出 TikTok 影片是在哪裡拍的嗎?
- 只有在發布者標記了地點,或在說明文字中提到它時才行。TikTok 會重新編碼上傳內容,所以儲存下來的副本不會帶有手機的 GPS。除此之外,你只剩下畫面與聲音,而這正是上述方法所依據的。
- YouTube 影片有位置資訊嗎?
- 你能觀看或儲存的版本沒有。YouTube 提供的是經過處理的副本,不含原始檔案的中繼資料。創作者可以在 YouTube Studio 中加入影片位置,它會顯示在觀看頁面上,但那是創作者的說法,而不是 GPS 的讀數。
- GeoSpy 能分析影片檔案嗎?
- 不能。它分析的是靜態圖片,也就是最大 10 MB 的 JPG 或 PNG,所以請先擷取一個畫面再上傳。它回傳的是城市層級的估計,而不是地址,而且上傳的照片不會被保存。
- 螢幕錄影會保留原始影片的位置嗎?
- 不會。螢幕錄影是你自己的裝置製作的新檔案,不帶原始影片的任何中繼資料。不過它仍然適用於所有視覺方法,因為那些方法讀取的是像素。
- 找出影片的拍攝地點合法嗎?
- 找出已公開影片的錄製地點,通常是合法的。但利用答案去找出、跟蹤或聯絡某人,不論地點是如何取得的,都可能構成跟蹤或騷擾;法律指南說明了界線在哪裡。
資料來源
- QuickTime Tags — ExifTool (Phil Harvey)iPhone(Keys location.ISO6709)與 Android(UserData ©xyz)影片的 GPSCoordinates,以及以 ExtractEmbedded 讀取的 124 種定時 GPS 類型。
- Geotagging with ExifTool — ExifTool (Phil Harvey)從影片擷取完整軌跡所需的 gpx.fmt 軌跡記錄指令,以及 -ee3 選項。
- MediaRecorder.setLocation() — Android DevelopersAndroid 依 ISO 6709 把影片地理資料存在 udta box 中。
- FFmpeg Filters Documentation: select, aselect — FFmpeg關鍵影格與場景切換的運算式,以及 0.3 至 0.5 的場景門檻範圍。
- Tag your location on videos and live streams — YouTube Help創作者設定的影片位置在觀眾端如何顯示。
- Low video quality after upload — YouTube Help上傳內容會被處理成新的版本,並從低畫質開始。
- Mains electricity by country — Wikipedia全球大部分地區為 50 Hz;北美是最大的 60 Hz 例外。
繼續閱讀
沒有 EXIF 時,怎麼找拍攝地點?
沒有 EXIF 怎麼找拍攝地點?中繼資料已經移除,還能靠什麼?這裡介紹三種適用於去除中繼資料照片的方法、各自實際能達到的效果,以及它們的極限。
· 閱讀時間 1 分鐘
OSINT 照片地理定位流程:先查什麼,何時該停手
一套可重複執行的 OSINT 照片地理定位流程,說明如何保持客觀,以及何時繼續搜尋會從研究變成監控。
· 閱讀時間 1 分鐘
如何從照片線索判斷國家:依序閱讀各項線索
從照片線索判斷國家,先讀受規範的細節:它們在國界上會突然改變。依各線索能縮小的範圍與判讀速度,排出閱讀順序。
· 閱讀時間 1 分鐘
以圖搜圖網站推薦:各引擎擅長什麼,一次比較
以圖搜圖網站推薦:Google Lens、Yandex、Bing 與 TinEye 各有專長。比較各引擎擅長的主題,以及何時該改用 AI 地理定位。
· 閱讀時間 1 分鐘