¿Cómo añadir múltiples videos en MediaListPlayer desde la base de datos mysql (JAVA Swing)?

Me quedé atrapado en esto. Tengo que conseguir los vídeos de mi base de datos. Y no sé cómo añadirlo a la lista de medios. Usé LinkedList pero no parece funcionar. Necesito conseguir todos los videos en la base de datos y jugarlos en el bucle.

Agregarlos en la lista de reproducción/mediaList es mi principal problema. Estoy usando vlcj 1.2.0 jar. Por favor, ayúdame.

    public static void video() throws InterruptedException{
    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
    Canvas canvas = new Canvas();
    canvas.setBackground(Color.black);
    CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
    EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
    mediaPlayer.setVideoSurface(videoSurface);
    MediaListPlayer mediaListPlayer = mediaPlayerFactory.newMediaListPlayer();
    mediaListPlayer.addMediaListPlayerEventListener(new MediaListPlayerEventAdapter() {
        @Override
        public void nextItem(MediaListPlayer mediaListPlayer, libvlc_media_t item, String itemMrl) {
            System.out.println("nextItem()");
        }
    });
    mediaListPlayer.setMediaPlayer(mediaPlayer); // <--- Important, associate the media player with the media list player
    vid.add(canvas);
    MediaList mediaList = mediaPlayerFactory.newMediaList();
    String[] options = {};
    LinkedList video = new LinkedList<>(); 
    try{
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost/mediaplaylist";
        Connection conn = DriverManager.getConnection(url,"root","");
        Statement stmt = conn.createStatement();
        String sqlSelect= "select videos from media";
            ResultSet rs = stmt.executeQuery(sqlSelect);
        while(rs.next()){
            String vids= rs.getString("videos");
            video.add(vids);
             int r= video.size();
         for(int s=0; s

Pregunta hecha hace 3 años, 4 meses, 28 días - Por devdoodle


3 Respuestas:

  • Resuelto. Esto hizo el truco.

       String mrl = new File(vids).getAbsolutePath();
    

    Soy tan estúpido. c) Aquí está el código final, guardo caminos de vídeo en la base de datos mysql:

       public static void video() throws InterruptedException{
        MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
        Canvas canvas = new Canvas();
        canvas.setBackground(Color.black);
        CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
        EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
        mediaPlayer.setVideoSurface(videoSurface);
        MediaListPlayer mediaListPlayer = mediaPlayerFactory.newMediaListPlayer();
        mediaListPlayer.addMediaListPlayerEventListener(new MediaListPlayerEventAdapter() {
            @Override
            public void nextItem(MediaListPlayer mediaListPlayer, libvlc_media_t item, String itemMrl) {
                System.out.println("nextItem()");
            }
        });
        mediaListPlayer.setMediaPlayer(mediaPlayer); // <--- Important, associate the media player with the media list player
        vid.add(canvas);
        MediaList mediaList = mediaPlayerFactory.newMediaList();
        String[] options = {};
        LinkedList video = new LinkedList<>(); 
        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost/mediaplaylist";
            Connection conn = DriverManager.getConnection(url,"root","");
            Statement stmt = conn.createStatement();
            String sqlSelect= "select * from media";
                ResultSet rs = stmt.executeQuery(sqlSelect);
            while(rs.next()){
                String vids= rs.getString("videos");
    
            String mrl = new File(vids).getAbsolutePath();
                System.out.println(mrl);
    
              mediaList.addMedia(mrl); 
              System.out.println(mediaList.items());
              mediaList.mediaListInstance();
              mediaListPlayer.setMediaList(mediaList);
              mediaListPlayer.setMode(MediaListPlayerMode.LOOP);
              mediaListPlayer.play();
            } 
    
        }catch (Exception ex) {
        
        Logger.getLogger(home.class.getName()).log(Level.SEVERE, null, ex);
        }
        }
    

    Respondida el Dec 17, 2020 a las 16:03 - por javajedi

    Votos positivos: 0 | Votos negativos: 0

  • Para añadir múltiples videos desde una base de datos MySQL a un MediaListPlayer en Java Swing utilizando VLCJ, primero necesitas asegurarte de que estás añadiendo correctamente cada video a la lista de medios y luego reproducirlos en bucle. Aquí tienes un ejemplo de cómo puedes lograrlo:

    java
    public static void reproducirVideosDesdeBaseDeDatos() {
        MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
        EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
    
        MediaListPlayer mediaListPlayer = mediaPlayerFactory.newMediaListPlayer();
        mediaListPlayer.setMediaPlayer(mediaPlayer);
    
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost/mediaplaylist";
            Connection conn = DriverManager.getConnection(url, "root", "");
            Statement stmt = conn.createStatement();
            String sqlSelect = "SELECT videos FROM media";
    
            ResultSet rs = stmt.executeQuery(sqlSelect);
            MediaList mediaList = mediaPlayerFactory.newMediaList();
    
            while (rs.next()) {
                String videoPath = rs.getString("videos");
                Media media = mediaPlayerFactory.newMedia(videoPath);
                mediaList.addMedia(media);
            }
    
            mediaListPlayer.setMediaList(mediaList);
            mediaListPlayer.setMode(MediaListPlayerMode.LOOP);
            mediaListPlayer.play();
    
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    

    En este código, primero se establece la conexión con la base de datos y se obtienen los nombres de archivo de los videos. Luego se crean objetos Media con cada nombre de archivo y se añaden a la lista de medios. Una vez que se han añadido todos los videos a la lista de medios, se establece esta lista en el MediaListPlayer y se ajusta el modo de reproducción a bucle. Finalmente, se reproduce la lista de medios.

    Asegúrate de agregar las importaciones necesarias al inicio de tu archivo Java y de manejar adecuadamente las excepciones. ¡Espero que este código te ayude a reproducir múltiples videos desde tu base de datos con VLCJ!

    Respondida el Dec 18, 2020 a las 15:58 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Hay un par de problemas con tu código:

    • Tipo de dato incorrecto para `video`: `video` es una lista vinculada de cadenas, pero la base de datos parece almacenar rutas de archivo de vídeo. Debes cambiarlo a `LinkedList` para almacenar las rutas de archivo.
    • Uso incorrecto de `MediaList.addMedia`: El método `addMedia` toma una ruta de archivo o una URL como parámetro, no un objeto `Media`. Debes pasar la ruta de archivo de vídeo recuperada de la base de datos directamente a `addMedia`.
    • Falta de conexión a la base de datos: Tu código no establece correctamente una conexión a la base de datos. Asegúrate de que la biblioteca del controlador JDBC de MySQL esté incluida en tu proyecto y que la URL, el usuario y la contraseña de la base de datos sean correctos.

    Aquí tienes el código corregido:

    java
    public static void video() throws InterruptedException{
        MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
        Canvas canvas = new Canvas();
        canvas.setBackground(Color.black);
        CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
        EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
        mediaPlayer.setVideoSurface(videoSurface);
        MediaListPlayer mediaListPlayer = mediaPlayerFactory.newMediaListPlayer();
        mediaListPlayer.addMediaListPlayerEventListener(new MediaListPlayerEventAdapter() {
            @Override
            public void nextItem(MediaListPlayer mediaListPlayer, libvlc_media_t item, String itemMrl) {
                System.out.println("nextItem()");
            }
        });
        mediaListPlayer.setMediaPlayer(mediaPlayer); // <--- Important, associate the media player with the media list player
        vid.add(canvas);
        MediaList mediaList = mediaPlayerFactory.newMediaList();
        String[] options = {};
        LinkedList video = new LinkedList<>(); // Changed to LinkedList for file paths
        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost/mediaplaylist";
            Connection conn = DriverManager.getConnection(url,"root","");
            Statement stmt = conn.createStatement();
            String sqlSelect= "select videos from media";
                ResultSet rs = stmt.executeQuery(sqlSelect);
            while(rs.next()){
                String vids= rs.getString("videos");
                video.add(vids); // Add the file path to the list
            }
            rs.close();
            stmt.close();
            conn.close();
        }catch(Exception ex){
            ex.printStackTrace();
        }
         int r= video.size();
         for(int s=0; s

    Asegúrate también de que tienes las dependencias necesarias para la conexión a la base de datos, como el conector JDBC de MySQL, incluidas en tu proyecto.

    Respondida el Dec 18, 2020 a las 16:07 - por Gemini

    Votos positivos: 0 | Votos negativos: 0