Seguinte: eu preciso reproduzir vídeos em um aplicativo java, estou tentando usar JMF, mas não estou tendo muito sucesso! O JMStudio funciona perfeitamente, então eu entendo que a minha jre está funcional.
Eu estou usando promáriamente o NetBeans, mas já tentei fazer funcionar no eclipse e deu exatamente o mesmo erro. Eu incluo o arquivo jmf.jar e o editor reconhece as classes e compila normalmente, mas na hora de executar, dá o seguinte erro:os.name: Windows 7
os.version: 6.1
os.arch: amd64
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
java.vm.version: 16.2-b04
user.country: BR
user.language: pt
user.dir: C:\Users\Wanderson\Projetos\NetBeans\JMedia
**** Começando ****
**** Criando a janela ****
File URL: file:/C:/Users/Wanderson/Videos/Samples/Up/Up.2009.720p.REPACK.BRRip.XviD.AC3-ViSiON.avi
Unable to handle format: XVID, 1280x720, FrameRate=23.9, Length=5529600 0 extra bytes
Unable to handle format: unknown, 48000.0 Hz, 0-bit, 6-channel, Unsigned, 56000.0 frame rate, FrameSize=8 bits
Failed to realize: com.sun.media.PlaybackEngine@26132ae7
Error: Unable to realize com.sun.media.PlaybackEngine@26132ae7
javax.media.CannotRealizeException
at javax.media.Manager.blockingCall(Manager.java:2005)
at javax.media.Manager.createRealizedPlayer(Manager.java:528)
at jmedia.JMedia.<init>(JMedia.java:25)
at jmedia.JMedia.main(JMedia.java:57)
**** Terminando ****
package jmedia;
import java.awt.Component;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
public class JMedia extends JFrame {
public JMedia(URL url) {
super("JMedia");
System.out.println("File URL: " + url);
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
try {
Player player = Manager.createRealizedPlayer(url);
Component c = player.getVisualComponent();
if(c != null)
add(c);
player.start();
} catch (IOException ex) {
ex.printStackTrace();
} catch (NoPlayerException ex) {
ex.printStackTrace();
} catch (CannotRealizeException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("os.name: " + System.getProperty("os.name"));
System.out.println("os.version: " + System.getProperty("os.version"));
System.out.println("os.arch: " + System.getProperty("os.arch"));
System.out.println("java.vm.name: " + System.getProperty("java.vm.name"));
System.out.println("java.vm.version: " + System.getProperty("java.vm.version"));
System.out.println("user.country: " + System.getProperty("user.country"));
System.out.println("user.language: " + System.getProperty("user.language"));
System.out.println("user.dir: " + System.getProperty("user.dir"));
System.out.println();
System.out.println("**** Começando ****");
JFileChooser f = new JFileChooser();
if(f.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
System.out.println("**** Criando a janela ****");
try {
JFrame fm = new JMedia(f.getSelectedFile().toURI().toURL());
fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fm.setSize(570, 320);
fm.setLocationRelativeTo(null);
fm.setVisible(true);
} catch (MalformedURLException ex) {
ex.printStackTrace();
}
}
System.out.println("**** Terminando ****");
}
}
Eu também gostaria de adicionar o fobs4jmf que adiciona suporte a diversos formatos ao JMF, mas não consigo fazer nem o simples JMF funcionar. Alguma ajuda?