event calendar

GoPro MAX2とGoPro HERO13はGPSの夢を見るか 『動画にGPS情報を表示!』

tech

旅行先でのドライブ動画、後で見返すと「ここ、どこ走ってたっけ?」となること、よくありますよね 。 ようやく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のアップデート

CMD
python.exe -m pip install --upgrade pip

そのあと、本命ツールgopro-dashboard-overlayのインストール

CMD
pip install gopro-overlay

エラーなくインストールが終われば準備完了です。

MP4の結合

GoProで長時間録画すると、ファイルがいくつかに分割されて保存されます 。
まずはこれを、GPSデータを保持したまま一本の動画に合体させましょう。

ファイルリスト作成

テキストファイル(files.txt)を作成。
結合したいファイル名を古い順に記入して保存します 。
私はフルパスの方が安心なのでフルパスで書いてます。

ffmpegで合体

ffmpegでひとまとめに結合して、marge.mp4に出力します。

CMD
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行で書いてもかまいません。
コピペして編集してコピペしてください。

CMD
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を確認してください。

CMD
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)

Screenshot

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と違ってテキストファイルを作らなくてもターミナルだけでできます。
ターミナルを起動し、下記を参考に結合したいファイル名を古い順に入力します。
私はフルパスの方が安心なのでフルパスで書いてます。

zsh
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行で書いてもかまいません。
コピペして編集してコピペしてください。

CMD
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を確認してください。

CMD
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

CMD
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

CMD
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もダウンロードできます。

コメント

タイトルとURLをコピーしました