こんにちは、VOYAGE GROUPの水越(@Akiyah)です。

株式会社VOYAGE GROUPにはVOYAGE CUP(去年まではナビリンピック)という社内の運動会・体育祭といったイベントがあります。6チームに分かれて、綱引きや大縄跳び、10人11脚やリレーなどで戦い、優勝を争うというイベントです。
これ、ガチです。私は今回が初めての参加だったのですが、当日の二週間ほど前から昼休みや夜に集まってチームで練習したり、インターネットで綱引きのコツの動画を探して共有したり、みんなで本気で勝ちに行っていました。
私の所属する紫チームは6チーム中3位で、残念ながら優勝は逃してしまったのですが、来年こそ、と言う気持ちです。

さて、そのVOYAGE CUPにGoProというカメラを持ち込んで体育館の隅に置き、インターバル撮影(微速度撮影)をしてみました。VOYAGE CUPが始まる前に設置し、10秒に1回撮影するように設定して置いておきました。

IMGP9154


GoProは170度の広角撮影ができるので、一枚の写真はこんな風になります。

0165

夕方VOYAGE CUPが終わり、ヘトヘトになって着替える前にカメラを回収しました。家に帰って、カメラのデータを確認したら、写真が1126枚撮れていました!やった!
と思ったけど、あれ、、、10秒×1126/60/60≒3.1時間、、、朝から昼頃までしか撮れていないじゃん。。。
改めて計算してみると4GBのSDカードを使っていたので、一枚2.7MBの画像は約1500枚(約4時間)しか入らないわけで、どのみち夕方までは撮れなかったのです。まあいいか。

次の手順は1126枚の静止画の動画変換です。今回はRubyとffmpegを使いました。
まず、ffmpegで処理できるように1126枚のファイルを0001から始まる連番のファイル名にします(ffmpegは0001から始まる連番でないといけないそうなのです)

ruby -e 'Dir.glob("in/*").sort.each_with_index do |f, i| `cp #{f} out/#{(i+1).to_s.rjust(4,"0")}.jpg` end'

こんなRubyのワンライナーを書いて、inフォルダにある画像ファイルをファイル名を変更しながらoutputフォルダにコピーしました。そして次はffmpegの番です。

ffmpeg -i %04d.jpg -b 1200 -aspect 4:3 -f avi -vcodec mpeg4 output.avi 

しばし待って、、、できた!



45秒の動画になりました。ちょこまか動いていますねー。 だけど広角すぎてちっちゃいですね。トリミングしましょう。
ffmpeg -i %04d.jpg -b 1200 -aspect 4:3 -f avi -vcodec mpeg4 -croptop 486 -cropbottom 486 -cropleft 648 -cropright 648 output.avi

ffmpegのコマンドラインに-crop*をつけて上下左右を1/4づつ削って、っと。



できた!
今度はいい感じに体育館全体が画面に広く映っています。完成〜

参考