As animações geradas no Processing podem ser salvas em tempo real no formato vídeo digital (padrão Quicktime).
Neste código desenhamos com o mouse:

void setup() {
background(204);
}

void draw() {
ellipse(mouseX, mouseY, 20, 20);
}

Para salvar cada momento da interação devemos usar uma biblioteca especial processing.video.* , veja o novo código:

 

import processing.video.*;

MovieMaker mm;

void setup() {
  size(640, 480);
  mm = new MovieMaker(this, width, height, “drawing.mov”,30,MovieMaker.MOTION_JPEG_A,        MovieMaker.BEST,1);
 background(204);

}

void draw() {
   ellipse(mouseX, mouseY, 20, 20);
  mm.addFrame();
}

void keyPressed() {
if (key == ‘ ‘) {
mm.finish();
}

}

 

 

Explicando o código:

Primeiro importamos a biblioteca necessária para a geração do vídeo com import processing.video.*.

Criamos uma variável (mm) do tipo MovieMaker que armazena o novo vídeo que será gravado:

MovieMaker mm;

Dentro da função setup() configuramos o parâmetro desta varável:

 

mm = new MovieMaker(this, width, height, “drawing.mov”,30,MovieMaker.MOTION_JPEG_A, MovieMaker.BEST,1);

Note que os parâmetros determinam a largura, altura, nome do filme, frames por segundo (fps), codec para quicktime, qualidade e keyframeRate. Neste exemplo, estamos exportando um vídeo chamado “desenho.mov”com as dimensões iguais a do size(640,480).

Cada formato de vídeo digital tal como o Quicktime ou AVI possuem diferentes formas de compactação (codec). Em nosso exemplo, estamos usando o MOTION_JPEG_A , mas existem outros ideais para gráficos vetoriais como o ANIMATION.

A qualidade de compactação pode ser modificada como no parâmetro BEST e o intervalo de keyframes no último parâmetro setado em 1. Tanto a qualidade quanto o keyframerate influenciam no tamanho final do arquivo. Para maiores detalhes sobre codec e qualidade vejam em :

http://processing.org/reference/libraries/video/MovieMaker.html

 

Na função draw() temos ainda a linha mm.addFrame(); que é responsável pela cópia dos pixels da janela do Processing no vídeo que está sendo gravado.

Finalmente dentro da função keyPressed() temos mm.finish() que finaliza e salva a gravação no formato Quicktime (.mov). Para verificar a gravação, pressionamos a tecla de espaço e verificamos a pasta do sketch onde o vídeo deve estar gravado.

 

Um último detalhe: para o funcionamento do sketch é necessária a instalação do Quickime (download no site da Apple)

 

 

 

 

Tagged with: