Video Multidisplay

En este ejemplo de programa HOST se reproduce un fichero de vídeo (video1.mp4) en pantalla 1, y cuando este termina se reproduce otro video “video2.mp4”. Cuando el segundo video acaba se repite el proceso.

Para que funcione, es necesario colocar los ficheros de vídeo “video1.mp4” y “video2.mp4” dentro de una carpeta llamada “video” dentro de la carpeta “assets” de cada display.

Fichero displays.xml

<xml>
<virtualDisplay width="1280" height="768"> 
 <display id="1" x="0" y="0" width="1280" height="768" />
</virtualDisplay>
</xml>

Codigo Host en Proccessing

int ANCHO=1280; //definir valores segun tamaño pantalla destino
int ALTO=768;

TACAPI miAPI;
DisplaysHost displaysClient;

int status=0;

void setup() {
 
 // Keystone will only work with P3D or OPENGL renderers, 
 // since it relies on texture mapping to deform
 //fullScreen( P3D);
 size(80, 60, P3D); 
 frameRate(16);
 
 //definicion de la API
 miAPI = new TACAPI();
 
 //virtual screens
 displaysClient = new DisplaysHost("host"); 
 
 //parar los videos
 displaysClient.pararVideo("video1.mp4");
 displaysClient.pararVideo("video2.mp4");
 
}

void draw() {
 //Programacion Juego 
 displaysClient.beginDraw(); 
 switch (status) {
 case 0:
 displaysClient.reproducirVideo("video1.mp4","play",0,0,1280,768);
 break;
 case 1:
 displaysClient.reproducirVideo("video2.mp4","play",0,0,1280,768);
 break;
 }
 
 displaysClient.endDraw();
 
}

void eventoTAC(TAC ta) {
 //tratamiento de tacs
 
}

void mensajeRecibido(OscMessage theOscMessage) {
 //tratamiento mensaje osc
 println("recibido", theOscMessage.addrPattern());
 if (theOscMessage.addrPattern().equals("/host/movieEnd")) {
 String video=theOscMessage.get(0).stringValue();
 println("video=", video);
 if (video.equals("video1.mp4")) {
 status=1;
 displaysClient.pararVideo("video1.mp4");
 }
 if (video.equals("video2.mp4")) {
 status=0;
 displaysClient.pararVideo("video2.mp4");
 } 
 }
}

void keyPressed() {
 switch(key) { 
 case ESC: 
 displaysClient.disconnect();
 super.stop();
 break;
 }
 }

Retos de aprendizaje


Documentación

  • Para añadir elementos multimedia a los gestores pintor, ver apartado Gestión de assets.

 

  • reproducirVideo

Este método permite reproducir un vídeo. Los parámetros que recibe son los siguientes:

String id: identificador del vídeo. Es imprescindible que coincida con el nombre del vídeo disponible en la carpeta del cliente que reproducirá que vídeo.

String modo: modo en el que se reproducirá el vídeo. Los valores posibles son: “play”, reproduce el vídeo una vez; o “loop”, reproduce el vídeo en bucle.

float x: posición de la esquina superior izquierda del vídeo en el eje X (2D).

float y: posición de la esquina superior izquierda del vídeo en el eje Y (2D).

int ancho: anchura que tendrá el vídeo al reproducirse.

int alto: altura que tendrá el vídeo al reproducirse.

  • pararVideo

Este método permite parar un vídeo. El parámetro que recibe es el siguiente:

String id: identificador del vídeo. Es imprescindible que coincida con el nombre del vídeo disponible en la carpeta del cliente que reproducirá que vídeo.

  • avanzarVideo

Este método permite avanzar a la parte del vídeo especificada. Los parámetros que recibe son los siguientes:

String id: identificador del vídeo. Es imprescindible que coincida con el nombre del vídeo disponible en la carpeta del cliente que reproducirá que vídeo.

float segundos: segundo del vídeo al que saltará.