Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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への変換ツールはいくつかあるようなので、お好きなものを使えると思います。

clamoto
- C++er / Qt / MFC / 医療機器 / 歯科CT / マンモグラフィ / 地中レーダー / IoT - 最近はWebアプリ開発を始めました。 - 初級:Go-gin / Docker-compose / redis / Postgres / REST API / JavaScript / HTML
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした