首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mac os jdk 1.8问题vlc控件JAWT未加载

mac os jdk 1.8问题vlc控件JAWT未加载
EN

Stack Overflow用户
提问于 2014-09-03 15:39:23
回答 1查看 1.4K关注 0票数 2
代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2014-09-04 02:28:05

vlcj/LibVLC需要一个重量级AWT组件来呈现其视频。

在JDK 1.7和更高版本的OSX中不再有任何AWT。OSX上的UI工具包现在是完全轻量级的。

因此,在OSX上使用vlcj的最佳方式不再有效。

你要做的就是使用所谓的"direct" media player [1],而不是“嵌入式”。

使用直接媒体播放器的缺点是,您必须以某种方式自己渲染视频,使用BufferedImage、硬件加速的易失性图像、PixelWriter或其他东西。

这种方法通常使用更多的内存和更多的CPU,而且更加不方便。

从好的方面来说,使用这种方法可以实现流畅的高清视频播放。

另外,从好的方面来说,如果你愿意,你可以以某种方式处理视频缓冲区,并使用这种方法轻松地将轻量级的小部件/标签覆盖在视频的顶部。

在vlcj测试源码中提供了一个示例,它展示了如何做到这一点的一种方法(这里有太多的代码需要重现,所以我将提供a stable link [2])。

project issue tracker [3]中也有关于这个主题的很长时间的讨论。

1

2

3

令人惊讶的是,有一个潜在的解决方案,尽管显然不是最优的,它是在OSX上使用Wine使用Windows 1.7/1.8 JVM。我还没有试过,但有人告诉我它是有效的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25638820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档