2012-04-10 1 views
3

Je veux construire une bande de roulement application sûre JAVA qui:Lecture de fichiers multimédias en utilisant JAVA

  1. Play * .mp4 ou un autre format des fichiers multimédias HD (mode plein écran 1920x1080)
  2. Ajouter des liaisons d'événements à l'applet (Je vais utiliser l'écran tactile)

J'ai essayé de beaucoup chercher, mais j'ai trouvé seulement des exemples obsolètes de JMF (VLCJ et etc.). Donc je veux que vous demandiez d'où commencer la construction de cette applet. Quelles bibliothèques je peux inclure.

J'ai trouvé un projet similaire ici: Media Shuffle Mais je veux que mes fichiers multimédias à se trouver dans un dossier et ils apparaissent dans les applications sous forme d'icônes qui UPE sélectionnée vidéo (plein écran VLC ou autre lecteur multimédia multiplateforme) pour jouer 1er contact. Le deuxième contact doit arrêter le joueur et aller à la page principale.

S'il vous plaît, partagez vos idées sur comment je peux le faire. Tout exemple de code serait génial.

+1

* "mp4 ou un autre format" * Avez-vous contrôler le format des vidéos? vos clients ont-ils une large bande passante? Notez que bien que JMF soit ancien et abandonné, VLCJ ne l'est pas. La dernière fois que j'ai vérifié, il n'était pas pratique d'utiliser VLCJ dans une applet. * "J'ai trouvé un projet similaire .. Mais .." * Qu'est-ce que ce projet ne convient pas à votre cas d'utilisation (ne vous attendez pas à ce que nous suivions le lien et le comprenions)? –

+3

mp4 est juste un conteneur, quel codec vidéo/audio comptez-vous utiliser? H264, VP8? Je n'ai pas de réponse pour cela, mais voici mes recherches jusqu'à présent: http://www.adamish.com/blog/archives/303 – Adam

+0

Andrew, mon idée était de créer une application pour l'utiliser localement. Le principal problème est de gagner du temps pour l'ouverture des fichiers multimédia. Désolé pour ce lien. Il montre comment lire des vidéos avec le lecteur multimédia sélectionné, mais j'ai besoin de configurer des options supplémentaires pour configurer le lecteur. 'Desktop.getDesktop(). Open (nouveau fichier ("the.mp4"));' Je m'attends à quelque chose comme ça dans mon événement onClick avec des options spéciales pour le joueur. Adam, je vais utiliser H264. – pvaitonis

Répondre

2

Tout d'abord vous devez

// Création d'un lecteur pour lire les médias spécifiés dans l'URL

Player mediaPlayer = Manager.createRealizedPlayer(mediaURL); 

maintenant

mediaPlayer.start(); // start playing the media clip 

J'espère que ça marche!

+0

Bien que je ne pensais pas qu'il s'agissait d'une réponse spécifique ou exemplaire, c'est une direction à prendre pour commencer. L'électeur vers le bas aurait-il envie de partager ses raisons? IMWTK. –

0

VLCJ n'est pas obsolète, il est activement développé et extrêmement flexible et puissant dans ce qu'il peut réaliser. Je l'utilise dans mon application pour afficher un certain nombre de flux vidéo dans l'application à la fois, ainsi que de faire des choses telles que les superpositions de texte en même temps. C'est parfois difficile à faire, mais c'est certainement possible.

Il existe un certain nombre d'exemples de base (mis à jour) pour commencer avec VLCJ ici.

3

Je recommanderais vlcj parce que je suis sûr qu'il a tous les formats que vous pourriez avoir besoin ou avoir.Il n'est pas obsolète du tout et facile à commencer. Si vous voulez afficher une vidéo graphiquement je ne pense pas que vous pourriez jamais trouver des instructions simples comme vous le mentionnez mais si vous organisez toutes les étapes que je vais mentionner et expliquer plus en profondeur, vous verrez que vlcj est la meilleure option pour gérer les médias comme ça (comme je le pense) .J'aime aussi et recommande JavaFx parce que des effets que vous pouvez faire avec cela, mais c'est trop difficile pour moi d'installer et de coder dans ce genre de choses. Commençons donc par dire que j'ai implémenté le vlcj dans une application basée sur Swing (sous Windows) mais cela ne devrait pas vous rendre triste parce que pour un lecteur popup immédiat que vous mentionnez nous pourrions faites juste un jdialog et placez la vidéo-surface dans son contentPane.

étapes

1) La première chose qui doit être fait est de télécharger VLC media player (nous aurons besoin de la version 32 bits qui joue dans les deux environnements informatiques 32bit ou 64bit) .Je avait un terrible mois d'essayer pour configurer pourquoi mon application ne chargeait pas correctement les bibliothèques requises et a découvert que lorsque vous exécutez un fichier jar exetutable, il s'exécute sur jvm 32 bits (en eclipse fonctionnait en 64bit jvm et tout était ok.Thats pourquoi nous avons besoin de la version 32bit), alors que j'avais des bibliothèques natives 64 bits à charger.Quoi qu'il en soit, si vous téléchargez et installez 32bit vlc media player faites quelque part un dossier pour inclure votre projet (disons "C:/MyProject") dans MyProject créez un autre dossier et appelez par exemple "Needed" (ici nous placerons toutes les bibliothèques requises pour vlcj afin de fonctionner correctement) .Maintenant du contenu de C: \ Program Files (x86) \ VideoLAN \ VLC copier le répertoire plugins et les 4 dlls (axvlc.dll, libvlc.dll, libvlccore.dll, npvlc. dll) et les coller dans votre dossier nécessaire

2) Maintenant, si vous travaillez dans Eclipse IDE ou similaire, vous devrez créer un dossier dans votre projet (disons "lib") et à l'intérieur, créez un autre dossier (nommez-le "jars"). Dans le dossier jars placez les jars suivants: jna-3.5.1.jar, platform-3.5.1.jar, vlcj-2.2.0.jar.Vous pouvez trouver ces pots de vlcj google project.And alors juste incluez-les dans votre classpath (soit sélectionnez-les et cliquez avec le bouton droit de la souris sur> ajouter au chemin de construction ou allez dans Propriétés du projet-> Chemin de construction Java et ajoutez ces 3 jars). Tout cela pour l'installation avant de commencer le codage avec la configuration du lecteur.

3) Vous devez charger maintenant vlcj avant de commencer à l'utiliser. Je viens d'utiliser ce code pour rendre cela possible (je vais l'expliquer sous peu ne vous inquiétez pas).

public void LoadLibrary(){ 
    SwingWorker loadWorker;  


    loadWorker = new SwingWorker(){ 

     @Override 
     protected Object doInBackground() throws Exception { 
      // TODO Auto-generated method stub 

      Thread.sleep(2000); 

      path = new File("").getAbsolutePath().toString(); 
      path = path.replace(".", ""); 
      path = path.replace("\\", "//"); 
      path = path+"//Needed"; 

      if(RuntimeUtil.isWindows()){ 
       NativeLibrary.addSearchPath(
         "libvlc",path 



          ); 
          Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); 




        } 
      else if(RuntimeUtil.isNix()){ 
        NativeLibrary.addSearchPath(
          "libvlc",path 

          ); 
      } 



      mediaPlayerFactory = new MediaPlayerFactory(); 
      player = mediaPlayerFactory.newEmbeddedMediaPlayer(); 
      CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas); 
      player.setVideoSurface(videoSurface); 


      return null; 
     } 

    }; 
    loadWorker.execute(); 

} 

Alors ce que je fais est de faire un fil pour les applications basées sur Swing parce que vous ne pouvez pas lire le contenu multimédia si votre toile de médias ne sont pas affichables et tout dans le constructeur est entièrement construit lorsque son code est done.That signifie que Avant de créer le lecteur, nous devons d'abord créer un délai (le mien est de 2 secondes) pour que notre constructeur termine son travail et que notre JFrame (ou jWindow ou jDialog etc) devienne affichable.Next je calcule mon chemin de manière dynamique en prenant le chemin de mon pot exécutable (attention: pas à partir de l'espace de travail dans Eclipse) et entrer dans le dossier nécessaire pour implémenter les bibliothèques natives requises. À l'intérieur de l'instruction if, je demande au système de rechercher le libvlc.dll dans le chemin spécifique que j'ai calculé et charge. pas en avant pour lire les fichiers multimédias. En dehors de if-else déclaration en fait c reate mon player et place le canvas pour son VideoSurface (canvas est un canvas java.awt Object J'utilise WindowsCanvas car je ne travaille que dans windows, tu pourrais trouver pour linux ou mac un canvas similaire (ne t'en fais pas pour ça!)) Outside the Swing -Worker field (le thread) je dis juste le thread à exécuter (important comme une instruction d'appel-fonction). 4) Pour lire un fichier, j'utilise un bouton quelque part dans mon application pour appeler un événement d'action chaque fois qu'il est pressé afin que nous fassions quelque chose à l'intérieur. Je fais par exemple un JFileChooser pour choisir un fichier multimédia. vous pouvez rechercher facilement mais voici mon code:

final JFileChooser chooser = new JFileChooser(); 

      FileNameExtensionFilter filter0 = new FileNameExtensionFilter(".wav", "wav"); 
      FileNameExtensionFilter filter1 = new FileNameExtensionFilter(".mp3","mp3"); 
      FileNameExtensionFilter filter2 = new FileNameExtensionFilter(".mpg","mpg"); 
      FileNameExtensionFilter filter3 = new FileNameExtensionFilter(".mp4","mp4"); 
      FileNameExtensionFilter filter4 = new FileNameExtensionFilter(".avi","avi"); 
      FileNameExtensionFilter filter5 = new FileNameExtensionFilter(".flv","flv"); 
      FileNameExtensionFilter filter6 = new FileNameExtensionFilter(".wmv","wmv"); 
      FileNameExtensionFilter filter7 = new FileNameExtensionFilter(".3gp", "3gp"); 
      FileNameExtensionFilter filter8 = new FileNameExtensionFilter(".swf", "swf"); 
      FileNameExtensionFilter filter9 = new FileNameExtensionFilter(".mkv", "mkv"); 
      FileNameExtensionFilter filter10 = new FileNameExtensionFilter(".flac", "flac"); 
      FileNameExtensionFilter filter11 = new FileNameExtensionFilter("Music & Videos","wav","mp3","mpg","mp4","avi","flv","wmv","3gp","swf","mkv","flac","VOB"); 
      FileNameExtensionFilter filter12 = new FileNameExtensionFilter("Music","wav","mp3","flac"); 
      FileNameExtensionFilter filter13 = new FileNameExtensionFilter(".VOB", "VOB"); 
      FileNameExtensionFilter filter14 = new FileNameExtensionFilter("Videos","mpg","mp4","avi","flv","wmv","3gp","swf","mkv","VOB"); 


      chooser.setFileFilter(filter14); 
      chooser.setFileFilter(filter2); 
      chooser.setFileFilter(filter3); 
      chooser.setFileFilter(filter4); 
      chooser.setFileFilter(filter5); 
      chooser.setFileFilter(filter6); 
      chooser.setFileFilter(filter13); 
      chooser.setFileFilter(filter7); 
      chooser.setFileFilter(filter8); 
      chooser.setFileFilter(filter9); 
      chooser.setFileFilter(filter12); 
      chooser.setFileFilter(filter0); 
      chooser.setFileFilter(filter1); 
      chooser.setFileFilter(filter10); 
      chooser.setFileFilter(filter11); 



      int returnVal = chooser.showOpenDialog(getParent()); 
      if(returnVal == JFileChooser.APPROVE_OPTION) { 
       System.out.println("You chose to open this file: " + 
       chooser.getSelectedFile().getName()); 
       File myfile1 = chooser.getSelectedFile(); 
       myfilepath1 = chooser.getSelectedFile().getAbsolutePath(); 
} 

     player.startMedia("file:///"+myfilepath1); 
       player.pause();  

Ces filtres de fichiers sont quelques-uns des types de fichiers multimédia qui vlcj peut jouer pour u.What je n'ouvre une boîte de dialogue de fichier pour choisir un fichier et si je choisis un fichier je tiens son chemin (utile pour dire vlcj où le chercher).

5) Maintenant pour lire le fichier u il suffit de taper le code suivant:

player.play(); 

Peut-être dans un autre événement d'action d'un autre bouton. 6) si vous avez fini d'écrire, il vous suffit d'exporter votre projet vers un fichier JAR exécutable dans votre dossier MyProject créé et lancé (attention en double-cliquant dessus (pas sur la console). être exécuté avec 64bit jvm et vous ne voulez pas que vous avez 32 bits natifs et vlcj n'acceptent pas ces conflits)))

En conclusion, je dois dire que ces étapes ont fonctionné pour moi. J'espère qu'ils vous aideront à aller plus loin dans le développement de votre application.

Cordialement, PeGiannOS

Questions connexes