OpenStreetMap で利用する写真データをムービーから生成

OpenStreetMap という,自由な地図をみんなで作ろうというプロジェクトがあります.
これは,GPS を持って道をトレースしつつ道路情報やお店の情報などをメモしておいて,PC 上のJOSM というソフトで反映するという流れなのですが,このとき写真データがあるとJOSM のcolorscheme というプラグインで撮影場所を確認出来ます.
そこで,ビデオデータを一定時間毎にはき出してあげればGPS を携帯しつつ単に撮影しながら道を走るだけで大雑把なデータが取れそうです.

ということで,ビデオデータから静止画を取得する方法を調べてみました.


撮影データは,SANYO Xacti DMX-HD700 で撮影した物です.
先ずは分解.ffmpeg で頭から1秒ごとに99枚抜き出してみました.

perl -e 'for($i=1;$i<100;$i++){ print `ffmpeg -i SANY0390.MP4 -vframes 1 -an -ss $i -s 1280x720 -f mjpeg $i.jpg`}'

これで抜き出すのには成功しましたが,これだけで72分ほどかかってしまいました….
出来上がったデータは結構小さく1枚あたり50kB 前後で全部で5MB 程となりました.

路面状況でぶれていなければ視認性も結構良く,看板などの文字も読めます.
走行速度にも依りますがコマ数ももっと減らせそうです.


後は,ビデオの尺の長さから抜き出す様にして,抜き出した画像のタイムスタンプを撮影時と合わせる必要があります.それは直ぐ出来るけど一番の問題は変換時間.
効率の良い方法はないもんですかねー.


以下は,頭の10枚です.
http://flickr.com/photos/matoken/sets/72157606334309143
12345678910

- OpenStreetMap
http:/www.openstreetmap.org/
- OpenStreetMap Japan | 自由な地図をみんなの手に
http:/www.openstreetmap.jp/

追記)
出来た!

$ time ffmpeg -i SANY0390.MP4 -s 1280x720 -f image2 -v codec mjpeg -r 1 "osm-%04d.jpg"
--snip--
real 3m43.875s
user 2m31.140s
sys 0m13.935s
$ ls osm*.jpg
osm-0001.jpg osm-0019.jpg osm-0037.jpg osm-0055.jpg osm-0073.jpg osm-0091.jpg osm-0109.jpg osm-0127.jpg
osm-0002.jpg osm-0020.jpg osm-0038.jpg osm-0056.jpg osm-0074.jpg osm-0092.jpg osm-0110.jpg osm-0128.jpg
osm-0003.jpg osm-0021.jpg osm-0039.jpg osm-0057.jpg osm-0075.jpg osm-0093.jpg osm-0111.jpg osm-0129.jpg
osm-0004.jpg osm-0022.jpg osm-0040.jpg osm-0058.jpg osm-0076.jpg osm-0094.jpg osm-0112.jpg osm-0130.jpg
osm-0005.jpg osm-0023.jpg osm-0041.jpg osm-0059.jpg osm-0077.jpg osm-0095.jpg osm-0113.jpg osm-0131.jpg
osm-0006.jpg osm-0024.jpg osm-0042.jpg osm-0060.jpg osm-0078.jpg osm-0096.jpg osm-0114.jpg osm-0132.jpg
osm-0007.jpg osm-0025.jpg osm-0043.jpg osm-0061.jpg osm-0079.jpg osm-0097.jpg osm-0115.jpg osm-0133.jpg
osm-0008.jpg osm-0026.jpg osm-0044.jpg osm-0062.jpg osm-0080.jpg osm-0098.jpg osm-0116.jpg osm-0134.jpg
osm-0009.jpg osm-0027.jpg osm-0045.jpg osm-0063.jpg osm-0081.jpg osm-0099.jpg osm-0117.jpg osm-0135.jpg
osm-0010.jpg osm-0028.jpg osm-0046.jpg osm-0064.jpg osm-0082.jpg osm-0100.jpg osm-0118.jpg osm-0136.jpg
osm-0011.jpg osm-0029.jpg osm-0047.jpg osm-0065.jpg osm-0083.jpg osm-0101.jpg osm-0119.jpg osm-0137.jpg
osm-0012.jpg osm-0030.jpg osm-0048.jpg osm-0066.jpg osm-0084.jpg osm-0102.jpg osm-0120.jpg osm-0138.jpg
osm-0013.jpg osm-0031.jpg osm-0049.jpg osm-0067.jpg osm-0085.jpg osm-0103.jpg osm-0121.jpg osm-0139.jpg
osm-0014.jpg osm-0032.jpg osm-0050.jpg osm-0068.jpg osm-0086.jpg osm-0104.jpg osm-0122.jpg osm-0140.jpg
osm-0015.jpg osm-0033.jpg osm-0051.jpg osm-0069.jpg osm-0087.jpg osm-0105.jpg osm-0123.jpg osm-0141.jpg
osm-0016.jpg osm-0034.jpg osm-0052.jpg osm-0070.jpg osm-0088.jpg osm-0106.jpg osm-0124.jpg osm-0142.jpg
osm-0017.jpg osm-0035.jpg osm-0053.jpg osm-0071.jpg osm-0089.jpg osm-0107.jpg osm-0125.jpg
osm-0018.jpg osm-0036.jpg osm-0054.jpg osm-0072.jpg osm-0090.jpg osm-0108.jpg osm-0126.jpg