1
嘗試爲一組MP3獲得準確時間花了很長時間。我有以下這些使用MP3SPI 1.9.5 library生成的屬性。MP3持續時間Java
// mp3.crc=true
// mp3.copyright=true
// mp3.padding=false
// mp3.channels=1
// mp3.version.mpeg=2.5
// mp3.length.bytes=6425480
// mp3.framerate.fps=27.777779
// mp3.framesize.bytes=140
// duration=1606356000
// mp3.version.layer=3
// mp3.length.frames=44621
// mp3.frequency.hz=8000
// mp3.header.pos=0
// mp3.bitrate.nominal.bps=16000
// mp3.vbr.scale=0
// mp3.version.encoding=MPEG2DOT5L3
// mp3.mode=3
// mp3.vbr=false
// mp3.original=false
現在我正在閱讀的文件的持續時間爲47:35,如iTunes報告,48:50使用Mac Preview。
當我使用的庫得到Java中的時間,我得到26:46:
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(f);
Map<?, ?> properties = ((TAudioFileFormat) fileFormat).properties();
String key = "duration";
long duration = ((Long) properties.get("duration"))/1000;
{
String frameBased = String.format("Duration Tag: %d hours, %d min, %d sec",
TimeUnit.MILLISECONDS.toHours(duration),
TimeUnit.MILLISECONDS.toMinutes(duration),
TimeUnit.MILLISECONDS.toSeconds(duration) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
);
System.out.println(frameBased);
}
我運氣不好,所以我在想,如果我做了愚蠢的事情,還是我可以使用MP3標籤內的信息來計算我的實際長度?鑑於iTunes正確報告,我認爲我應該能夠。
不幸的是,這也是* only * fail-safe的方式。 –
我認爲你必須逐幀掃描MP3文件來確定它的真實長度。 – Nayuki