Consulta sobre JMF
Hola amigos, nuevamente estoy aquí consultando.
Usé un código para reproducir un video de internet, me reproduce con JMF y funciona perfecto...
Ahora lo que quiero hacer es que me repita la reproducción del mismo video, una y otra vez... lo que estoy pensando es que cuando acaba de reproducir el video (stop) mando a reproducir nuevamente (start) pero no puedo hacer esto, consulté en muchos foros, leí mucho las propiedades y eventos de JMF pero no encuentro nada que me pueda ayudar, les dejo el código si me pueden ayudar, gracias
private Player mediaPlayer;
private Component controls;
private Component video2;
public videopanel(URL mediaURL, Dimension d){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
// crea un reproductor especificando la direccion del archivo
mediaPlayer = Manager.createRealizedPlayer( mediaURL );
//mediaPlayer = Manager.createRealizedPlayer( new URL("file:/C:/seap/VIDEO.mpg") );
// optiene los componentes del video
video2 = mediaPlayer.getVisualComponent();
video2.setSize(d.width, d.height);
//optiene los componentes de control del reproductor
controls = mediaPlayer.getControlPanelComponent();
controls.setSize(d.width, 50);
if ( video2 != null )
add( video2 ); //agrega el componente del reproductor al panel
mediaPlayer.start(); // comienza la reproduccion
}// fin try
catch ( NoPlayerException noPlayerException ){
System.err.println( "No se encontro medio disponible, osea no se reproduce archivo" );
}// fin catch
catch ( CannotRealizeException cannotRealizeException ){
System.err.println( "no se pudo realizar el reproductor" );
} // fin catch
catch ( IOException iOException ){
System.err.println( "Error de lectura del archivo" );
} // fin catch
}
videopanel(String string, Dimension dp) {
throw new UnsupportedOperationException("Not yet implemented");
}
public Component controles (){
return controls;
}
public Component controles(Dimension d){
controls.setSize(d);
return controls;
}
// ***NUEVO*** actualiza las dimensiones del reproductor y sus controles
public void UpdateSize(Dimension d){
video2.setSize(d);
video2.setLocation(0,0);
controls.setSize(d.width, 50);
}
}
- Inicie sesión o regístrese para enviar comentarios
MediaPlayer
La clase MediaPlayer tiene el método setPlaybackLoop(boolean)
Gracias
Hola, sabes que leí un poco sobre el método.
Entiendo que esta es una propiedad del MediaPLayer en la que indica si debe reproducir repetidamente o parar la reproducción del video, pero en mi ccódigo quiero hacer esto:
mediaPlayer.setPlaybackLoop(); y no existe...
No sé que estoy haciendo mal, o necesito bajarme otra librería, con todo dejo el enlace donde leí esto:
http://docs.oracle.com/cd/E17802_01/j2se/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/bean/playerbean/MediaPlayer.html#setPlaybackLoop(boolean)
Help me, please... Estoy
Help me, please...
Estoy leyendo mucha información en inglés me dan las pautas pero no consigo mi propósito, alguien me puede ayudar!!!
Solo utiliza la clase
Solo utiliza la clase MediaPlayer en lugar de la Interfaz Player. MediaPlayer implementa a la Interfaz Player.
mp1.setMediaLocation(new java.lang.String("file:///E:/video.mov"));
mp1.setPlaybackLoop(true);
mp1.start();
Gracias, pero me dices que
Gracias, pero me dices que cambie mi código, por este código, la verdad no entiendo... y como está el código es cómo necesito... disculpa pero no manejo mucho java y hay cosas que no entiendo...
Espero alguien me pueda ayudar con mi código... el setPlaybackLoop no funciona con mi código.
Consulta
Amigos, he leido mucho pero aún no llego a la respuesta...
Leí que después de crear el player, debo llamar al ControllerLister, cuando el archivo finalice un EndOfMediaEvents es generado. Cuando tenga este evento, puedo usar la función setMediaTime(0) para reproducir el video desde el principio...
Ahora, busco mucho sobre el ControllerLister, pero no sé como funciona (no tengo muchos conocimientos de java), tengo este código pero no se como trabajarlo.
//Comprobamos que el reproductor está "vivo"
if (mediaPlayer == null){
System.out.println("El reproductor está vivo");
return;
}
//Qué evento se ha producido?
if (event instanceof RealizeCompleteEvent){
//Se añade el componente de visualización del reproductor y el de control
if((visualComponent = mediaPlayer.getVisualComponent()) != null)
add("Center",visualComponent);
if ((controlComponent = mediaPlayer.getControlPanelComponent()) != null)
add("South",controlComponent);
validate();
}else if (event instanceof EndOfMediaEvent){
System.out.println("EndOfMediaEvent2");
mediaPlayer.setMediaTime(new Time(0));
mediaPlayer.start();
}else if (event instanceof ControllerErrorEvent){
mediaPlayer = null;
System.err.println(((ControllerErrorEvent)event).getMessage());
}
}
Ya encontré la solución
Como yo trabajo con un timer le llamé a este código:
El estado del video cuando finaliza es 500 así que le mandé a evaluar...
int State=Integer.parseInt(""+mediaPlayer.getState());
if(State==500){
mediaPlayer.setMediaTime(new Time(0));
mediaPlayer.start();
}
}