style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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

public class videopanel extends javax.swing.JPanel {
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);
}
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de WinDoctor

MediaPlayer

La clase MediaPlayer tiene el método setPlaybackLoop(boolean)

Imagen de ivlecamo

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)

Imagen de ivlecamo

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!!!

Imagen de WinDoctor

Solo utiliza la clase

Solo utiliza la clase MediaPlayer en lugar de la Interfaz Player. MediaPlayer implementa a la Interfaz Player.

MediaPlayer mp1 = new javax.media.bean.playerbean.MediaPlayer();
mp1.setMediaLocation(new java.lang.String("file:///E:/video.mov"));
mp1.setPlaybackLoop(true);
mp1.start();
Imagen de ivlecamo

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.

Imagen de ivlecamo

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.

public synchronized void controllerUpdate(ControllerEvent event){
   
    //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());
    }
}
Imagen de ivlecamo

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

public void reiniciar_video(){
    int State=Integer.parseInt(""+mediaPlayer.getState());
    if(State==500){
        mediaPlayer.setMediaTime(new Time(0));
        mediaPlayer.start();
    }    
}

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">