如何将元数据添加到WAV文件?

时间:2010-08-09 21:21:34

标签: metadata wav

我正在寻找一些示例代码,向我展示如何将元数据添加到我们创建的wav文件中。 任何人吗?

4 个答案:

答案 0 :(得分:2)

尝试以下代码

private void WaveTag()
{
    string fileName = "in.wav";
    WaveReadWriter wrw = new WaveReadWriter(File.Open(fileName, FileMode.Open, FileAccess.ReadWrite));
    //removes INFO tags from audio stream
    wrw.WriteInfoTag(null);
    //writes INFO tags into audio stream
    Dictionary<WaveInfo, string> tag = new Dictionary<WaveInfo, string>();
    tag[WaveInfo.Comments] = "Comments...";
    wrw.WriteInfoTag(tag);
    wrw.Close();
    //reads INFO tags from audio stream
    WaveReader wr = new WaveReader(File.OpenRead(fileName));
    Dictionary<WaveInfo, string> dir = wr.ReadInfoTag();
    wr.Close();
    if (dir.Count > 0)
    {
        foreach (string val in dir.Values)
        {
            Console.WriteLine(val);
        }
    }
}

来自http://alvas.net/alvas.audio,articles.aspx#id3-tags-for-wave-files

答案 1 :(得分:1)

一个选项是添加您自己的具有唯一ID的块。大多数WAV玩家都会忽视它。

另一个想法是使用labl块,与文件开头或结尾处的que设置相关联。你还需要一个que块。 See here for a reference

如何编写数据很简单

  1. "RIFF"
  2. 保存文件位置。
  3. 写入4个字节的0
  4. 写下所有现有的块。保持写入的字节数。
  5. 添加你的块。一定要搞定chunksize吧。保持 写入的字节数。
  6. 快退到保存的位置。写新的大小(作为32位 数)。
  7. 关闭文件。
  8. 如果要向现有的list块添加内容,这会稍微复杂一些,但同样的原则适用。

答案 2 :(得分:0)

如果您检查wave file spec,您会发现似乎没有任何类型的注释空间。一个选项是使用您自己的包含自定义信息的格式包装wave文件,但实际上您将创建一个全新的格式,而这些格式是没有您的应用程序的用户无法读取的。但你可能会对此感到满意。

答案 3 :(得分:0)

也许nist文件格式会为您提供所需内容: NIST

这是一个可以提供帮助的库,但我担心它看起来很旧。 NIST Lib

现在无法找到更多有用的信息如何使用它,我担心我公司的信息文件必须留在那里。 :L /