2010-08-09 9 views

Répondre

0

Si vous examinez le wave file spec, vous verrez qu'il ne semble y avoir aucune place pour des annotations d'aucune sorte. Une option serait d'envelopper le fichier wave avec votre propre format qui inclut des informations personnalisées mais vous créeriez en fait un tout nouveau format qui ne serait pas lisible par les utilisateurs qui n'ont pas votre application. Mais vous pourriez être d'accord avec ça.

+1

D'après ce que j'ai lu, je peux l'intégrer dans le cadre de la structure RIFF, je ne peux pas comprendre que les structures et les étiquettes à utiliser . – Curtis

0

Peut-être le format de fichier niste vous donnera ce que vous voulez: NIST

Voici une lib qui pourrait aider, mais je crains qu'il a l'air vieux. Je ne peux pas trouver plus d'informations utiles maintenant comment exactement l'utiliser, et j'ai peur que les documents d'information de mon entreprise doivent rester là. : L/

1

Une option consiste à ajouter votre propre bloc avec un ID unique. La plupart des joueurs WAV l'ignoreront.

Une autre idée serait d'utiliser un bloc labl, associé à un ensemble que ce soit au début ou à la fin du fichier. Vous aurez également besoin d'un bloc que. See here for a reference

Comment écrire les données est simple

  1. Ecrire "RIFF".
  2. enregistrer la position du fichier.
  3. Écrire 4 octets de 0
  4. Écrire tous les blocs existants. Gardez le nombre d'octets écrits.
  5. Ajoutez votre morceau. Assurez-vous d'obtenir la bonne taille. Conserver nombre d'octets écrits. Rembobiner vers la position sauvegardée
  6. Écrivez la nouvelle taille (en tant que numéro 32 bits ).
  7. Fermez le fichier.

C'est un peu plus compliqué si vous ajoutez des éléments à un bloc list existant, mais le même principe s'applique.

+0

Prenez garde que tous les morceaux doivent avoir un nombre pair d'octets. Pad avec une valeur NULL si nécessaire! – mivk

1

code Essayez ci-dessous

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

Ce code est inutilisable sans une licence 'Alvas Audio', une licence minimum de 500 $ serait nécessaire ... –

Questions connexes