Como criar um reprodutor de video em java, tentei de varias formas mas nao consigo, ultima coisa q falta para acabar o projeto

Esta se referindo ao vlcj ou ao MediaPlayer?

Ao mediaplayer, a biblioteca ja foi adicionada

Bom, estou certo que não é bug do MediaPlayer do JavaFX, e sim programação.

Todavia vou postar um codigo aqui pra voce ver como executar varios videos seguidos em VLCJ, basta você adaptar a Thread a sua real necessidade.

/**
 *
 * @author jorge
 * 
 * download vlcj
 * multiplos videos
 * 
 */
 
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.media.MediaEventListener;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventListener;

import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;

public class Main3 extends JFrame implements Runnable {
   private static final long serialVersionUID = 1L;
   private static final String TITLE = "My First Media Player";
   
   Thread thread = null;
   ArrayList<String> lista = new ArrayList();
   String video_padrao = "";
   boolean end_video = false;
   MediaPlayerEventListener mevent = null;
   
   private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
   private JButton playButton;

   public Main3(String title) {
      super(title);
      mediaPlayerComponent = new EmbeddedMediaPlayerComponent();		
      
      lista.add( "/home/jorge/Vídeos/legiao_urbana_giz.mp4" );
      lista.add( "/home/jorge/Vídeos/Beyonce_and_Shakira_hd.mp4" );
      //lista.add( "/home/jorge/Vídeos/Shakira_and_Wyclef.mp4" );
      //lista.add( "/home/jorge/Vídeos/legiao_urbana_pais_e_filhos.mp4");
   }
   
   public void initialize() {
      this.setBounds(100, 100, 600, 400);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.addWindowListener(new WindowAdapter() {
         @Override
         public void windowClosing(WindowEvent e) {
            mediaPlayerComponent.release();
            System.exit(0);
         }
      });    	
      JPanel contentPane = new JPanel();
      contentPane.setLayout(new BorderLayout());   	 
      contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);

      JPanel controlsPane = new JPanel();
      playButton = new JButton("Play");
      controlsPane.add(playButton);    	
      contentPane.add(controlsPane, BorderLayout.SOUTH);
      playButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            // mediaPlayerComponent.mediaPlayer().controls().play();            
            playButton.setEnabled(false);
            thread.start();
         }
      });    	 
      this.setContentPane(contentPane);
      this.setVisible(true);
      
      thread = new Thread(this);
   }
   
   public void loadVideo(String path) {
      mediaPlayerComponent.mediaPlayer().media().startPaused(path);   	
   }
   
   
   public void run() {
      boolean run = true;
      
      
      while( run == true ) {
          
          try {
              
              for(int x=0; x < lista.size(); x++) {
                  
                 end_video = false;
                  
                 if(mevent != null )  mediaPlayerComponent.mediaPlayer().events().removeMediaPlayerEventListener(mevent);

                 mevent = new MediaPlayerEventAdapter() {
                    @Override
                    public void finished(MediaPlayer mediaPlayer) {
                        end_video = true;
                    }
                 };
                 
                 loadVideo(lista.get(x));
                 mediaPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(mevent);                  
                 mediaPlayerComponent.mediaPlayer().controls().play();
                 
                 while(end_video == false) {
                     thread.sleep(1000L);
                 }
                 
                 thread.sleep(2000L);
                 // proximo video
              }
              
          } catch (InterruptedException ex) {
              ex.printStackTrace();
          }
      }
       
   }
   
   
   public static void main( String[] args ){
      try {
         UIManager.setLookAndFeel(
         UIManager.getSystemLookAndFeelClassName());
      } 
      catch (Exception e) {
         System.out.println(e);
      }
      Main3 application = new Main3(TITLE);
      application.initialize(); 
      application.setVisible(true);  
      // application.loadVideo(VIDEO_PATH);
   }
}
1 curtida

opa, blz? como assim adaptar a thread a minha real necessidade?

O metodo “run()” do exemplo.Você tem conhecimento de Thread?

olá, não consegui usar esses exemplos que você me passou

acha que consegue me ajudar então ???

se o erro é a lógica de programação deve ser na hora de pegar o video

eu crio um File que entra em uma pasta e procura um arquivo que chama o video, nao o video em si para nao ficar usando memoria atoa tipo apaga video, copia video, cola video, apaga video, ele só chama o nome do video exemplo: (principal, video1, video2) enfim…

se não tiver um arquivo chamando ele joga como principal o padrão, se tiver ele pega o nome do video e joga na variavel videoAtualString, e cria um

File mediaFile = new File("/painel/videos/" + videoAtualString + “.mp4”);

que puxa direto o video somente sendo alterado o “videoAtualString” conforme tiver algum arquivo naquela pasta que te falei

depois seta uma media que recebe :

media = new Media(mediaFile.toURI().toURL().toString());

String videoAtualString = “principal”;

Scene scene;

MediaPlayer mediaPlayer;

public void pegarNomeDoVideo() {

    File nomeDoVideo = new File("/painel/vStart");

    File[] files = new File[1];

    files = nomeDoVideo.listFiles();

    if (files.length == 0) {

        videoAtualString = "principal";

    } else {

        File videoAtual = files[0];

        videoAtualString = videoAtual.toString().substring(15);

        videoAtual.delete();

    }

}

public Scene createScene() throws MalformedURLException {

    File mediaFile = new File("/painel/videos/" + videoAtualString + ".mp4");

    Media media = null;

    try {

        if(mediaFile.isFile()){

            media = new Media(mediaFile.toURI().toURL().toString());

        } else {

            mediaFile = new File("/painel/videos/principal.mp4");

            media = new Media(mediaFile.toURI().toURL().toString());

        }

    } catch (MalformedURLException e) {

        System.out.println("URL Malformed");

    }

    mediaPlayer = new MediaPlayer(media);

    mediaPlayer.setMute(true);

    mediaPlayer.setOnEndOfMedia(new Runnable() {

        @Override

        public void run() {

            try {

                juntandoInitfxEPegarNomeDoVideo();

            } catch (MalformedURLException e) {

                System.out.println("MALFORMED URL");

            }

        }

    });

    MediaView mediaview = new MediaView(mediaPlayer);

    mediaview.setFitHeight(553);

    if (videoAtualString != null) {

        scene = new Scene(new Pane(mediaview));

    }

    mediaPlayer.play();

    return scene;

}

private void initFX(JFXPanel panel) throws MalformedURLException {

    scene = createScene();

    panel.setScene(scene);

}

private void juntandoInitfxEPegarNomeDoVideo() throws MalformedURLException {

    pegarNomeDoVideo();

    initFX(fxPanel);

}

se realmente for algum erro de lógica eu criando uma lista por exemplo não sei… acho que daria certo

Realmente é problema de logica de programação. Veja tudo com calma, pedaço por pedaço do codigo usando debug e você vai encontrar o erro e corrigi-lo.

Tomara que seja de programação kkkkkk, sabe algum jeito de criar essa para o próximo vídeo sem travar?

O exemplo que postei roda vários videos e não trava.

Mas me diga, você é novato em programação ou novato em Java?

"Enganam-se aqueles que acham ou acreditam que programação seja fácil e trivial."
"Requer muito estudo, paciência e persistência."

É meu primeiro projeto mesmo, sem contar com os projetos de cursos

Mas esse em vlcj nao consegui fazer rodar infelizmente:(

Faça-o rodar, alias não gosto de postar teorias e achismos aqui no forum, sempre que posso posto um exemplo pratico e funcionando, esse que enviei foi testado e aprovado.

Se esta dando erro com você é preciso saber se as jars estão todas corretas, se o vlc esta instalado, enfim… essas coisinhas.

Esta instalado sim, porém ele abre o frame mas nao o video sabe?

Mas voce trocou os nomes dos videos internos?

Troquei

Entao tenta colocar no try catch um Exception pra ver se pega um erro geral