Bonjour
Je suis en train de faire un petit programme assez simple. Il s'agit de lire des fichiers vidéos, les uns après les autres de façon aléatoire. Tout fonctionne, si ce n'est que l'image est partie faire un tour au bistrot. Le son, lui, répond bel et bien à l'appel. Quelqu'un aurait une idée ?
Voici le code :
import processing.video.*;
int nombreSequences = 3;
Movie[] video = new Movie[nombreSequences];
int index;
float tempsSequence;
boolean impulsion = false;
void setup() {
size(300, 151, P2D);
frameRate(24);
for (int i = 0; i < video.length; i++) {
video[i] = new Movie(this, "test0" + i + ".mov");
video[i].pause();
println(video[i].duration());
}
}
void movieEvent(Movie m) {
m.read();
}
void draw() {
background(0);
bouclerVideos();
image(video[index], 0, 0);
}
void bouclerVideos() {
if (mousePressed) {
impulsion = true;
}
while(impulsion) {
index = int(random(-1, video.length));
tempsSequence = video[index].duration();
println("TS !!! : " + tempsSequence);
video[index].jump(0);
video[index].play();
println("Lecture séquence n°" + index);
while(video[index].time() < tempsSequence){
//println("ça joue la séquence " + index);
}
println("CHANGEMENT SEQUENCE");
}
}
Merci et bonne soirée !
Nota: les balises "code" ne semblent pas fonctionner… je préfère prévenir ;-)
Dernière modification par jojolaglaise (2015-12-02 22:03:49)
Hors ligne
Bonjour,
Dans ta méthode bouclerVideos() il y avait une boucle malvenue.
Pour l'utilisation de la souris il est simple d'utiliser les méthodes mousePressed(), mouseReleased() …
Ce sont des méthodes d'interruption, c'est-à-dire qu'elles sont appelées en dehors de la boucle principale dès qu'un évènement de la souris se produit.
J'ai mis les vidéos en boucle grâce à la méthode loop().
Voici ce que je te propose :
import processing.video.*; int nombreSequences = 3; Movie[] video = new Movie[nombreSequences]; int index; float tempsSequence; void setup() { size(300, 151, P2D); frameRate(24); for (int i = 0; i < video.length; i++) { video[i] = new Movie(this, "test0" + i + ".mov"); video[i].pause(); println(video[i].duration()); } } void movieEvent(Movie m) { m.read(); } void draw() { background(0); image(video[index], 0, 0); } void mousePressed() { video[index].pause(); index = int(random(0, video.length)); tempsSequence = video[index].duration(); println("TS !!! : " + tempsSequence); video[index].jump(0); video[index].loop(); println("Lecture sequence n " + index); println("CHANGEMENT SEQUENCE"); }
Hors ligne
Merci beaucoup!
Mais j'ai du mal m'expliquer, en réalité, ce n'est pas cela que je recherchai à faire, je cherchais à automatiser le chargement aléatoire des vidéos. On clique une fois et hop! On laisse tourner le programme, sans avoir à cliquer. Les vidéos ne bouclent pas forcément sur elles même, on passe d'une vidéo à l'autre. Mais je m'y recolle, je pense que je suis près du but!
Une bonne soirée.
Hors ligne
Bonsoir,
Je ne sais pas si tu as réussi à te débrouiller, mais voici ma proposition :
import processing.video.*; int nombreSequences = 3; Movie[] video = new Movie[nombreSequences]; int index; float tempsSequence; boolean test; void setup() { size(300, 151, P2D); frameRate(24); for (int i = 0; i < video.length; i++) { video[i] = new Movie(this, "test0" + i + ".mov"); video[i].pause(); println(video[i].duration()); } test = false; } void movieEvent(Movie m) { m.read(); } void draw() { background(0); if (test) { if ((video[index].duration() - video[index].time()) < 0.2) { changement(); } image(video[index], 0, 0); } } void mousePressed() { if (!test) { changement(); test = true; } } void changement() { index = int(random(0, video.length)); tempsSequence = video[index].duration(); println("TS !!! : " + tempsSequence); video[index].jump(0); video[index].loop(); println("Lecture sequence n " + index); println("CHANGEMENT SEQUENCE"); }
Hors ligne