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

时间:2016-08-03 21:10:04

标签: java audio playback id3

修改

特别感谢Manoj Khanna提醒我,我在这个问题中提到的“细节”实际上被称为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的歌曲“详情”和“信息”。

这有点难以解释,因此我将使用包含图片和特定应用程序来澄清。

其他音频应用程序(例如,我将在Windows 10中使用Microsoft的“Groove Music”应用程序)将音轨的“详细信息”发送到扬声器和操作系统。

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. 相同的“细节”将被发送到蓝牙音频播放设备(例如汽车或扬声器),并可能显示在设备的屏幕上(如果设备具有该功能)。

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

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

澄清(编辑2)

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

我不想使用外部库,但如果必须的话,我可以选择使用外部库。

这可能,如果可行,怎么办?

1 个答案:

答案 0 :(得分:0)

您想要阅读或修改的属性称为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