How to add metadata to WAV file?

旧巷老猫 提交于 2019-12-01 17:11:25

Try code below

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);
        }
    }
}

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

One option is to add your own chunk with a unique id. Most WAV players will ignore it.

Another idea would to be use a labl chunk, associated with a que set at the beginning or end of the file. You'd also need a que chunk. See here for a reference

How to write the data is simple

  1. Write "RIFF".
  2. save the file position.
  3. Write 4 bytes of 0's
  4. Write all the existing chunks. Keep count of bytes written.
  5. Add your chunk. Be sure to get the chunksize right. Keep count of bytes written.
  6. rewind to the saved position. Write the new size (as a 32-bit number).
  7. Close the file.

It's slightly more complicated if you are adding things to an existing list chunk, but the same principle applies.

If you examine the wave file spec you'll see that there does not seem to be room for annotations of any kind. An option would be to wrap the wave file with your own format that includes custom information but you would in effect be creating a whole new format that would not be readable by users who do not have your app. But you might be ok with that.

Maybe the nist file format will give you what you want: NIST

Here is a lib that could help, but im afraid it looks old. NIST Lib

Cant find more useful information right now how exactly to use it, and im afraid the information papers from my company must stay there. :L/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!