GoPro HERO5 Blackで取得したGPS情報をKMLファイルに出力して欲しいと依頼されました。
QUICKというソフトで軌跡は表示できるようなのですが、地図上に表示することは出来ないんですね。
Extracting GPS From Go Pro Hero 5を参考にしました。
ただし、Linux・json出力、で書かれているので、Windows・KML出力として残しておきます。
追記
HERO7では動かないとのこと。nbangさんがアップデートしてくれました。
準備
必要なもの
- ffmpeg
- git
- Go
ffmpeg
動画を扱いたいならとりあえずこれですね。
-
FFmpeg Buildsから
Static
版をダウンロードします。 - どこかに解凍します。
- Pathを通します。
git
自分用 Git For Windowsのインストール手順が参考になると思います。
ここもPathが通っていないと後々つまづきます。
Go
Windows に インストーラを使って GoLang を インストールするときの注意点が参考になります。
GOROOT
とかGOPATH
とか、Pathを通す必要があったりするので、よく読んでください。
再起動
Pathをもろもろ通したらサインアウトか再起動します。
手順
1. Streamを調べる
GPS情報は、撮影した動画ファイルGOPRxxxx.MP4
にメタデータとして入っています。
まずはこれを確認します。
ffprobe GOPRxxxx.MP4
Duration: 00:11:56.80, start: 0.000000, bitrate: 30165 kb/s
Stream #0:0(eng), 1, 1/60000: Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29972 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
Metadata:
creation_time : 2018-04-11 13:42:19
handler_name : GoPro AVC
encoder : GoPro AVC encoder
timecode : 13:55:26:27
Stream #0:1(eng), 1, 1/48000: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2018-04-11 13:42:19
handler_name : GoPro AAC
timecode : 13:55:26:27
Stream #0:2(eng), 1, 1/60000: Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2018-04-11 13:42:19
handler_name : GoPro TCD
timecode : 13:55:26:27
Stream #0:3(eng), 0, 1/1000: Data: none (gpmd / 0x646D7067), 38 kb/s (default)
Metadata:
creation_time : 2018-04-11 13:42:19
handler_name : GoPro MET
Stream #0:4(eng), 4, 1/60000: Data: none (fdsc / 0x63736466), 13 kb/s (default)
Metadata:
creation_time : 2018-04-11 13:42:19
handler_name : GoPro SOS
このファイルの場合、Stream #0:3(eng), 0, 1/1000: Data: none (gpmd / 0x646D7067), 38 kb/s (default)
がGPS情報なので、この0:3
を覚えておきます。
2. バイナリで抽出する
ffmpegの細かいオプションはよく分かりませんが、ファイル名とStream
を変えて実行します。
ffmpeg -y -i GOPRxxxx.MP4 -codec copy -map 0:3 -f rawvideo GOPRxxxx.bin
3. バイナリからGPXに変換する
まず、github.com/stilldavid/gopro-utilsからgit clone
するかzipでダウンロードして展開しておきます。
次に、この二つのパッケージをgetします。
go get github.com/stilldavid/gopro-utils/telemetry
go get github.com/paulmach/go.geo
あとは、build
しても良し、run
しても良しですが、ここではrun
します。
go run gopro2gpx.go -i GOPRxxxx.bin -o GOPRxxxx.gpx
4. GPXからKMLに変換する
本当はここから先もGo
で変換できたら良かったのですが…。
見つからなかったのでGPX2KMLを使いました。
GPXからKMLへの変換ツールはいくつかあるようなので、お好きなものを使えると思います。