作为大学项目的一部分,我必须能够在我的Java应用程序中播放视频。
我编写了以下代码:
EmbeddedMediaPlayerComponent component = new EmbeddedMediaPlayerComponent();
JFrame f = new JFrame ();
f.setContentPane(component);
f.setBounds(new Rectangle (200,200,800,600));
f.addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent e) {
component.release();
System.exit(0);
}
});
f.setVisible(true);
component.mediaPlayer().media().play("video");
一切都编译成功,当我运行该项目时,视频窗口打开,我可以听到视频的声音,但没有图像显示。谁能帮我解决这个问题?
EmbeddedMediaPlayerComponent
需要AWT Canvas
嵌入视频。
在macOS上运行时,没有重量级的AWT,因此普通的嵌入式媒体播放器组件将无法工作。
您需要使用某种形式的“直接渲染”,在其中将视频自己绘制为某种轻量级的组件。 vlcj通过CallbackMediaPlayerComponent
为了使基础工作正常,您只需替换代码即可:
EmbeddedMediaPlayerComponent component = new EmbeddedMediaPlayerComponent();
使用:
CallbackMediaPlayerComponent component = new CallbackMediaPlayerComponent();
这将为您提供合理的默认行为,如果需要,您可以自定义CallbackMediaPlayerComponent
。
这种方法的性能将不如嵌入式组件,但是对于大多数用例来说,已经足够好了。