Installer ffmpeg
Pour des raisons de facilité, nous utiliserons homebrew, un utilitaire en ligne de commande, pour installer.
1) se rendre sur le site de Homebrew et copier la ligne de commande se trouvant dans le haut de la page
2) la coller dans le terminal et appuyer "return". Homebrew s’installe sur votre ordinateur.
3) Une fois Homebrew installé, tapez la commande "brew install ffmpeg" dans le terminal. Cette fois ffmpeg s’installe.
Se référer à la documentation de ffmpeg pour plus d’infos
Une fois cette opération réalisée, on peut commencer à écrire notre script.
Installer la librairie pour Processing "Vidéo export"
Allez dans sketch/importer une librairie/Ajouter une librairie, tapez "video" dans le moteur de recherche et sélectionnez "Video export" dans la liste.
Un script d’essai
Pour tester la chose, un script de base :
import com.hamoid.*;
VideoExport videoExport;
int FPS = 30;
int duree=60; // durée en frame
void setup() {
size(768, 576);
noStroke();
frameRate(FPS);
videoExport = new VideoExport(this, "monexport.mp4");
videoExport.setFrameRate(FPS);
videoExport.startMovie();
}
void draw() {
background(255);
fill(random(255), 0, 0);
textSize(30);
text("WAOW", width/2, height/2 );
videoExport.saveFrame();
// stopper après le bon nombre de frames
if (frameCount > duree) {
videoExport.endMovie();
exit();
}
}
Ce qui donne ceci :
Un test avec l’ajout d’un son (et son analyse)
Voici un second test avec la librairie sound pour le chargement d’un son et son analyse en temps réel :
import processing.sound.*;
import com.hamoid.*;
VideoExport videoExport;
int FPS = 30;
SoundFile sample;
Amplitude rms;
float x,y;
void setup() {
size(768, 576);
x=random(width);
y=random(height);
// copier/coller depuis l'exemple "PeakAMplitude" de la librairie "Sound"
sample = new SoundFile(this, "14 Prelude No. 14.mp3");
sample.play();
rms = new Amplitude(this);
rms.input(sample);
frameRate(FPS);
videoExport = new VideoExport(this, "monexport.mp4");
videoExport.setFrameRate(FPS);
// associer le son
videoExport.setAudioFileName("14 Prelude No. 14.mp3");
videoExport.startMovie();
textAlign(CENTER, CENTER);
background(255);
}
void draw() {
// rms.analyze() renvoie un chiffre entre 0 et 1
// l'utiliser pour l'angle, la vitesse, la couleur
float vitesse=rms.analyze()*100;
stroke(map(rms.analyze(),0,0.6,255,0));
// noise plutôt que random
float angle=map(rms.analyze(),0,0.8,0,TWO_PI);
float next_x=x+(sin(angle)*vitesse);
float next_y=y+(cos(angle)*vitesse);
line(x,y,next_x,next_y);
x=next_x;
y=next_y;
if(x > width){ x-=width; }
if(x < 0){x+=width; }
if(y > height){ y-=height; }
if(y < 0){ y+=height; }
videoExport.saveFrame();
// arreter à la fin du morceau
if (!sample.isPlaying()) {
videoExport.endMovie();
exit();
}
}
Ce qui donne ceci :