Je cherche un exemple de code pour me montrer comment ajouter des métadonnées aux fichiers wav que nous créons. Quelqu'un?Comment ajouter des métadonnées au fichier WAV?
Répondre
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.
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/
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
- Ecrire
"RIFF"
. - enregistrer la position du fichier.
- Écrire 4 octets de 0
- Écrire tous les blocs existants. Gardez le nombre d'octets écrits.
- Ajoutez votre morceau. Assurez-vous d'obtenir la bonne taille. Conserver nombre d'octets écrits. Rembobiner vers la position sauvegardée
- Écrivez la nouvelle taille (en tant que numéro 32 bits ).
- 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.
Prenez garde que tous les morceaux doivent avoir un nombre pair d'octets. Pad avec une valeur NULL si nécessaire! – mivk
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
Ce code est inutilisable sans une licence 'Alvas Audio', une licence minimum de 500 $ serait nécessaire ... –
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