Search code examples
javamysqlmedia-playervlcj

How to add multiple videos on MediaListPlayer from mysql database (JAVA Swing)?


I got stuck in this. :( I need to get the video paths from my database. And I don't know how to add it on the media playlist. I used LinkedList but it doesn't seem to work. I need to get all of the videos in the database and play them in loop.

Adding them on the playlist/mediaList is my main problem. I am using vlcj 1.2.0 jar. Please help me out.

    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<String> 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<r; s++){
             mediaList.addMedia(video.get(s), options);  
        }
       mediaListPlayer.setMediaList(mediaList);
            mediaListPlayer.setMode(MediaListPlayerMode.LOOP);
            mediaListPlayer.play();
         }
    }catch (Exception ex) {
    
    Logger.getLogger(home.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

Solution

  • Solved. This did the trick.

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

    I'm so stupid. >.< Here is the final code, I save video paths in mysql database:

       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<String> 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);
        }
        }