OpenGLで作成したアニメーションを動画ファイルとして保存できないと、素材として使いにくい。とりあえずGoogle先生に聞いてみると、「ffmpegを使ってOpenGLのアニメーションから動画を作る方法(Mac)」というページが出てきたので、まねしてみた。
- バッファをファイルに書き出す。
- 書き出したファイルをjpegとかに変換する。(ImageMagick)
- 2.のファイルをつなげて動画にする。(ffmpeg)
という流れになるようだ。先ほどのページではMac Portsを使っているが、あれもこれもと入れるのは面倒なので、Gentoo Prefixで何とかした。以前の記事でGentoo PrefixのMaskを外そうとしていたのは、このためだったというわけ。
はじめと言うことで、円を等速直線運動させるOpenGLアニメーションを作成し、描画関数(display関数)内でglutSwapBuffersする直前に、バッファをPPMとしてファイルに落とした。バッファをファイルに書き出す実装は「ffmpegを使ってOpenGLのアニメーションから動画を作る方法(Mac)」に詳しく書かれている。
PPM→jpeg変換をImagemagickで行い、ffmpegで連結しaviファイルとした。この部分も上記のページ通りに実行している。
ただ、aviだとサイズが大きくなりがちなので、さらにmpegに変換した。これもffmpegを使っている。コマンドはこんな感じ
$ ffmpeg -i out.avi -b 900 -ab 96 sample.mpeg
別にQuickTimeでmovとして書き出してもいいと思う。
できあがったものはこんな感じ。
これだけだとなんてことないけど、まあできたってことで。
コメント