JMC / JavaFX - Воспроизведение видео - PullRequest
0 голосов
/ 30 марта 2011

Я пытался создать небольшое приложение, чтобы просто воспроизвести видео с моего жесткого диска.Я пытался в течение 3 дней, но я не знаю, как это сделать.В сети нет хороших руководств или примеров, чтобы сделать это с текущей версией javafx (jmc).Я хочу создать приложение Swing, которое использует классы jmc из javafx.Я попробовал это:

 ...
 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 (т.пл.);"не работает (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, потому что я нашел это в Интернете в качестве примера).

Кто-нибудь знает, какдобавить локальное видео в приложение Swing с текущей версией javafx, jmc?

1 Ответ

1 голос
/ 11 июля 2011

Я также искал, как воспроизводить видео, и нашел это:

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

Проверьте "Листинг 3 XMP2.java", который работает для меня.

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...