まえからしたかった,Processingでのキャプチャに成功したから,
今度は,それをビデオ形式で保存してしまおうという,お話.


import processing.video.*;

Capture cam;
MovieMaker mm;

void setup() {
  size(320,240);  
  cam = new Capture(this, width, height);
  mm = new MovieMaker(this,320,240,"test.mov",30,MovieMaker.H263,MovieMaker.HIGH);
}

void draw() {
  int sum = width * height;
  if (cam.available() == true) {
    cam.read();
    cam.loadPixels();
    mm.addFrame();
    
    image(cam, 0, 0);
  }
} 
  void keyPressed() {
    if(key == ESC){
      mm.finish();
    }
  }

先日のコードに付け加えたのは,MovieMakerクラス

本家のリファレンスを意訳すると.

このクラスでは,ProcessingプログラムからQuickTimeムービを作ることができます.
パラメータの設定次第で,サイズやフォーマットの違うムービを作ることができます.
addFrame()でフレームを追加してゆき,最後にfinish()でムービファイルを閉じます.
このfinish()を飛ばすことは許されません,


今回はProcessingに終了シグナルを送るESCキーが押された場合はmovieも閉じるというようにしました.
結構微妙かな?(Processingが先に終わるか?finish()が先に呼ばれるか...)と思いましたが
案外うまく動いているようです.