首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMC / JavaFX -播放视频

JMC / JavaFX -播放视频
EN

Stack Overflow用户
提问于 2011-03-30 05:19:34
回答 1查看 2.1K关注 0票数 0

我试着创建一个小的应用程序,只播放我的硬盘上的视频。我已经试了3天了,但我不知道该怎么做。在当前的javafx (jmc)版本中,网上没有很好的教程或示例可以做到这一点。我想创建一个swing应用程序,它使用javafx中的jmc类。我试过这个:

代码语言:javascript
复制
 ...
 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);“不起作用(由于color.red,jpanel只显示红色,但不显示视频)。有什么简单的方法可以做到吗?谢谢。

我还尝试了第二个类:

代码语言:javascript
复制
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())));
*/
}

}

并将此代码添加到main类中的jpanel中:

代码语言:javascript
复制
Player p = new Player();
p.Player(f,j);

但"renderer.paintVideo()“方法不可用:(因此这也不起作用(可能是使用旧版本的jmc,因为我在互联网上找到了这个示例)。

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

EN

回答 1

Stack Overflow用户

发布于 2011-07-12 01:09:46

我还搜索了如何播放视频,我找到了这个:

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

查看适合我的“清单3XMP2.java”。

致以问候。

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

https://stackoverflow.com/questions/5479079

复制
相关文章

相似问题

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