Lire des médias à l'aide de la bibliothèque VLCj

Contexte


(vous pouvez sauter immédiatement et passer à l'élément suivant)

En apprenant Java, immédiatement après avoir maîtrisé le swing, il est devenu intéressant: «Mais comment lire de l'audio ou de la vidéo?». J'ai fouillé pendant longtemps sur Google, y creusé plusieurs bibliothèques qui, en théorie, devraient me donner exactement ce que je veux. Mais comme la pratique l'a montré, la plupart de ces bibliothèques lisent un très petit nombre de formats et ne sont pas très pratiques à utiliser. Après avoir fouillé quelques jours, j'ai finalement trouvé quelque chose qui, en théorie, devrait m'aider à résoudre le problème. La bibliothèque VLCj prend les codecs du lecteur multimédia VLC et lit les fichiers avec eux. Un autre jour de souffrance avec un tutoriel sur le site officiel et finalement réussi à démarrer la lecture du fichier vidéo dans JFrame.

Passons aux choses sérieuses:


1. Téléchargez la bibliothèque elle-même (il vaut mieux prendre la dernière version, car elle a des problèmes de compatibilité) lien

2. Si vous n'avez pas encore installé le lecteur multimédia VLC, vous devrez le télécharger et l'installer. Vous pouvez le télécharger sur le site officiel de VideoLan (il vaut mieux prendre la dernière version, il contient plus de codecs).

3. IDE, j'utilise Eclipse.

Créez d'abord un nouveau projet et nommez-le, par exemple, «MediaPlayer».

Ouvrez maintenant le dossier MediaPlayer dans votre espace de travail Eclipse et décompressez l'archive téléchargée avec la bibliothèque dans ce dossier.

Plus loin dans Eclipse, dans les paramètres de votre projet, cliquez sur «Ajouter des fichiers JAR externes» et dans la fenêtre qui s'ouvre, recherchez et sélectionnez le fichier vlcj-3.0.1.jar. Choisissez LUI ET LUI SEULEMENT .

La bibliothèque était donc connectée au projet. Ensuite, nous devons créer une instance de la classe. Par exemple, créez Test.java (j'espère que ce processus n'a besoin d'être expliqué à personne).

Nous avons obtenu une classe vide avec approximativement le contenu suivant:

public class Test { public static void main(String[] args) { } } 

Ensuite, nous devons créer un JFrame dans lequel nous voulons afficher notre vidéo. Nous créons également un JPanel et y mettons le Canvas, que nous utilisons comme surface pour notre lecteur vidéo.

 public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); } } 

Ainsi, la partie visuelle est prête. Ensuite, nous nous tournons directement vers la bibliothèque et le lecteur VLC. Et en fait, créez le joueur lui-même dans notre cadre.

 NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\VideoLAN\VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); 

Ici, nous avons indiqué le chemin vers le lecteur VLC (plus spécifiquement, les fichiers libvlc.dll, libvlccore.dll et le dossier plugins). Nous avons créé un lecteur multimédia avancé (il a un plus grand ensemble de capacités qu'un simple "lecteur multimédia"), lui avons attribué une surface, indiqué le chemin d'accès au fichier vidéo, préparé le fichier pour la lecture et effectivement lu.

Par conséquent, votre code ressemblera à ceci:

 import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; import uk.co.caprica.vlcj.binding.LibVlc; import uk.co.caprica.vlcj.player.MediaPlayerFactory; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy; import uk.co.caprica.vlcj.runtime.RuntimeUtil; public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files/VideoLAN/VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); } } 

Gardez à l'esprit que:
- Votre chemin vers le lecteur multimédia VLC peut différer.
- Le chemin d'accès à votre vidéo peut varier.

Pour plus de commodité, vous pouvez copier les fichiers nécessaires du lecteur multimédia VLC vers votre projet. Cela élimine également la nécessité d'installer VLC sur les ordinateurs sur lesquels votre programme fonctionnera.

Au début, j'ai eu du mal à lire des fichiers dont le nom ou le chemin d'accès est cyrillique. Si vous rencontrez les mêmes difficultés, faites un clic droit sur votre instance de classe et allez dans ses paramètres et changez son encodage en UTF-8

Source: https://habr.com/ru/post/fr434126/


All Articles