FXMLController初始化方法:
@FXML
private VBox vbContainer;
MediaPlayerVLC m_mediaPlayer;
public void initialize(URL url, ResourceBundle rb) {
final SwingNode swingNode = new SwingNode();
m_mediaPlayer = new MediaPlayerVLC();
createAndSetSwingContent(swingNode, m_mediaPlayer);
vbContainer.getChildren().add(0, swingNode);
}
并创建AndSetSwingContent():
private void createAndSetSwingContent(final SwingNode swingNode, JComponent jComponent) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
swingNode.setContent(jComponent);
}
});
}
MediaPlayerVLC 类:
package javafxswing;
import javax.swing.JPanel;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
public class MediaPlayerVLC extends JPanel {
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
public MediaPlayerVLC() {
setSize(350, 320);
setVisible(true);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
mediaPlayerComponent.setSize(350, 320);
add(mediaPlayerComponent);
}
public MediaPlayer getMediaPlayer() {
return mediaPlayerComponent.getMediaPlayer();
}
}
我通过在 FXML 控制器中单击按钮来播放媒体:
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
m_currentVideo = "video.mov";
m_mediaPlayer.getMediaPlayer().playMedia(m_currentVideo);
}
现在,问题是:视频开始播放,但我看不到图像。我说它开始播放是因为我能听到音频。我究竟做错了什么?
非常感谢任何帮助。
简而言之,这样是行不通的。
来自 Javdoc 的SwingNode
here: http://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/SwingNode.html http://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/SwingNode.html
它部分指出:
JComponent 实例中包含的组件层次结构不应包含任何重量级组件,否则 SwingNode 可能无法绘制它。
对于 vlcj 来说,EmbeddedMediaPlayerComponent
延伸Panel
,一个重量级的AWT组件。
要与 JavaFX 一起使用 vlcj,您可能必须自己直接渲染视频数据。这就是vlcj所谓的DirectMediaPlayerComponent
是为了.这种方法的本质是DirectMediaPlayerComponent
接收要渲染的每一帧视频数据,然后您可以使用PixelWriter
或者你想出的其他方法。
这里有一个vlcj-javafx项目https://github.com/caprica/vlcj-javafx https://github.com/caprica/vlcj-javafx,并且这种方法适用于 Java7。由于错误的线程,它不适用于 Java8,记录如下:https://github.com/caprica/vlcj-javafx/issues/3 https://github.com/caprica/vlcj-javafx/issues/3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)