2011-06-20 44 views
0

我目前正在使用JMF来获取嵌入到我的GUI中的视频。我上了一堂好看的课,但我不断收到一个奇怪的堆栈轨迹,让我挠了挠头。Java堆栈跟踪分析,媒体中的头文件错误?

Failed to configure: [email protected] 
    Bad header in the media: IOException when parsing hdrl 

Error: Unable to realize [email protected] 
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/

+0

你传入的'file'的值是多少? –

+0

文件是一个字符串,包含我的视频文件的完整路径:file:/// E:\〜java \ Projects \ 1.avi – n0pe

回答

1

相信EmbeddedPlayer是你的代码(不JMF),因此你需要检查哪些对象在EmbeddedPlayer被引用。 java,第35行。或者发布EmbeddedPlayer的代码。

更新:问题似乎无法创建播放引擎。 也许这个网址将有帮助http://blog.msbbc.co.uk/2007/06/mp3-playback-in-java.html

+0

我添加了我的代码,但是我使用EmbeddedPlayer作为自定义类来扩展JPanel我可以很容易地把它放在我的框架上。 – n0pe