我有大量翻录的 .wav 文件(如果更容易的话,我已经准备好将它们转换为 flac),我想将这些详细信息插入 MySQL 数据库。当我在 Windows 资源管理器(不是浏览器)中右键单击 .wav 文件并选择属性 -> 详细信息时,我可以看到有关歌曲的一些详细信息。例如艺术家、流派和持续时间。如何在 Java 中阅读和编辑这些详细信息?
2 回答
要获取持续时间信息,请参阅此链接:Java - 读取、操作和编写 WAV 文件
本质上,WAV 文件被分解成块,这些块要么包含音频数据,要么以某种方式描述音频数据,或者提供有关它的信息。如果读者不理解其中一个块,它可以跳过它,这允许在文件中放置许多不同类型的信息。其中一个块包含采样率、通道数和采样帧总数等信息,您可以从中计算长度。
对于艺术家、流派等等......好吧,没有标准的块,所以如果它真的在文件中,而不是在某个地方的 windows db 中,它可能存储在嵌入在 WAV 中的 ID3 标签中。我不确定 ID3 的 chunkID 是什么,但它可能是“id3”或“ID3”(包括空格)。您可以通过在文件中搜索长度为 4 或更长的字符串来解决这个问题——通常数据块在开头,音频在结尾。(在 unix/macos 上,我会使用“strings”命令,可能会使用“head”)ID3 标签是 MP3 的标准标签,您可以通过谷歌搜索了解如何解析它们。要了解它们,您首先需要了解 WAV 文件,至少足以知道什么是块、块 ID、如何跳过您不知道的块
我不知道有一个库可以在 Java 中读取 WAV 文件中的 ID3 标签,因此您要么必须编写一个,要么将一个用另一种语言编写的包装。我怀疑 libsndfile 会工作,但它没有 MP3 阅读器,所以可能没有。您也可以尝试 SOX。您还可以查看我从未使用过的http://javamusictag.sourceforge.net/ ,但它是在搜索中出现的。
祝你好运!
我最终将它们转换为 flac 文件并使用 JAudiotagger。感谢您的回复,这次我以这种方式结束了。