当文件完全在内存中时,无法从mp3获取元数据

问题描述 投票:0回答:1

我正在使用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

但是,如果我尝试播放音频,它可以正常工作。

知道我该怎么办?

mp3 metadata javasound
1个回答
0
投票

我使用mp3agic,一切正常。

Mp3Agic

ByteArrayInputStream ba = IOUtil.toByteArrayInputStreamUntilTheEnd(new FileInputStream(file)); 
InputStream is = new InputStream(ba); 
Mp3Metadata md = new Mp3Metadata(is);
© www.soinside.com 2019 - 2024. All rights reserved.