Vídeo
Es necesario tener instalado el QuickTime y el los ordenadores con SO windows es necesario instalar VDIG
http://www.eden.net.nz/7/20071008/
Primeros pasos.
Leer y mostrar una imagen capturada desde una cámara, con capture, usaremos capture.list () para mostrar los nombres de los dispositivos conectados.
import processing.video.*;
Capture cam;
void setup() {
size(640, 480);
String[] cameras = Capture.list();
if (cameras.length == 0) {
println("No hay cámara disponible");
exit();
} else {
println("Cámara disponible");
for (int i = 0; i < cameras.length; i++) {
println(cameras[i]);
}
// Puede usarse una de las cámaras inicializando directamente llamando u a un elemento del array list():
cam = new Capture(this, cameras[0]);
cam.start();
}
}
void draw() {
if (cam.available() == true) {
cam.read();
}
image(cam, 0, 0);
// puede escribirse también como:
//set(0, 0, cam);
// si no usamos manipulación de la imagen o tint.-
}
Clase: Capture
tiene los,siguientes métodos:
available() Devuelve "true" cuando cuando nuevo frame del vídeo estaría disponible
start() Comienza a capturar frames del dispositivo seleccionado
stop() parar la captura
read() Leer el frame actual
list() lista de los dispositivos de captura disponibles
Nombre: read()
Ejemplo
import processing.video.*;
Capture cam;
void setup() {
size(200, 200);
cam = new Capture(this);
cam.start();
}
void draw() {
if (cam.available()) {
// Reads the new frame
cam.read();
}
image(cam, 0, 0);
}
Descripción: Lee el el frame actual.
Sintaxis:
cam.read()
Parámetros :
cam Variable del tipo de Capture
Nombre: available()
Ejemplo
import processing.video.*;
Capture cam;
void setup() {
size(200, 200);
cam = new Capture(this);
cam.start();
}
void draw() {
if (cam.available()) {
// Reads the new frame
cam.read();
}
image(cam, 0, 0);
}
Descripción: Devuelve "true" cuando un Nuevo frame está disponible para ser leído.
Sintaxis:
vid.read()
Parámetros :
mov Variable del tipo de Capture
Nombre list()
Ejemplo:
import processing.video.*;
Capture cam;
void setup() {
size(640, 480);
String[] cameras = Capture.list();
if (cameras.length == 0) {
println("No hay cámaras disponibles.");
exit();
} else {
println("Cámaras disponibles:");
for (int i = 0; i < cameras.length; i++) {
println(cameras[i]);
}
}
}
Sintaxis: .list()
Devuelve String[]
Nombre start() stop()
import processing.video.*;
Capture cam;
void setup() {
size(200, 200);
cam = new Capture(this);
cam.start();
}
void draw() {
if (cam.available()) {
// Reads the new frame
cam.read();
}
image(cam, 0, 0);
}
void mousePressed() {
cam.stop();
}
Sintaxis: .list() .stop()
Devuelve void
Play()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
myMovie = new Movie(this, "ozone.mov");
myMovie.play();
}
void draw() {
image(myMovie, 0, 0);
}
void movieEvent(Movie m) {
m.read();
}
play(), pone en play la película y para en el último frame
pause()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
background(0);
myMovie = new Movie(this, "totoro.mov");
myMovie.loop();
}
void draw() {
background(255);
image(myMovie, 0, 0);
}
void movieEvent(Movie m) {
m.read();
}
void mousePressed() {
myMovie.pause();
}
void mouseReleased() {
myMovie.play();
}
con pause() se para la película y con play() continuara donde se ha parado
stop()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
background(0);
myMovie = new Movie(this, "totoro.mov");
myMovie.play();
}
void draw() {
background(255);
image(myMovie, 0, 0);
}
void movieEvent(Movie m) {
m.read();
}
// Se para la película al presionar
void mousePressed() {
myMovie.stop();
}
con stop() se para la película y con play() la película empezará en el inicio.
loop()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
myMovie = new Movie(this, "ozone.mov");
myMovie.loop();
}
void draw() {
image(myMovie, 0, 0);
}
void movieEvent(Movie m) {
m.read();
}
La película comienza de nuevo cuando termina.
noLoop()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
myMovie = new Movie(this, "ozone.mov");
myMovie.loop();
}
void draw() {
image(myMovie, 0, 0);
}
void movieEvent(Movie m) {
m.read();
}
void mousePressed() {
myMovie.noLoop();
}
Con noLoop() se para la película al terminar, en el último frame
jump()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
frameRate(30);
myMovie = new Movie(this, "totoro.mov");
myMovie.loop();
}
void draw() {
if (myMovie.available()) {
myMovie.read();
}
image(myMovie, 0, 0);
}
void mousePressed() {
myMovie.jump(random(myMovie.duration()));
}
Con .jump(where) salta la película a una posición determinada en segundos de la película.
duration()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
frameRate(30);
myMovie = new Movie(this, "totoro.mov");
// Prints the duration of the movie
println(myMovie.duration());
myMovie.play();
}
void draw() {
if (myMovie.available()) {
myMovie.read();
}
image(myMovie, 0, 0);
}
.duration() devuelve la longitud de la película en segundos. Si la película dura 1 minuto y 20 segundos el valor que se devuelve es de 80.0.
time()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
frameRate(30);
myMovie = new Movie(this, "totoro.mov");
myMovie.loop();
}
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();
if (mt > md/2.0) {
line(0, 0, width, height);
}
}
.time() devuelve la localización del punto de lectura de la película.
speed()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
frameRate(30);
myMovie = new Movie(this, "totoro.mov");
myMovie.speed(4.0);
myMovie.loop();
}
void draw() {
if (myMovie.available()) {
myMovie.read();
}
image(myMovie, 0, 0);
}
.speed(irate) describe la velocidad de reproducción de la película. Con un valor 2 la película se reproducira al doble de velocidad, con 0.5 será a la mitad de la velocidad, y con -1 la película se ejecuta al revés a velocidad normal.
frameRate()
import processing.video.*;
Movie myMovie;
void setup() {
size(200, 200);
frameRate(30);
myMovie = new Movie(this, "totoro.mov");
myMovie.frameRate(2);
myMovie.loop();
}
void draw() {
if (myMovie.available()) {
myMovie.read();
}
image(myMovie, 0, 0);
}
.frameRate(ifps) Número de frame por segundos
Detectar cámaras disponibles
import processing.video.*;
Capture cam;
void setup() {
size(640, 480);
String[] cameras = Capture.list();
if (cameras.length == 0) {
println("no hay cámara disponible.");
exit();
} else {
println("Cámaras disponibles:");
for (int i = 0; i < cameras.length; i++) {
println(cameras[i]);
}
// La cámara se inicializa con un elemento de la lista de disponibles
cam = new Capture(this, cameras[0]);
cam.start();
}
}
void draw() {
if (cam.available() == true) {
cam.read();
}
image(cam, 0, 0);
}