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

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

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

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

本来、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ロガーを使って位置情報を記録してみました。 意外と簡単にGoogleマップに表示させることができますし、走った道も振り返ることができるので面白いです。今回は私が使用してるGPSロガーやツール、Googl...

GPXをKMLに変換

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

GitHub - anineco/gpx2jsgi: GPX2JSGI(GPX→KMLコンバータ)
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というソフトで軌跡は表示できるようなのですが、地図上に表示することは出来ないんです…
他言語から来た人がGoを使い始めてすぐハマったこととその答え - Qiita
環境構築するまでに知りたかったことGolangの最新バージョンは?1.16.6 (2020/07/12リリース)…
GitHub - JuanIrache/gopro-utils: Tools to parse metadata from GoPro Hero 5 cameras
Tools to parse metadata from GoPro Hero 5 cameras. Contribute to JuanIrache/gopro-utils development by creating an accou...
GPX2JSGI(GPX→KMLコンバータ)

まとめ

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

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

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

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

GoProで撮影されている方にオススメの動画編集方法の紹介です!

GoPro HERO8 Black で撮影した高解像度/高フレームレート映像を低スペックPCで編集してみた
最近のアクションカムやスマートフォンは4K/60fps撮影が手軽に行うことができ、ライトユーザであっても綺麗な映像を残すことできるようになっています。 ただ、撮影した映像をちょっとおしゃれに編集しようとすると、非常に処理時間がかかってしまう...

車載動画を作ってみたくて、GoPro Hero8 Black を購入しました!

GoPro HERO8 Black を購入してみた 開封&セットアップ編
スーパーカブC125を購入してから車載動画にチャレンジしているのですが、その奥深さに苦戦している goldear です。 今回は、10月1日に製品発表、10月25日に発売された「GoPro HERO8 Black」を購入したので、早速開封し...

コメント