如何为 Java 剪辑使用 ID3 标签(音频文件详细信息和信息)

How To Use ID3 Tags (Audio File Details and Information) for a Java Clip

编辑

特别感谢 Manoj Khanna,他提醒我我在这个问题中提到的 "details" 实际上叫做 ID3 Tags。我需要社区帮助的部分原因是因为我不知道这些标签的名称,所以感谢您回答我的问题!你们帮了大忙!

原问题

我创建了一个简单的 Java 应用程序(在 Java 8 中)播放 .WAV Audio Files 存储在我的电脑上。我使用 javax.sound.sampled.AudioSystem 使用此代码播放 javax.sound.sampled.Clip

Clip l = AudioSystem.getClip();
l.open(AudioSystem.getAudioInputStream(new File("song.wav")));
l.setFramePosition(0);
l.start();

该代码完全可以正常工作,我对它的工作方式非常满意。我得到文件名来识别歌曲,效果很好。但是,我要寻求帮助的是如何使用 .WAV Audio File 的歌曲 "details" 和 "information."


这个有点难解释,所以我会用包含图片和具体应用来说明。

其他音频应用程序(例如,我将在Windows 10 中使用微软的"Groove Music" 应用程序)将轨道的"details" 发送到扬声器和操作系统。

IMAGE ONE: You can set the "details" of an audio track in the properties of a file, or set them when you create the file. This hyperlink links to a screenshot showing the "details" of the song (the title and contributing artists). 请注意,文件名与链接图片中显示的详细信息无关(即使我将它们命名为相同)。

IMAGE TWO: The "details" of the track are reflected while the song is playing in most audio playing applications (in this case "Groove Music"). The details are also reflected in the volume changing menu on the top left of the screen. This hyperlink links to a screenshot showing how the "details" are reflected while the track is playing. 同样的 "details" 将被发送到蓝牙音频播放设备(例如汽车或扬声器),并可能显示在设备的屏幕上(如果设备具有该功能)。


截至目前,我的 Clip 没有从 .WAV Audio Files 的属性中获取任何信息,也没有将它们传递给我的操作系统或我的任何扬声器已经测试过了。他们都可以很好地播放音乐,只是没有按照我的意愿显示信息。


有什么方法可以让我在播放音频时使用这些ID3标签吗? 如果我必须手动设置歌曲名称和艺术家,或者更改自动从文件属性收集信息的设置,我会很好。

澄清(编辑 2)

我已经在我的音频文件中设置了 ID3 标签,但我想在使用 Clip 播放时将这些标签传递给操作系统和扬声器。我希望我的 Clip 以使用图二所示信息的方式播放。我想在播放音频文件时使用之前已经设置的 ID3 标签;我希望在播放时将标签传递给扬声器和操作系统。

我宁愿不使用外部库,但如果必须的话,我可以满足于使用一个。

这可能吗,如果可能,怎么做?

您要阅读或修改的属性称为 ID3 标签。

快速 Google 搜索给了我这个库 JAudiotagger。它还可以用于读取或修改其他几种格式的 ID3 标签。

用法

AudioFile file = AudioFileIO.read(new File("filename.wav"));
Tag tag = file.getTag();
tag.setField(FieldKey.ARTIST,"Kings of Leon");
AudioFileIO.write(file);

更多示例可查看here