簡體   English   中英

使用MP3SPI解析MP3文件中的ID3標簽

[英]Parse ID3 tags from MP3 file using MP3SPI

我正在使用MP3SPI在Java應用程序中播放MP3文件。 開始和停止播放都非常有用。 但是,我希望能夠從MP3文件中打印ID3標簽。

我嘗試了以下代碼:

URL fileUrl = new File("song.mp3").toURI().toURL();

AudioFileFormat audioFileFormat = new MpegAudioFileReader().getAudioFileFormat(fileUrl);
Map<String, Object> properties = audioFileFormat.properties();
for (Entry<String, Object> entry : properties.entrySet()) 
{
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

此代碼讀取音頻文件屬性,並打印出每個屬性的鍵和值。 除ID3標記外,它都適用。 我已經驗證了song.mp3確實具有ID3標簽。 運行上面的代碼將產生以下輸出:

mp3.copyright = false
mp3.framesize.bytes = 1041
mp3.vbr = false
mp3.frequency.hz = 44100
mp3.framerate.fps = 38.28125
mp3.id3tag.v2 = java.io.ByteArrayInputStream@281e3708
mp3.channels = 2
mp3.vbr.scale = 0
mp3.version.encoding = MPEG1L3
mp3.bitrate.nominal.bps = 320000
mp3.version.layer = 3
mp3.id3tag.v2.version = 2
mp3.padding = true
mp3.id3tag.encoded = iTunes 10.6.1
mp3.header.pos = 2147
comment = TunNORM
mp3.version.mpeg = 1
mp3.mode = 0
mp3.crc = false
mp3.original = false

根據MP3SPI的文檔以及此處關於Stack Overflow的各種答案,還應該具有genreartist等屬性。 感覺有些我不了解的專業,而且我似乎無法理解我做錯了什么。

對於 ByteArrayInputReader來說,擁有mp3.id3tag.v2似乎對我有些奇怪,而且我不知道這意味着什么。 另外,我想知道ID3標簽似乎已經用iTunes編碼的事實(查看mp3.id3tag.encoded )是否與沒有獲得任何ID3標簽輸出有關。

要正確讀取ID3標簽,請使用JAudiotagger之類的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM