В настоящее время я играю с JMF, чтобы встроить видео в мой графический интерфейс.У меня хороший класс, но я продолжаю получать странную трассировку стека, из-за которой я чешу голову.
Failed to configure: com.sun.media.PlaybackEngine@1fc4bec
Bad header in the media: IOException when parsing hdrl
Error: Unable to realize com.sun.media.PlaybackEngine@1fc4bec
javax.media.CannotRealizeException
at javax.media.Manager.blockingCall(Manager.java:2005)
at javax.media.Manager.createRealizedPlayer(Manager.java:554)
at EmbeddedPlayer.<init>(EmbeddedPlayer.java:24)
at MenuFrame.addMedia(MenuFrame.java:142)
at ConfigReader.parse(ConfigReader.java:362)
at ConfigReader.findFrames(ConfigReader.java:60)
at ConfigReader.main(ConfigReader.java:32)
Exception in thread "main" java.lang.NullPointerException
at EmbeddedPlayer.<init>(EmbeddedPlayer.java:35)
at MenuFrame.addMedia(MenuFrame.java:142)
at ConfigReader.parse(ConfigReader.java:362)
at ConfigReader.findFrames(ConfigReader.java:60)
at ConfigReader.main(ConfigReader.java:32)
seek: java.io.IOException: Negative seek offset
Я работаю в Java только год, и я не совсем уверена, чтотрассировка говорит мне прямо сейчас.
Любая помощь, даже просто сообщающая мне, что происходит, очень поможет.
вот EmbeddedPlayer:
import java.awt.BorderLayout;
import java.awt.Component;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class EmbeddedPlayer extends JPanel {
private MenuFrame parent;
public static final String DEFAULT_MEDIA_PATH = "media/";
public EmbeddedPlayer(MenuFrame parent, String file) {
this.parent = parent;
setLayout( new BorderLayout() );
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
Player mediaPlayer = null;
Component video = null;
Component controls = null;
try {
MediaLocator location = new MediaLocator(file);
mediaPlayer = Manager.createRealizedPlayer(location);
video = mediaPlayer.getVisualComponent();
controls = mediaPlayer.getControlPanelComponent();
} catch (Exception e) {
e.printStackTrace();
}
if ( video != null ) { add(video, BorderLayout.CENTER); }
if ( controls != null ) { add(controls, BorderLayout.SOUTH); }
this.parent.add(this);
mediaPlayer.start();
}
}
На основе этого примера: http://www.deitel.com/articles/java_tutorials/20060422/PlayingVideowithJMF/