LoginSignup
13
7

More than 5 years have passed since last update.

GoPro HERO5 Blackで撮影した動画からKMLファイルを抽出してみました

Last updated at Posted at 2018-04-12

GoPro HERO5 Blackで取得したGPS情報をKMLファイルに出力して欲しいと依頼されました。
QUICKというソフトで軌跡は表示できるようなのですが、地図上に表示することは出来ないんですね。
Extracting GPS From Go Pro Hero 5を参考にしました。
ただし、Linux・json出力、で書かれているので、Windows・KML出力として残しておきます。

追記
HERO7では動かないとのこと。nbangさんがアップデートしてくれました。

準備

必要なもの

  • ffmpeg
  • git
  • Go

ffmpeg

動画を扱いたいならとりあえずこれですね。
1. FFmpeg BuildsからStatic版をダウンロードします。
2. どこかに解凍します。
3. 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への変換ツールはいくつかあるようなので、お好きなものを使えると思います。

13
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7