2014-09-03 2 views
2
JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM 
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Can't load JAWT 
    at com.sun.jna.Native.getWindowHandle0(Native Method) 
    at com.sun.jna.Native$AWT.getComponentID(Native.java:1879) 
    at com.sun.jna.Native.getComponentID(Native.java:253) 
    at uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface.attach(CanvasVideoSurface.java:69) 
    at uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer.attachVideoSurface(DefaultEmbeddedMediaPlayer.java:156) 
    at uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer.onBeforePlay(DefaultEmbeddedMediaPlayer.java:315) 
    at uk.co.caprica.vlcj.player.DefaultMediaPlayer.play(DefaultMediaPlayer.java:705) 
    at uk.co.caprica.vlcj.player.DefaultMediaPlayer.playMedia(DefaultMediaPlayer.java:222) 
    at viziosecure360.Travizia.AddPlayer(Travizia.java:675) 
    at viziosecure360.Travizia.setDefault(Travizia.java:234) 
    at viziosecure360.Travizia$1.run(Travizia.java:187) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744) 
    at java.awt.EventQueue.access$400(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:697) 
    at java.awt.EventQueue$3.run(EventQueue.java:691) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:714) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
+0

Pouvez-vous clarifier votre question et partager des codes? – Raptor

+0

Envisagez de fournir un [exemple exécutable] (https://stackoverflow.com/help/mcve) qui illustre votre problème. Cela entraînera moins de confusion et de meilleures réponses – MadProgrammer

+0

Cela semble lié à: http://stackoverflow.com/questions/13571726/cant-load-libgdx-desktop-app-on-mac-osx ce qui implique que la bibliothèque lwgl qui est être utilisé dans jvlc n'est pas compatible avec java 7 (ou plus récent) sur OSX. – Petesh

Répondre

4

vlcj/LibVLC nécessite un composant AWT lourd pour rendre sa vidéo.

Il n'y a plus d'AWT dans JDK 1.7 et plus tard sur OSX. La boîte à outils de l'interface utilisateur sur OSX est maintenant entièrement légère. Par conséquent, la manière optimale d'utiliser vlcj sur OSX ne fonctionne plus.

Ce que vous avez à faire est d'utiliser ce que l'on appelle le "direct" media player [1] plutôt que celui "intégré". L'inconvénient de l'utilisation du lecteur multimédia direct est que vous devez rendre la vidéo vous-même en utilisant une image BufferedImage, une image volatile accélérée par le matériel, un PixelWriter ou autre chose.

Cette approche utilise généralement plus de mémoire et plus de CPU, et est un peu plus gênant. Sur le plan positif, il est possible d'obtenir une lecture vidéo HD fluide en utilisant cette méthode. De plus, vous pouvez traiter le tampon vidéo d'une manière ou d'une autre si vous le souhaitez, et superposer facilement des widgets/étiquettes légers sur le dessus de la vidéo en utilisant cette approche.

Un exemple fourni dans les sources de test vlcj montre une façon de procéder (il y a trop de code à reproduire ici, donc je vais fournir a stable link [2]).

Il y a aussi une longue discussion dans le project issue tracker [3] sur ce sujet.

[1] http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/direct/DirectMediaPlayer.html

[2] https://github.com/caprica/vlcj/blob/vlcj-3.0.1/src/test/java/uk/co/caprica/vlcj/test/direct/DirectTestPlayer.java

[3] https://github.com/caprica/vlcj/issues/205

Etonnamment, il y a un potentiel, mais clairement sous-optimale, la solution qui consiste à utiliser un ordinateur Windows 1.7/1.8 JVM sur OSX en utilisant Wine. Je n'ai pas essayé mais on m'a dit que ça fonctionnait.

Questions connexes