我正在使用JavaSound并支持Mp3SPI。我使用的是JavaZoom http://www.javazoom.net/mp3spi/mp3spi.html
当我从文件构造函数创建AudioFileFormat时,我可以获得mp3的持续时间。
File file = new File("path/to/file.mp3");
AudioFileFormat format = AudioSystem.getAudioFileFormat(file);
format.properties().get("duration"); // works fine
但我在内存中有一个文件,我无法将其写入磁盘...所以当我从InputStream创建AudioFileFormat时,我不会得到持续时间。继承我的代码:
ByteArrayInputStream barray = fromNetwork();
AudioFileFormat format = AudioSystem.getAudioFileFormat(barray);
format.properties().get("duration"); // does not work
但是,如果我尝试播放音频,它可以正常工作。
知道我该怎么办?
我使用mp3agic,一切正常。
ByteArrayInputStream ba = IOUtil.toByteArrayInputStreamUntilTheEnd(new FileInputStream(file));
InputStream is = new InputStream(ba);
Mp3Metadata md = new Mp3Metadata(is);