Java:从波形音频文件中获取元数据标签

标签 java tags metadata wav audacity

我从 Audacity 导出了一个波形 (.wav) 文件,其元数据中包含自定义标记,键为:LOOP_START 和 LOOP_LENGTH。

Screenshot of the tags in the metadata editor in Audacity

我唯一的问题是我不知道如何在我的 Java 程序中获取附加到这些键的值。我该怎么办?

编辑:我更喜欢使用使用标准 Java 库的解决方案,但如果这是唯一的方法,我不会反对下载第 3 方库。

Edit2:这是我正在搞乱的一些代码:

URL url = Main.class.getClassLoader().getResource("bgm/bgm4.wav");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(url);
AudioFormat format = audioInputStream.getFormat();
System.out.println(format.properties());

但这只打印:“{}”。 (“bgm”是一个文件夹(src 的直接子文件夹))

我知道它正在读取文件,因为它没有抛出任何异常,但它会从根目录进入 bin,而不是从 src 进入。我不确定这是否有影响。但 bin 中的音频文件与 src 中的音频文件具有相同的元数据标签。

2018 年 1 月 13 日编辑: 仍在尝试得到这个答案。这是我正在尝试的一些新代码:

URL url = AudioMetadata.class.getClassLoader().getResource("audio/bgm4.wav");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(url);
AudioFormat format = audioInputStream.getFormat();
AudioFileFormat fformat = AudioSystem.getAudioFileFormat(url);

Map<String, Object> props = fformat.properties();
System.out.println(props.size());

这将打印:0

最佳答案

读入 .wav 后,您应该能够使用 Java 声音库及其 .properties 方面。Here是 Java 声音指南的链接。

例如。

AudioFormat file = stream.getFormat();
System.out.println("Properties: " + file.properties());

关于Java:从波形音频文件中获取元数据标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47957848/

相关文章:

java - Android - 获取用户在webview中点击的链接

language-agnostic - HACK 和 UNDONE 注释标签的使用

gradle - 如何获得依赖关系元数据填充jar的权限?

java - 启动 Anypoint Studio 时缺少错误日志

java - 从数据库访问和使用 .jsf 文件

Java - JDBC executeUpdate() 不工作

html - 更改 MediaWiki 导航面板中的链接颜色

mercurial - Mercurial 中提示之前的最新标签

html - Facebook 不从博客中提取元数据

php - 在 WooCommerce 中更新自定义订单项元