¿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 elMediaListPlayer
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 - 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