0

我正在获取游戏使用的 .mid 文件,并从中生成鼓谱。它适用于某些 .mid 文件,但其他文件会产生 EOFException

我正在使用取自DumpSequence.java的代码摘录

Sequence sequence = null;
File midiFile = new File(strFilename);
sequence = MidiSystem.getSequence(midiFile);

(包是 javax.sound.midi)

抛出错误:


java.io.EOFException: com.sun.media.sound.StandardMidiFileReader.getSequence(Unknown Source)
上 com.sun.media.sound.SMFParser.readTrack(Unknown Source)上的 无效 MIDI 文件
。 StandardMidiFileReader.getSequence(Unknown Source)
at javax.sound.midi.MidiSystem.getSequence(Unknown Source)
at DumpSequence.main(DumpSequence.java:125)

谁能指出我正确的方向,如何解决这个问题?我自己尝试过寻找解决方案,但结果一无所获。

4

1 回答 1

1

我能想到几种可能:

  1. 如错误消息所述,MIDI 文件实际上具有无效格式。
  2. 此文件的字节顺序不同,文件本身未指明。
  3. 您使用的 Java 版本(或 javax.sound 库)不理解这种 MIDI 文件格式。

您应该能够通过使用不同的 MIDI 文件播放器来轻松验证文件格式是否有效。然后确保任何其他已知良好的 Java MIDI 程序都能够处理它。

于 2013-09-23T20:05:00.693 回答