Audio 音频(.aa)文件规格?

Audio 音频(.aa)文件规格?,audio,Audio,有人知道音频(.aa)文件规范中有好的资源吗 我正在尝试编写一个可以使用它们的程序,如果没有人知道某个资源,我自己有没有关于反向工程规范的技巧?我在一个十六进制编辑器中打开它,四处翻找,看起来像一个MP3,但标题信息更多。我想,没有规范。请看: 引述: [...] Audible introduced one of the first digital audio players in 1997. The following year it published a Web site from wh

有人知道音频(.aa)文件规范中有好的资源吗


我正在尝试编写一个可以使用它们的程序,如果没有人知道某个资源,我自己有没有关于反向工程规范的技巧?我在一个十六进制编辑器中打开它,四处翻找,看起来像一个MP3,但标题信息更多。

我想,没有规范。请看:

引述:

[...]
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.
[...]

小结:专有/专利

我对音频报头做了一些研究,为我的车载收音机/电脑创建了一个播放器。基本上,文件开头有一个3700个字符的块,包含许多感兴趣的字段,如标题、作者、叙述者等。我用C#编写了一些有限的解析代码来显示.aa文件中的一些基本信息。详情如下:

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

这个网站提供了一些关于某些数据块在.aa文件中的位置的更多信息

goldwave(www.goldwave.com)可以阅读,但我认为他们被告知停止阅读,DRM