JMC/JavaFX-播放视频
我试着创建一个小应用程序,只播放硬盘上的视频。我已经试了三天了,但我不知道怎么做。在目前的javafx(jmc)版本中,网上没有很好的教程或示例。我想创建一个swing应用程序,它使用javafx中的jmc类。我试过这个:JMC/JavaFX-播放视频,java,swing,video,javafx,Java,Swing,Video,Javafx,我试着创建一个小应用程序,只播放硬盘上的视频。我已经试了三天了,但我不知道怎么做。在目前的javafx(jmc)版本中,网上没有很好的教程或示例。我想创建一个swing应用程序,它使用javafx中的jmc类。我试过这个: ... MediaProvider mp; String mediaURI = "G:\\teste2.avi"; JFrame jf = new JFrame(); JPanel j = new JPanel(); j.setLayout(new BorderLa
...
MediaProvider mp;
String mediaURI = "G:\\teste2.avi";
JFrame jf = new JFrame();
JPanel j = new JPanel();
j.setLayout(new BorderLayout());
mp = new MediaProvider();
try {
mp.setSource(new URL("file://" + mediaURI).toURI());
} catch (MalformedURLException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}catch (URISyntaxException ex2) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex2);
}
mp.setRepeating(false);
j.setSize(800, 600);
j.setVisible(true);
jf.add(j);
jf.setSize(800, 600);
j.setBackground(Color.red);
jf.setVisible(true);
mp.play();
...
但是现在:如何将“mp”添加到我的jpanel中?“j.add(mp);”不起作用(jpanel仅为红色,因为颜色为.red,但不显示视频)。有没有简单的方法?多谢各位
我还尝试了第二类:
public class Player implements VideoRendererListener{
private MediaProvider prov; //This is the most important class!
private VideoRenderControl renderer; //It's a interface to control the rendering
private Graphics2D ig;
private JPanel panel;
public void Player(File path, JPanel panel) {
ig = (Graphics2D) panel.getGraphics();
this.panel = panel;
prov = new MediaProvider(path.toURI());
renderer = prov.getControl(VideoRenderControl.class);
renderer.addVideoRendererListener(this);
prov.play();
System.out.println(prov.getDuration());
}
@Override
public void videoFrameUpdated(VideoRendererEvent arg0) {
float ratio = renderer.getFrameHeight() / (float)renderer.getFrameWidth();
int diff = ( panel.getHeight() - Math.round(ratio * panel.getHeight())) / 2;
System.out.println(renderer.getFrameHeight());
/* renderer.paintVideo(ig,
new Rectangle(0, 0, renderer.getFrameWidth(), renderer.getFrameHeight())
,
new Rectangle(0, diff, panel.getWidth(), Math.round(ratio * panel.getHeight())));
*/
}
}
并将其添加到主类中的jpanel中:
Player p = new Player();
p.Player(f,j);
但是“renderer.paintVideo()”方法不可用:(因此这也不起作用(可能是使用旧版本的jmc,因为我在internet上找到了这个例子)
有人知道如何使用当前版本的javafx、jmc将本地视频添加到swing应用程序中吗?我也在搜索如何播放视频,我发现: 检查对我有用的“清单3xmp2.java” 问候