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á.