WOOOHAAA!
Now I can proudly present: A SOLUTION!
First of all thx to all the replies, the solution is indeed to extract the JMC Framework
from JavaFX.
But trying to use the tutorial in the link given by gouessej does not work:
(http://floris.ouwendijk.nl/blog/index.php?blog=2&title=java_media_components&more=1&c=1&tb=1&pb=1)
The problem is, that the posted code relates to JavaFX 1.1, but the actual Version does not support the JMediaPlayer
class anymore.
With a little search I found other, which shared the problem. Indeed you have to grab the jar-libraries and native .dlls
from the JavaFX Installation and do something like this (quick’n’dirty example, please see the original thread in this forum:
http://www.java-forum.org/allgemeine-java-themen/93807-videos-abspielen-etc.html)
package test;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.sun.media.jmc.MediaProvider;
import com.sun.media.jmc.control.VideoRenderControl;
import com.sun.media.jmc.event.VideoRendererEvent;
import com.sun.media.jmc.event.VideoRendererListener;
public class PlayerTest implements VideoRendererListener
{
private MediaProvider prov;
private VideoRenderControl renderer;
private Graphics2D ig;
private JPanel panel;
public PlayerTest(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();
}
@Override
public void videoFrameUpdated(VideoRendererEvent arg0)
{
float ratio = renderer.getFrameSize().height / (float) renderer.getFrameSize().width;
int diff = (panel.getHeight() - Math.round(ratio * panel.getHeight())) / 2;
renderer.paintVideo(ig, new Rectangle(0, 0, renderer.getFrameSize().width,
renderer.getFrameSize().height), new Rectangle(0, diff, panel.getWidth(), Math.round(ratio
* panel.getHeight())));
}
public static void main(String[] args)
{
JFrame frame = new JFrame("Video Test");
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
frame.setSize( new Dimension(800, 600) );
frame.setVisible(true);
File video = new File("videos/test.avi");
new PlayerTest(video, panel);
}
}