2010-08-09 57 views

Respuesta

0

Si examina el wave file spec verá que no parece que haya espacio para anotaciones de ningún tipo. Una opción sería envolver el archivo de onda con su propio formato que incluye información personalizada pero en realidad estaría creando un formato completamente nuevo que no sería legible para los usuarios que no tienen su aplicación. Pero puedes estar bien con eso.

+1

Por lo que he leído, puedo incrustarlo como parte de la estructura RIFF, simplemente no puedo entender por qué estructuras y etiquetas a utilizar . – Curtis

0

Tal vez el formato de archivo NIST le dará lo que quiere: NIST

Aquí es un lib que podría ayudar, pero me temo que se ve viejo. NIST Lib

No puedo encontrar más información útil en este momento sobre cómo usarla exactamente, y me temo que los documentos informativos de mi empresa deben permanecer allí. : L/

1

Una opción es agregar su propio pedazo con una identificación única. La mayoría de los reproductores WAV lo ignorarán.

Otra idea sería utilizar un fragmento labl, asociado con un conjunto de que al principio o al final del archivo. También necesitaría un fragmento de que. See here for a reference

Cómo escribir los datos es sencilla

  1. "RIFF" escritura.
  2. guarde la posición de archivo.
  3. Escribe 4 bytes de 0
  4. Escribe todos los fragmentos existentes. Mantenga el conteo de bytes escritos.
  5. Agregue su pedazo. Asegúrate de obtener el tamaño adecuado. Mantenga recuento de bytes escritos.
  6. rebobinar a la posición guardada. Escriba el nuevo tamaño (como un número de 32 bits ).
  7. Cierra el archivo.

Es un poco más complicado si agrega elementos a un fragmento existente list, pero se aplica el mismo principio.

+0

Tenga en cuenta que todos los fragmentos deben tener un número par de bytes. ¡Pad con NULL si es necesario! – mivk

1

código try debajo

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

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

+2

Este código no se puede usar sin una licencia para 'Alvas Audio', se requeriría una licencia mínima de $ 500 ... –

Cuestiones relacionadas