Continuando con el tutorial "Reproductor de videos en java", en esta cuarta entregase hace un alto para dar una pequeña explicacion sobre la dimension y conformacion del proyecto, asi como de un poco sobre la "encapsulacion" propia de lenguajes de Objetos.
Hace su aparicion la clase "playlistclass.java", encargada de la gestion de una "lista de reproduccion", como esta clase no tiene que ver directamente con lo que es la API de JMF, decidi no explicarla en video, sino mas bien colocar el codigo integro de la clase que esta por demas comentando.
Esta largito la clase, pero es realmente sencilla.
package reproductorjava;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListModel;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class playlistclass {
private Vector urlCompleto;
private Vector name;
private static FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo de video","mpg","mpeg");
public playlistclass(){
//se crea dos vectores para almacenar la "url completa" y el "nombre" del archivo de video
// los vectores tienen una capacidad inicial de 10 y un incremento de 2
urlCompleto = new Vector(10,2);
name = new Vector(10,2);
}
/* Añade a los vectores la url y el nombre de un archivo
*/
public void setVideo(URL u, String s){
urlCompleto.addElement(u);
name.addElement(s);
}
/* Dado el nombre de un archivo de video, este es buscado en el vector y si
es encontrado y removido de "ambos vectores" */
public void removervideo(String s){
name.removeElement(s);
Enumeration n = name.elements();
while(n.hasMoreElements()){
String elemento=(String)n.nextElement();
if(elemento.equals(s)){
urlCompleto.remove(elemento);
break;
}
}
}
/* Dado un string con el nombre de un video, se busca su posicion en el vector
* y luego se retorna la posicion de la URL completa
*/
public URL getURL(String s){
Enumeration n = name.elements();
URL turl=null;
int d = 0;
while(n.hasMoreElements()){
String elemento=(String)n.nextElement();
if(elemento.equals(s)){
turl = (URL) urlCompleto.elementAt(d);
break;
}
d++;
}
return turl;
}
/* devuelve la url dado la posicion del mismo */
public URL getLastURL(int d){
URL turl = (URL) urlCompleto.elementAt(d);
return turl;
}
/* Metod que muestra una ventana de dialgo para añadir "archivos" al playlist
* hace uso del metodo anterior "setvideo"
*/
public void Dialog(DefaultListModel modelo){
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);
int result = fileChooser.showOpenDialog(null);
if ( result == JFileChooser.APPROVE_OPTION ){
try {
//se asigna a mediaURL el archivo de video seleccionado
URL url = fileChooser.getSelectedFile().toURL();
String namefile = fileChooser.getSelectedFile().getName();
//coloca video
setVideo(url, namefile);
//añade a playlist
modelo.addElement(namefile);
}
catch (IOException ex) {
Logger.getLogger(playlistclass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
Resumen: Esta clase "playlistclass.java", crea un playlisy utilizando vectores, dada la magnitud del proyecto, este simple playlist, solo almacena la URL del archivo de video en un vector, y en otro vector almacena el nombre del video para su posterior uso. Para utilizar esta clase en netbeans y en otros IDE similares, esta clase presenta una ventana de dialogo (JFileChooser), el cual hace uso de un filtro (FileNameExtensionFilter) para mostrar solamente videos con extension MPG. Asi mismo contiene los metodos necesarios para le gestion del Playlist (Añadir, remover, y obtener la URL de los archivos almacenados)
El proyecto no es complicado, hasta ahora solo hace uso de una clase "Paneldevideo.java" y de una clase de tipo Interfaz, que gracias a la encapsulacion podemos cambiarla facilmente
[ENLACE DE DESCARGA ACTUALIZADO 01/03/2015]
El codigo fuente del proyecto mas archivos de ayuda, esta aqui abajo
El código no esta optimizado y claro que puede ser mejorado, se aceptan criticas constructivasENJOY!!!
me encantaron tus tutoriales
ResponderEliminarestan geniales gracias por
ayudar a entender un poco de
la programacion orientada a objetos
Te agradezco un monton, te repasaste!! eres muy buena persona y un MASTER!! Gracias!!!!
ResponderEliminargracias por los tutoriales pero podria hacerme un favor. podrias subir el link a otro gestor de descargas es que frakeshare no me permite hacer la descarga
ResponderEliminarhey hpombre le agradesco por todos sus tutoriales aprecio mucho que haya programadores tan buenos que difundan sus conocimientos sim embargo en este ejemplo tengo un problema
ResponderEliminarimportjavax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
en las clase paneldevideo.java me dice que no se encuentra javax.media
la cosa esque ya instale el jmf
ResponderEliminarmi correo es lee_general@hotmail.com
gracias
Gracias por quitarme lo ignorante y tu pag esta de primera dejame felicitarte y claro que no sere una rata pondre lo agradecimientos correspondientes creeme y pues un saludo att. Gato universidad ITSSMT
ResponderEliminargracias por el tutorial estan excelente pero te agradeceria si lo treparas a otro servidor ya que ese en el que esta no me deja bajarlo si no es mucho la molestia claro
ResponderEliminarhola el tutorial esta excelente pero podrias volverlo a subir o treparlo a otro servidor porque en el que esta no medeja vajarlo te lo agradeceria mucho
ResponderEliminarHola andaba buscando info sobre como crear un reproductor mp3 en java y vi el tema de reproductor de video, quisiera saber si puedes publicar una entrada donde expliques como se realiza el reproducto wno si se puede claro. seria de mucha aiuda ia que recien me inicio en el mundo de java ^^... gracias.
ResponderEliminareii ola me ayudaste muchoo... pero ps nose si puedas aser lo mismo pero con musica.. el detalle es que no m sale con una lista.. y staba viendo stee.. pero no se aplicarlo soy nuevoo pliss
ResponderEliminarmuy bueno el reproductor seria interessante que hicieras un reproductor de java que reproduzca archivos swf
ResponderEliminarHola q tal esta sabes esta chevere esta aplicación, pero tengo una duda al momento de reproducir el video en formato mpg una vez q la minimizas y vuelves a ver la aplicación, el video desaparece pero sigue sonando el sonido del video, q solucion le puedes dar??...
ResponderEliminarah utilizas convertidor para pasar de un formtato a formato mpg... : )
Mi correo: reneguido_18@hotmail.com
GRACIAS POR SU INFORMACIÓN
ResponderEliminarLA VERDAD SE BE QUE ES UNA PERSONA QUE SI CONOCE DE ESTO
ESPERO PODER PONERME EN CONTACTO DIRECTO CON USTED PARA PODER APRENDER
MAS AQUÍ DE JO MI CORREO
romeo1_cid@hotmail.com
si yo tambien aqui esta mi correo carlosmanuel635@yahoo.com
ResponderEliminaresta roto el link de descarga podrian subirlo de nuevo
ResponderEliminarme podrian ayudar con el codigo para los botones agragar y remover,
ResponderEliminarvideos al reproductor en java.... tengo q entrgar un proyecto hoy, les agradeceria mucho su ayuda.!!!
Hola mouse que tal, primero que todo genial tu blog, super util, mi duda es con los codigos del reproductor, ya que el que hice con los videos tutoriales, y los que descargue (modificado y sin modificar) me dan todos el siguiente error:
ResponderEliminarUnable to handle format: MPEG, 320x240, FrameRate=25.0, Length=115200
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at reproductorjava.paneldevideo.(paneldevideo.java:35)
at reproductorjava.reproductor.jButton2ActionPerformed(reproductor.java:246)
at reproductorjava.reproductor.access$400(reproductor.java:10)
at reproductorjava.reproductor$6.actionPerformed(reproductor.java:135)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
si le puedes arrojar algo de luz al asunto genial, muchas gracias
ATT: Fabian
mi correo: Fabian_nav01@_hotmail.com
tengo problemas con lo del model llevo dias hacienmi propio reprducctor cn esto tutos pero solo teng oese problema
ResponderEliminary rl de la url dela GUI
excelente aporte... estoy haciendo algo similar con tu proyecto lo he modificado para poder realizar otro similar para mostrar un listado de expedio de fichas..
ResponderEliminarde tal modo el sistema ya puede almacenar una lista extensa de videos, mostrar las fichas correspondientes, mensajes.
Esto por una parte.. pero encontre mi duda cuando quise reproducir toda mi lista de videos lo cual no me lo hace... no encontre un metodo el cual me tome todo el array de tipo url[] y este pueda reproducir una despues del otro sin tener q estar presionando play play play etc...
eso podria ser una solucion.. eh pensado en otro que controlar en la clase "videopanel" el tiempo de un video y al finalizar... comenzar con el otro.. en fin.. eso en teoria quisiera q me dieras una mano tan solo en como poder reproducir una lista de videos
mi email: superayoria@yahoo.com
un saludo de mi parte jcmouse y espero respuesta =)
si la API de JM tiene es opcion perfecto, si no la tiene, pues si, habria que controlar la duraccion de las canciones para ir reproduciendo una despues de otra
ResponderEliminar