GoPro Hero8 Black で撮影した動画からGPSデータを抽出してみた【備忘録】

前回、Windows Subsystem for Linux 環境を構築しました。
今回はWSL環境上でGoProで撮影した動画からGPSデータを抽出していきます。

※Linux環境がない方は、以下の記事からWindows10上にLinux環境を用意してください

Windows Subsystem for Linux 環境構築してみた【備忘録】
以前からLinux環境があれば、色々面白いことができると考えていました。 暇つぶしがてらLinux環境をWindows10上に構築してみた。 超絶簡単なので、15分もあれば構築できます。 Windows Subsystem...

本来、GoProで撮影した動画に記録されているGPSデータはGoProの編集アプリ 「QUIK」で使用されるものです。

今回はGoProで撮影動画と位置情報が同期したGPSデータを使って、動画編集してみたかったので、GPSデータの抽出に挑戦してみました。

ffmpeg インストール

GoPro Hero8 Black で撮影した動画ファイルからGPSデータのバイナリファイルを抽出するために、ffmpeg が必要となります。
※ここからの作業はWSL環境のUbuntuで実施します※

user@computer$ sudo apt install ffmpeg

GoLang インストール

gopro2gpx の実行ファイル生成にGoLangが必要なのでインストールします。

user@computer$ sudo apt install go

gopro2gpx インストール

ホームディレクトリにある .profile に以下を追加して、パスを通す

export GOPATH=$HOME/go

パスの変更を即時反映させるため、以下を実行する

user@computer$ source ~/.profile

gopro2gpxに必要なパッケージをダウンロード&インストールする

user@computer$ go get  github.com/JuanIrache/gopro-utils/bin/gopro2gpx/

${GOPATH}/bin/gopro2gpx
が生成されていOKです。

GPX抽出用シェルスクリプトを作成

生成した gopro2gpx を使って、GPSデータを抽出するためのシェルスクリプトを作成します。
ホームディレクトリに ext_gpx.sh を作成します。

#!/bin/sh

#実行ファイル
GOPRO2GPX=~/go/bin/gopro2gpx

INPUT_FILE=${1}
OUTPUT_DIR=${INPUT_FILE%/*} #dirname
FILE_NAME=${INPUT_FILE##*/} #basename

# mp4からGPSバイナリを抽出
ffmpeg -y -i ${INPUT_FILE} -codec copy -map 0:3 -f rawvideo ${OUTPUT_DIR}/${FILE_NAME}.bin

#GPSバイナリをGPXフォーマットに変換
${GOPRO2GPX} -i ${OUTPUT_DIR}/${FILE_NAME}.bin -o ${OUTPUT_DIR}/${FILE_NAME}.gpx

exit 0

実際にGPSデータを抽出してみる

先ほど作成したシェルスクリプト実行前に、実行権限を付与します。

user@computer$ chmod +x ~/ext_gpx.sh

これで実行できる状態になります。
実行方法は、以下のとおりです。

user@computer$ ./ext_gpx.sh <GoPro動画ファイルの絶対パス>
e.g.) user@computer$ ./ext_gpx.sh /mnt/c/goprp/GH010001.MP4

WSL環境の方は /mnt/下に Windowsで認識しているドライブが表示されます。
そこからGoproで撮影したMP4動画の絶対パスを指定してください。


処理完了後、Windows側で、以下のファイルが生成されていることが確認できます。
 ・ (入力動画のファイル名).bin
 ・ (入力動画のファイル名).gpx

抽出したGPXファイルをの確認はGoogleMAPで確認します。
詳細について、以前まとめたこちらからどうぞ。

GPSロガー Holux M-241をサイクリングに使ってみた
手賀沼サイクリングでGPSロガー Holux M-241を使って位置情報を記録してみました。サイクリングにおける M-241 の使い方と記録したログの活用方法を紹介します。

GPXをKMLに変換

Google Earth Studio はKMLフォーマットにしか対応しておらず、GPXフォーマットは使えません。
KML変換するwebサービスは多いのですが、GPS情報をアップロードしたくないので、スタンドアローンで使用できるフリーソフトを使用します。

anineco/gpx2jsgi
GPX2JSGI(GPX→KMLコンバータ). Contribute to anineco/gpx2jsgi development by creating an account on GitHub.

上記ソフトは、Windows Vista/7/8 対応となっていますが、Windows10 でも利用できそうです。

UIもシンプルです。
GPXファイルを放り込んだら、KMLファイルが出力されます。
複数のGPXを入力すると、一つにまとめてKMLファイルを出力するのも使いやすいです。

参考ページ

先人たちの知恵をお借りして、GoProからGPSデータの抽出ができました。
この場で感謝申し上げます。

GoPro HERO5 Blackで撮影した動画からKMLファイルを抽出してみました - Qiita
GoPro HERO5 Blackで取得したGPS情報をKMLファイルに出力して欲しいと依頼されました。 QUICKというソフトで軌跡は表示できるようなのですが、地図上に表示することは出来ないんですね。 Extracting GPS ...
他言語から来た人がGoを使い始めてすぐハマったこととその答え - Qiita
環境構築するまでに知りたかったこと Golangの最新バージョンは? 1.15.0 (2020/08/11リリース) Goのインストー...
JuanIrache/gopro-utils
Tools to parse metadata from GoPro Hero 5 cameras. Contribute to JuanIrache/gopro-utils development by creating an account on GitHub.
GPX2JSGI(GPX→KMLコンバータ)

まとめ

抽出したGPSデータは Google Earth Studio にインポートして、空撮アニメーションを作成するために使用します。

WSL環境作ったり、動画ファイルからGPSデータ引っこ抜いたり、遠回りをしましたが、ようやく本題の動画編集に入れます。

※Google Earth Studio の使い方はこちらからどうぞ。

Google Earth Studioを車載動画に活用してみる
Google Earth Studioを利用前に、Goproで撮影した動画のGPS情報を抽出しました。 が、いざGoogle Earth Studioを利用してみると、私が期待していたことができませんでした。 今回は、Goo...

コメント