2009-02-21 7 views
2

Est-ce que quelqu'un connaît une bonne ressource sur la spécification de fichier Audible Audio (.aa)? J'essaie d'écrire un programme qui peut les utiliser, si personne ne connaît une ressource, des conseils sur l'ingénierie inverse de la spécification de moi-même? Je l'ai ouvert dans un éditeur Hex et je me suis baladé, il ressemble à un MP3 mais avec une tonne d'infos en-tête.Spécification de fichier Audible Audio (.aa)?

+1

goldwave (www.goldwave.com) pouvait les lire, mais je pense qu'on leur a dit d'arrêter, DRM – kjack

+0

oohh ... hhmmmm qui aspire ... – Adam

Répondre

2

Je l'ai fait des recherches sur l'en-tête sonore pour créer un joueur pour ma radio voiture/ordinateur. Fondamentalement, il ya un bloc de 3700 caractères au début du fichier qui englobe un certain nombre de champs d'intérêt, tels que Titre, Auteur, Narrateur, etc. J'ai un code d'analyse limité en C# pour afficher certaines des informations de base de la fichier .aa. comme suit:

private void ParseFields(string fileName) 
    { 
     string aaHeader; 
     string tryDate; 
     if (fileName == "") return; 

     using (StreamReader sr = new StreamReader(fileName)) 
     { 
      char[] buff = new char[3700]; 
      sr.Read(buff, 0, buff.Length); 
      aaHeader = new string(buff); 
     } 
     try 
     { 
      _author = GetParsedItem(aaHeader, "author"); 
     } 
     catch 
     { 
      _author = "?"; 
     } 
     try 
     { 
      _title = GetParsedItem(aaHeader, "short_title"); 
     } 
     catch 
     { 
      _title = "???"; 
     } 
     try 
     { 
      _narrator = GetParsedItem(aaHeader, "narrator"); 
     } 
     catch 
     { 
      _narrator = "?"; 
     } 
     try 
     { 
      _description = GetParsedItem(aaHeader, "description"); 
     } 
     catch 
     { 
      _description = "???"; 
     } 
     try 
     { 
      _longDescription = GetParsedItem(aaHeader, "long_description"); 
     } 
     catch 
     { 
      _longDescription = ""; 
     } 
     try 
     { 
      tryDate = GetParsedItem(aaHeader, "pubdate"); 
      if (tryDate != "") 
       _pubDate = Convert.ToDateTime(GetParsedItem(aaHeader, "pubdate")); 
      else 
       _pubDate = DateTime.Today; 
     } 
     catch 
     { 
      _pubDate = DateTime.Today; 
     } 
    } 
    private string GetParsedItem(string buffer, string fieldName) 
    { 
     if (buffer.Contains(fieldName)) 
     { 
      int pos = buffer.IndexOf(fieldName); 
      pos += fieldName.Length; 
      int posEnd = buffer.IndexOf('\0',pos); 
      //if the value for the field is empty, skip it and look for another 
      if (pos == posEnd) 
      { 
       pos = buffer.IndexOf(fieldName, posEnd); 
       pos += fieldName.Length; 
       posEnd = buffer.IndexOf('\0', pos); 
      } 
      return buffer.Substring(pos, posEnd - pos); 
     } 
     else 
      return "(not found - " + fieldName + ")"; 
    } 
1

Je pense, il n'y a pas de spécification. Jetez un oeil à Wikipedia/Audible.com:

citation:

[...] 
Audible introduced one of the first digital audio players in 1997. 
The following year it published a Web site from which audio files in its 
proprietary .aa format could be downloaded. Audible holds a number of patents 
in this area. 
[...] 

Résumé: brevets propriétaires/

Questions connexes