■
ということで,次はウィンドウ内の状態をmov形式で出力してみようと言うお話.
なんとも素敵なことに,Open->Examples->Libraries->Video(MovieMaker)->DrawingMovie
に目的の内容のサンプルが含まれている.
import processing.video.*; MovieMaker mm; void setup() { size(320, 240); //非圧縮で15frame/sec(1秒あたり15枚撮影する) mm = new MovieMaker(this, width, height, "drawing.mov"); // もしくは,圧縮形式やフレームレートを編集したいのであれば,以下のように設定すれば良い //mm = new MovieMaker(this, width, height, "drawing.mov", 30, // MovieMaker.ANIMATION, MovieMaker.HIGH); background(160, 32, 32); } void draw() { stroke(7, 146, 168); strokeWeight(4); // マウスがクリックされれば描く if (mousePressed) { line(pmouseX, pmouseY, mouseX, mouseY); } //ムービにウィンドウの内容を録画する mm.addFrame(); } void keyPressed() { if (key == ' ') { // もしスペースバーが押されれば録画を終了する mm.finish(); //ファイルを書き上げて,かつプログラムを終了する. exit(); } }
exit();って関数があったんだね(冷静に考えれば当然だけど...)
フレームレートって言うのは,1秒あたりに何枚撮影するかという話.
動画と言っても,デジタルの世界では結局は紙芝居.
だから,1秒かんに何枚紙芝居を用意するかっていうのを決めなきゃダメ.
もちろん多ければ多い方が良いけど,必要以上に多くても意味がない.
表示しているモニタの垂直周波数と一致しているのが理想
確かアナログテレビが30fps(厳密には29.97fps)だから,それぐらいあれば人間の目には十分.
世の中には,これを極限まで高めて超高速カメラなんてのを作っている人もいるけど,
それはまた別のおはなし...