SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|09|10|11|12|
2026|01|02|03|

2026-03-18(Wed) ツーリングの経路の作画に目処

  先日からチビチビと取り付けを進めているBOIFUNのMT02というスマートモニタ/ドライブレコーダだが「GPSの内蔵されている有線リモコンを接続しても、ドラレコ映像の中に位置情報が出るだけなんだったら、いらんわい」と思いつつも、その実は「あーなってんじゃねぇかなぁ」と思っていたのだが、案の定「そーなっていた」のであった。

/media/MT02/video # ffprobe 20260314_143743_F.ts
  :
Input #0, mpegts, from '20260314_143743_F.ts':
  Duration: 00:03:00.03, start: 0.000000, bitrate: 12973 kb/s
  Program 1 
  Stream #0:0[0x1011]: Video: h264 (Baseline) ([27][0][0][0] / 0x001B), yuvj420p(pc, bt709, progressive), 1920x1080, 30 fps, 30 tbr, 90k tbn
  Stream #0:1[0x1100]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 16000 Hz, mono, fltp, 32 kb/s
  Stream #0:2[0x300]: Data: bin_data ([6][0][0][0] / 0x0006)

  ドラレコの動画ファイル中に、映像、音声に続く、第三のストリームが存在している。怪しい。実に怪しい。つうか、十中八九それだろよ。でも、どうやって取り出すんだろう。AIに訊きつつ、以下でbin_data.datに取り出すことができた。「-f data」がキモだった。

# ffmpeg -i 20260314_143743_F.ts -map 0:2 -c copy -f data bin_data.dat

  bin_data.datの中身はバイナリではあるが、ヌルを噛んでいるだけなので、以下でテキスト化できる。案の定、案の定なのであった。nmeaではないが、メッチャそのまんまやんか。

# cat bin_data.dat | strings
Viidure2026/03/14 05:37:41 N:35.080301 E:137.792569 53.0 km/h 40.81 171.90 10 x:-0.001 y:-0.001 z:-0.001
Viidure2026/03/14 05:37:42 N:35.080404 E:137.792673 54.3 km/h 40.29 171.40 10 x:-0.001 y:-0.001 z:-0.001
Viidure2026/03/14 05:37:43 N:35.080510 E:137.792773 53.1 km/h 38.11 171.10 10 x:-0.001 y:-0.001 z:-0.001
  :

  こうなればそれを既成のrunmapに渡すだけなのだが、このフォーマットを受け付けるクラスを追加で書くべきか。もしくは、このデータをnmeaに変換するフィルタを書くべきか。うぅむ、ここは後者だな。

  画像の説明

  ……ん? 山の中だな。左上の道には見覚えがあるが、こんなトコ走ってないし、走れるわけがない。変換ミス? しかし、どうして?

  結果、bin_data.datの表現に間違いはなかった。nmeaの側の単位が「分」だったのが原因だ。137.792569は、13779.2569ではなく、(137*100)+(0.792569*60)なのだ。いやでも区切りもなくそこで60進法とつながってんのはどうなのよ。まぁいいけど。

  画像の説明

  直したらちゃんと道の上に載るようになった。よっしゃよっしゃ。

  画像の説明

  違う場所でもちゃんと描画されることを確認。後日、ちゃんとしたコードに仕上げてコミットするとにして、今日はここまで。