我們的官方 iOS App 已在 App Store 上架免費下載

影片拍攝地點怎麼查?七個步驟的方法

· 閱讀時間 2 分鐘

簡短回答

影片拍攝地點怎麼查?先檢查原始檔案,手機錄製的影片常有 ExifTool 能讀取的 GPS 座標。TikTok、YouTube 或 Instagram 的副本已沒有這些資料,因此要用 FFmpeg 擷取清晰畫面、以圖搜圖,並讀取標示、道路與聲音,再對照地圖驗證每個候選地點。

一段十秒、每秒三十格的手機影片,就是同一個地方的 300 張照片,外加一條音軌。這使影片比任何單張照片都更豐富,不過前提是要先接受一個事實:你眼前的副本很少是原始檔案。

以下的方法從檔案往外推進:如果你有原始檔案,先看中繼資料;接著看平台顯示什麼;然後是畫面、搜尋、線索,最後是檢查。每一步都比下一步便宜,而且任何一步都可能結束搜尋。

  1. 先檢查原始檔案中的 GPS 標籤,如果你手上有它。
  2. 讀取平台顯示的內容:位置標籤、說明文字、留言。
  3. 擷取清晰的畫面,使用 FFmpeg 或暫停後的螢幕截圖。
  4. 用最佳畫面做以圖搜圖,尋找較早的上傳版本。
  5. 跨畫面讀出線索,並聽一聽音訊。
  6. 把最清楚的畫面交給 AI 地理定位,取得可能的城市。
  7. 驗證:下結論之前,先對照地圖影像。

步驟 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 在真實的街頭影片上測試過:

  1. Step 1每秒取樣一張畫面ffmpeg -i clip.mp4 -vf fps=1 frame_%03d.png 會寫出 frame_001.png、frame_002.png 等檔案。若是很長的影片,fps=1/5 會每五秒取一張畫面。
  2. 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 張圖。
  3. 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 秒的步行鏡頭上,它什麼都沒有找到,所以這個方法只適用於蒙太奇剪輯。
  4. Step 4匯出最佳的那一刻ffmpeg -ss 00:00:12.4 -i clip.mp4 -frames:v 1 best.png 會儲存第 12.4 秒的畫面。把時間微調幾個十分之一秒,可以避開動態模糊。
  5. 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,所以請先擷取一個畫面再上傳。它回傳的是城市層級的估計,而不是地址,而且上傳的照片不會被保存。
螢幕錄影會保留原始影片的位置嗎?
不會。螢幕錄影是你自己的裝置製作的新檔案,不帶原始影片的任何中繼資料。不過它仍然適用於所有視覺方法,因為那些方法讀取的是像素。
找出影片的拍攝地點合法嗎?
找出已公開影片的錄製地點,通常是合法的。但利用答案去找出、跟蹤或聯絡某人,不論地點是如何取得的,都可能構成跟蹤或騷擾;法律指南說明了界線在哪裡。

資料來源

  1. QuickTime Tags — ExifTool (Phil Harvey)iPhone(Keys location.ISO6709)與 Android(UserData ©xyz)影片的 GPSCoordinates,以及以 ExtractEmbedded 讀取的 124 種定時 GPS 類型。
  2. Geotagging with ExifTool — ExifTool (Phil Harvey)從影片擷取完整軌跡所需的 gpx.fmt 軌跡記錄指令,以及 -ee3 選項。
  3. MediaRecorder.setLocation() — Android DevelopersAndroid 依 ISO 6709 把影片地理資料存在 udta box 中。
  4. FFmpeg Filters Documentation: select, aselect — FFmpeg關鍵影格與場景切換的運算式,以及 0.3 至 0.5 的場景門檻範圍。
  5. Tag your location on videos and live streams — YouTube Help創作者設定的影片位置在觀眾端如何顯示。
  6. Low video quality after upload — YouTube Help上傳內容會被處理成新的版本,並從低畫質開始。
  7. Mains electricity by country — Wikipedia全球大部分地區為 50 Hz;北美是最大的 60 Hz 例外。

繼續閱讀

Cookie 告知

除了登入、語言與安全性所必需的 Cookie 之外,本網站也使用 Google Analytics 與 Meta Pixel 的 Cookie 來衡量流量與廣告成效。你可以在瀏覽器設定中封鎖這些 Cookie,詳細說明請參閱Cookie 政策。