
旅行先でのドライブ動画、後で見返すと「ここ、どこ走ってたっけ?」となること、よくありますよね 。 ようやくGoPro MAX2、HERO13に待望のGPS機能が復活し、GoPro MAX 2などで走行データが残せるようになりました 。
しかし、いざ動画に速度計やマップを載せようとすると、大きな壁にぶつかります。
・スマホアプリ(GoPro Quik)
転送に時間がかかるし、書き出しは遅い。スマホも熱くなって電池がゴリゴリ削れる 。
・専用ソフト (Telemetry Overlay など)
使いやすいけど、買い切りで約3万円($199)と、なかなかの高級品 。
「もっと楽に、PCでサクッと無料でやりたい!」 そんな願いを叶えてくれるのが、
GitHubで見つけたPythonコードを使った方法です 。
これならWindowsでもMacでも、思い通りのオーバーレイが作成できました。

ここから順番にするだけで簡単にできます!
でも、一番手っ取り早くするには、最後のおまけをご覧ください。
Windows
環境構築
Python のインストール (オススメは3.13ぐらい)
こちらのリンクなどから、お使いのパソコンにあったものをダウンロードしてください。
Python 3.13.10 (.exe 64bit) ・ Python 3.13.10 (.exe 32bit)
Python 3.13.10 (.exe ARM64)
インストール時には「Add Python to PATH」に必ずチェックを入れてください 。

ffmpegの導入
コマンドプロンプトで winget install ffmpeg と入力します。
ソフトウェア使用許諾契約の同意には Y と入力してエンターを押してください。

仮想環境(venv)の作成
venvによる仮想環境を作ります。仮想環境の利点としては、失敗してもフォルダを消すだけで元通り!不要になればそのまま削除できます。
Dドライブなどの作業用フォルダに cd/d D:\ などで移動し、 python -m venv venv311 で作成します。venv311 がフォルダ名になります。ちょっと時間がかかった後、完了します。.\venv311\Scripts\activate で仮想環境を起動します 。
成功すると、プロンプトの頭に(venv311)が付きます。



ライブラリのインストール
とりあえずpipのアップデート
python.exe -m pip install --upgrade pipそのあと、本命ツールgopro-dashboard-overlayのインストール
pip install gopro-overlayエラーなくインストールが終われば準備完了です。


MP4の結合
GoProで長時間録画すると、ファイルがいくつかに分割されて保存されます 。
まずはこれを、GPSデータを保持したまま一本の動画に合体させましょう。
ファイルリスト作成
テキストファイル(files.txt)を作成。
結合したいファイル名を古い順に記入して保存します 。
私はフルパスの方が安心なのでフルパスで書いてます。

ffmpegで合体
ffmpegでひとまとめに結合して、marge.mp4に出力します。
ffmpeg -f concat -safe 0 -i D:/files.txt -map 0:0 -map 0:1 -map 0:3 -c copy D:/meffmpeg -y -i merge.mp4ここで -map 0:3 を指定するのがポイント。映像と音声だけでなく、GPSデータ(GPMF)もしっかりコピーされます 。 作業場所にもよりますが、まぁまぁ時間かかります。

2K(1080p)画質にエンコード
元の動画が4Kで重いと、後のオーバーレイ処理に時間がかかります。
4Kが必要なければ、扱いやすい1080p(フルHD)に変換しましょう。
お使いの環境に応じて、4行目のエンコーダのコマンドを選んでください。
下になるほど速いです。
#ソフトウェアエンコード
-c:v libx264 -preset veryfast -crf 22 ^
#ハードウェアエンコード (intel)
-c:v h264_qsv -global_quality 22 -preset veryfast ^
#ハードウェアエンコード (nVIDIA)
-c:v h264_nvenc -preset p5 -cq 22 ^長いのでコマンドを ^ で複数行に分けました。1行で書いてもかまいません。
コピペして編集してコピペしてください。
ffmpeg -y -i D:/merge.mp4 ^
-map 0:v -map 0:a? -map 0:3 ^
-vf "format=yuv420p,scale=1920:-2" ^
-c:v h264_qsv -global_quality 22 -preset veryfast ^
-c:a copy ^
-c:d copy ^
D:/1080p.mp4

オーバーレイ処理 (動画にGPS情報を合成)
いよいよ動画にGPS情報やマップを合成します。
仮想環境(venv)を起動し忘れていたら、.\venv311\Scripts\activate で起動してください。
3行目は表示する項目を設定しています。
GPS日時 / GPS座標 / GPSロック状態 / 速度 / 高度 / 地図(現在地) / 地図(全体図)
4行目はkm/h指定、5行目は速度表示制限で例では200km以上の速度はエラー扱いになります。
6行目は文字フォントの指定をしています。
詳細なオプションについては、作者のGitHubを確認してください。
python E:\venv\Scripts\gopro-dashboard.py^
--debug-metadata ^
--include date_and_time gps_info gps-lock big_mph altitude moving_map journey_map ^
--units-speed kph ^
--gps-speed-max 200 --gps-speed-max-units kph ^
--font "C:/Windows/Fonts/arial.ttf" ^
D:\1080p.mp4 D:\output.mp4しばらく待ったら、オーバーレイ処理が完了します。
完成!!
Mac
環境構築
Python のインストール (オススメは3.13ぐらい)
こちらのリンクなどから、お使いのパソコンにあったものをダウンロードしてください。
Python 3.13.10 (.pkg)

ffmpegの導入
ffmpegはHomebrewを使ってインストールすると、設定いらずで楽にできます。
ターミナルを開き、下記をコマンドを実行してください。/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

次に brew install ffmpeg と入力して実行するだけで完了です。

仮想環境(venv)の作成
Windowsと同じく、venvによる仮想環境を作ります。
デスクトップなどの作業用フォルダに cd Desktop で移動し、 python3.13 -m venv venv313 で作成します。venv313 がフォルダ名になります。ちょっと時間がかかった後、完了します。source venv313/bin/activate で仮想環境を起動します 。
成功すると、プロンプトの頭に(venv313)が付きます。


ライブラリのインストール
とりあえずpipのアップデートpip install -U pip
そのあと、本命ツール gopro-dashboard-overlay と、必要なライブラリsetuptoolsのインストール。setuptools はバージョン81以下でないと今回必要な pkg_resources が含まれなくなり動作しません。pip install gopro-overlay "setuptools<81"
エラーなくインストールが終われば準備完了です。


MP4の結合
分割されたファイルを一本の動画に合体します。
Windowsと違ってテキストファイルを作らなくてもターミナルだけでできます。
ターミナルを起動し、下記を参考に結合したいファイル名を古い順に入力します。
私はフルパスの方が安心なのでフルパスで書いてます。
ffmpeg -f concat -safe 0 -i <(printf "file '%s'\n" \
/Volumes/SanDisk/GX010216.MP4 \
/Volumes/SanDisk/GX020216.MP4 \
/Volumes/SanDisk/GX030216.MP4 \
/Volumes/SanDisk/GX010217.MP4 \
/Volumes/SanDisk/GX020217.MP4 \
) \
-map 0:0 -map 0:1 -map 0:3 \
-c copy /Volumes/SanDisk/marge.mp4
2K(1080p)画質にエンコード
元の動画が4Kで重いと、後のオーバーレイ処理に時間がかかります。
4Kが必要なければ、扱いやすい1080p(フルHD)に変換しましょう。
お好みに応じて、4行目のエンコーダのコマンドを選んでください。
ハードウェアのほうが速いです。
#ソフトウェアエンコード
-c:v libx264 -preset veryfast -crf 22 \
#ハードウェアエンコード
-c:v h264_videotoolbox -b:v 12M \長いのでコマンドを \ で複数行に分けました。1行で書いてもかまいません。
コピペして編集してコピペしてください。
ffmpeg -y -i /Volumes/SanDisk/merge.mp4 \
-map 0:v -map 0:a -map 0:3 \
-vf "scale=1920:-2" \
-c:v h264_videotoolbox -b:v 12M \
-c:a copy \
-c:d copy \
/Volumes/SanDisk/1080p.mp4
オーバーレイ処理 (動画にGPS情報を合成)
動画にGPS情報やマップを合成します。
仮想環境(venv)を起動し忘れていたら、source ~/venv313/bin/activate で起動してください。
コマンドはWindowsとほぼ同じです。
詳細なオプションについては、作者のGitHubを確認してください。
gopro-dashboard.py \
--debug-metadata \
--include date_and_time gps_info gps-lock big_mph altitude moving_map journey_map \
--units-speed kph \
--gps-speed-max 200 --gps-speed-max-units kph \
--font "/System/Library/Fonts/Helvetica.ttc" \
/Volumes/SanDisk/1080.mp4 /Volumes/SanDisk/output.mp4しばらく待ったら、オーバーレイ処理が完了します。
完成!!
タイムラプス
GoProで撮影した数時間の走行映像。そのままでは長すぎて見返すのが大変ですよね。
映像を8倍速のタイムラプスに変換しつつ、音声も(超早口ですが)しっかり残す技も紹介します。[0:v]setpts=0.125*PTS で、映像の表示時間を短縮しています。[0:a]atempo=2.0,atempo=2.0,atempo=2.0 で、音声を短縮しています。
FFmpegの atempo フィルターには2.0倍までという制限があります。
そのため、8倍速にするには2倍フィルターを3回連結させる必要があります。
Windows
ffmpeg -y -i output.mp4 ^
-filter_complex "[0:v]setpts=0.125*PTS[v];[0:a]atempo=2.0,atempo=2.0,atempo=2.0[a]" ^
-map "[v]" -map "[a]" ^
-c:v h264_qsv -global_quality 22 -preset veryfast ^
-c:a aac -b:a 160k ^
output_timelapse_x8.mp4
Mac
ffmpeg -y -i output.mp4 \
-filter_complex "[0:v]setpts=0.125*PTS[v];[0:a]atempo=2.0,atempo=2.0,atempo=2.0[a]" \
-map "[v]" -map "[a]" \
-c:v h264_videotoolbox -b:v 12M \
-c:a aac -b:a 160k \
output_timelapse_x8.mp4おまけ
コマンドがめんどくさいので、GUIのソフトを作りました。
GoPro-Overlay-GUI

git cloneでダウンロードして記載の通りにビルドしてください。
リリースページ から実行ファイルEXEもダウンロードできます。


コメント