2016-11-17 109 views
4

我正在嘗試使用以下代碼獲取我在我的Java項目中使用的.wav文件的屬性。但是,當我運行此代碼時,方法format.getProperty("title")format.getProperty("author")format.getProperty("duration")全部返回null。我應該以不同的方式獲得這些細節嗎?檢索.wav文件的標題,藝術家/作者和持續時間

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(wavFile); 
AudioFormat format = audioInputStream.getFormat(); 
Object[] temp = {false, 
     format.getProperty("title"), 
     format.getProperty("author"), 
     format.getProperty("duration")}; 
+0

我很確定.wav文件不包含標題或作者信息。 – VGR

回答

1

WAV文件很難使用,即使they can hold several metadata types。根據所使用的軟件和編碼器(16/32位PCM),您可以對該文件進行不同的配置,並且Java Sound API將面臨讀取此元數據的問題。

我嘗試了很多的重點在音頻元標籤的工具和庫(如Apache Tikajd3libmp3agicBeaglebuddy等),且大多做工精細用MP3或其他音頻格式,但不爲WAV文件。

顯然,處理這個問題的好方法是Jaudiotagger。這很簡單,速度快,你可以完成你的目標做這樣的事情:

AudioFile f = AudioFileIO.read(wavFile); 
WavTag tag = (WavTag) f.getTag(); 

Object[] temp = {false, 
     tag.getFirst(FieldKey.TITLE), 
     tag.getFirst(FieldKey.ARTIST), 
     f.getAudioHeader().getTrackLength() // In seconds 
}; 

另外,請參考以下鏈接:

注意 :對此功能的支持是從ver。添加的sion 2.2.4以上。所以,總是更喜歡the latest version驅逐兼容性問題。

+0

謝謝你的男人。欣賞它 – Dan

+0

不客氣! :) – bosco

相關問題