Анализ стека трассировки Java, плохой заголовок в медиа? - PullRequest
0 голосов
/ 20 июня 2011

В настоящее время я играю с 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/

1 Ответ

1 голос
/ 20 июня 2011

Я считаю, что EmbeddedPlayer - это ваш код (не jmf), и, следовательно, вам необходимо проверить, на какой объект ссылаются, в EmbeddedPlayer.java, строка 35. Или опубликовать код EmbeddedPlayer.

ОБНОВЛЕНИЕ: проблема, кажется, не в состоянии создать механизм воспроизведения. Может быть, этот URL поможет http://blog.msbbc.co.uk/2007/06/mp3-playback-in-java.html

...