gpt4 book ai didi

java - JMC/JavaFX - 播放视频

转载 作者:行者123 更新时间:2023-12-01 15:53:46 25 4
gpt4 key购买 nike

我尝试创建一个小应用程序,只播放硬盘上的视频。我已经尝试了三天了,但我不知道该怎么做。网上没有好的教程或示例来使用当前的 javafx (jmc) 版本来执行此操作。我想创建一个 swing 应用程序,它使用 javafx 中的 jmc 类。我试过这个:

 ...
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 仅是红色,因为 color.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,因为我在互联网上找到了这个例子)。

有谁知道如何使用当前版本的 javafx、jmc 将本地视频添加到 swing 应用程序?

最佳答案

我也在搜索如何播放视频,我发现了这个:

http://www.informit.com/articles/article.aspx?p=1326515&seqNum=4

检查对我有用的“ list 3 XMP2.java”。

问候。

关于java - JMC/JavaFX - 播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com