Processing – video

⊥ Źródło: Video, Daniel Shiffman

VIDEO_TEST1 –  odtwarzamy film w formacie “mov”
Importujemy bibliotekę: Video Autor: The Processing Foundation
Przeciągamy i upuszczamy plik “testowy.mov” na okno programu, dzięki czemu trafi on do foldera “data” w katalogu szkicu.

//VIDEO_TEST1

import processing.video.*; 

// Step 1. Declare a Movie object.
Movie movie; 

void setup() {  
  size(500,500);  

  // Step 2. Initialize Movie object. The file "testowy.mov" should live in the data folder.
  movie = new Movie(this, "testowy.mov");  
 

  // Step 3. Start playing movie. To play just once play() can be used instead.
  movie.loop();
}

// Step 4. Read new frames from the movie.
void movieEvent(Movie movie) {  
  movie.read();
}

// Step 5. Display movie.
void draw() {
  image(movie, 10, 10);
}

VIDEO_TEST2 –  dodajemy nieco chaosu

// VIDEO_TEST2

import processing.video.*;

Movie movie;

void setup() {
  size(500, 500);  
  background(255);  
  movie = new Movie(this, "testowy.mov");
  println(movie.duration());
  movie.loop();
}

void movieEvent(Movie movie) {  
  movie.read();
}

void draw() {  
  // Ratio of mouse X over width
  float ratio = random(0.05,0.95); // przypadek zmienia punkt odtwarzania filmu
  println(ratio);

  if(random(0,1)<0.1) // zmniejszam częstotliwość zmian
    {
    movie.jump(ratio * movie.duration()); 
    } 
  
  image(movie, 10, 10);

}

VIDEO_TEST3 –  po naciśnięciu myszki odtwarzamy losowo fragmenty filmu dodatkowo zmieniając tempo odtwarzania.

// VIDEO_TEST3

import processing.video.*;
Movie myMovie;

float tempo=random(0.125,1.0);
float xtime=0.0;

void setup() {
  size(500, 500);  
  background(255); 
  frameRate(30);


  myMovie = new Movie(this, "testowy.mov");
  myMovie.speed(0.25);
  myMovie.loop();

}

void draw() {
  if (myMovie.available()) {
    myMovie.read();
    xtime=random(myMovie.duration());
tempo=random(0.125,1.0);
  }
  image(myMovie, 10, 10);
}

void mousePressed() {

  myMovie.speed(tempo);
  myMovie.jump(xtime);
}

VIDEO_TEST4 – dodałem pasek, który pokazuje w którym momencie filmu jesteśmy

//VIDEO_TEST4

import processing.video.*;
Movie myMovie;

void setup() {
  size(480, 480);
  frameRate(30);
  myMovie = new Movie(this, "testowy.mov");
  myMovie.play();
}

void draw() {
  //background(255);
  if (myMovie.available()) {
    myMovie.read();
  }
  image(myMovie, 0, 0);
  // Draws a line on the screen
  // when the movie half-finished
  float md = myMovie.duration();
  float mt = myMovie.time();
  float x = mt*width/md;
  
  strokeCap(SQUARE);
  strokeWeight(10);  // Thicker
  stroke(255);
  line(0, height-6, x, height-6);
  
}
MATERIAŁY DODATKOWE

Biblioteka pozwalająca eksportować rezultaty naszych działań jako plik wideo (nie sprawdziłem jeszcze):
hamoid/video_export_processing