2010-08-09 2 views

ответ

0

Если вы изучите wave file spec, вы увидите, что не существует места для аннотаций любого вида. Вариант будет состоять в том, чтобы обернуть волновой файл своим собственным форматом, который содержит настраиваемую информацию, но вы фактически создадите совершенно новый формат, который не будет доступен для чтения пользователям, у которых нет вашего приложения. Но с тобой все в порядке.

+1

Из того, что я прочитал, я могу вставить его как часть структуры RIFF, я просто не могу понять, какие структуры и теги использовать , – Curtis

0

Возможно, формат NIST файла даст вам то, что вы хотите: NIST

Вот Lib, которые могли бы помочь, но я боюсь, что выглядит старым. NIST Lib

Невозможно найти более полезную информацию прямо сейчас, как именно ее использовать, и я боюсь, что информационные документы от моей компании должны оставаться там. : L/

1

Один из вариантов - добавить свой собственный кусок с уникальным идентификатором. Большинство игроков WAV игнорируют это.

Еще одна идея - использовать фрагмент labl, связанный с набором, установленным в начале или в конце файла. Вам также понадобится кусок que. See here for a reference

Как написать данные просто

  1. Написать "RIFF".
  2. сохранить позицию файла.
  3. Напишите 4 байта 0's
  4. Напишите все существующие куски. Хранить количество записанных байтов.
  5. Добавьте свой кусок. Не забудьте получить право. Храните количество записанных байтов.
  6. перемотка назад в сохраненное положение. Напишите новый размер (в виде 32-разрядного номера ).
  7. Закрыть файл.

Это немного сложнее, если вы добавляете вещи в существующий кусок list, но тот же принцип применяется.

+0

Помните, что все куски должны иметь четное количество байтов. Pad с NULL, если необходимо! – mivk

1

Try код ниже

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 из

+2

Этот код нельзя использовать без лицензии «Alvas Audio», потребуется минимум $ 500 лицензия ... –