先日、怪しいアクションカメラを手に入れました。
ちょうどクーポンを使って4000円を切る値段だったので、これを使って自転車で記録を取り、Mapillaryに画像をアップロードしてみました。
まず、GPSロガーを用意します。僕の場合はGarminのInstinct Dual Powerを使っています。
準備としては以下のことをします。
では、実際にデータを取る手順ですが、以下のようにします。
このとき、GPSロガーの有効化とカメラの録画の順番があとで修正するときのポイントになります。
次に、microSDからデータをコピーして作業をします。
まずやらないといけないのが動画の結合です。短い動画だと編集は必要ないですが、長い動画を取ると自動的に分割されるため結合をする必要があります。
今回3つログを撮ったので、以下のようなファイルになりました。
$ ls FILE201201-094655F.MOV FILE201201-100155F.MOV FILE201201-101918F.MOV FILE201201-102827F.MOV FILE201201-104327F.MOV
このうち、FILE201201-094655F.MOVとFILE201201-100155F.MOV, FILE201201-102827F.MOVとFILE201201-104327F.MOVがセットになります。
では、繋げて行きます。
ls > tmp.txt cp tmp.txt concat1.txt cp tmp.txt concat2.txt vim concat1.txt vim concat2.txt
concat1.txt の内容を以下のようにします。
file 'FILE201201-094655F.MOV' file 'FILE201201-100155F.MOV'
あとは ffmpeg でくっつけたり、単にmp4*3に変換したりします*4。
ffmpeg -safe 0 -f concat -i concat1.txt 20201201_1.mp4 ffmpeg -i FILE201201-101918F.MOV 20201201_2.mp4 ffmpeg -safe 0 -f concat -i concat2.txt 20201201_3.mp4
次にGPSログをGPX形式で用意します。僕の場合はGarmin Connectからダウンロードしますが、GPX以外のログしかない場合はGPSBabelなどを使って変換をしてください。
ファイル名を整理して、こんな感じになるようにします。
$ ls *.gpx *.mp4 20201201_1.gpx 20201201_1.mp4 20201201_2.gpx 20201201_2.mp4 20201201_3.gpx 20201201_3.mp4
これが今回の入力ソースになります。
次にGPXファイルを編集します。
vim 20201201_1.gpx
GPXの最初のポイントを動画ファイルの最初の時間になるよう調整します。1秒ぐらいの狂いなら問題はないと思います。
次に Mapillary Tools を導入します。
macOSであればzipファイルを展開するだけで動作します。*5
今回は ~/bin/mapillary_tools に保存をしています。
あとはvideo_processingとuploadを行います。処理中にmapillaryの認証がありますのでそこは適当に行ってください。
まずはvideo_processingです。この処理は --advanced オプションをつける必要があります。
~/bin/mapillary_tools video_process --advanced \ --geotag_source gpx \ --geotag_source_path 20201201_1.gpx \ --interpolate_directions \ --video_import_path 20201201_1.mp4 \ --user_name smellman \ --overwrite_all_EXIF_tags \ --summarize \ --use_gps_start_time
実行すると mapillary_sampled_video_frames というディレクトリにファイルが生成されます。
この中で特に重要なのが --use_gps_start_time オプションです。このオプションでGPXの時間を開始時間として利用するようになります。
正しく座標が割り当てられたかは実際に地図で見てみる必要があります。macOSならプレビューアプリで参照できます。大まかに目立つ位置が正しく座標がついていれば問題ないです。
あとはアップロードを行います。
~/bin/mapillary_tools upload --import_path mapillary_sampled_video_frames/20201201_1 ~/bin/mapillary_tools upload --import_path mapillary_sampled_video_frames/20201201_2 ~/bin/mapillary_tools upload --import_path mapillary_sampled_video_frames/20201201_3
以上で終了です。