13

我有一个压缩文件,它的大小是 728,不知何故我知道这是一个音频文件,它持续 1040 毫秒

压缩文件结构很简单:

它由 14 字节块组成,每个块以 0x0C 开头:

0c xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx 0c xx xx xx xx xx xx xx xx xx xx xx xx xx

(xx) 可以是任何十六进制数

您可以在此处下载压缩的二进制文件:

http://dusijun.files.wordpress.com/2013/02/29-aud-bin.doc (请重命名为 *.aud )

或文档格式的文本视图

http://dusijun.files.wordpress.com/2013/02/29-aud.doc

没有标头或元信息。块的数量取决于实际音频的长度。文件大小的音频持续时间约为 1.42

例如

如果文件大小 = 9506,那么音频可以持续 9506*1.42 = 13580 毫秒,大约 13 秒

有谁知道它可能是什么编解码器?

PS:

二进制文件为微信(ios)音频文件。

参考

1)如何提取/播放 .aud 文件?

http://www.boards.ie/vbulletin/showthread.php?t=2055891600

2)微信ios

https://itunes.apple.com/us/app/wechat/id414478124?mt=8

4

2 回答 2

7

我怀疑它是一个语音编解码器。例如RFC6716OPUS。对于 NB 语音,此编解码器的比特率为8-12 kbit/s0x0c适合SILK20ms 帧大小的配置。

| 0...3 | 仅限丝绸 | 注意 | 10、20、40、60 毫秒 |

20 毫秒的帧大小提供大约 14 字节。我尝试将示例保存为29-aud-bin.opus并在 Firefox 中打开它,但它缺少其他opus文件所具有的标头。SILKSkype 还使用了一个版本的编解码器。

于 2013-03-03T00:42:18.177 回答
3

它是什么编解码器?不知怎的,我知道这是一个音频文件。二进制文件为微信(ios)音频文件。

为可下载的示例文件提供 AUD 扩展名是没有意义的。

您最有可能在 Westwood 视频游戏的程序文件夹中找到 AUD 文件。具有 AUD 文件扩展名的文件是视频游戏压缩音频文件。


如何找到编解码器?

如果您知道编解码器的名称或其 ID(视频编解码器的 FourCC 标识符或音频编解码器的 WaveFormat 标识符),请尝试搜索 Internet。您通常可以访问编解码器制造商的网站下载最新版本的编解码器。

由于您的文件没有标题或元信息(文件魔术),您只能依赖文件扩展名,例如:

http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/AU/AU.html

在此处输入图像描述

如果我得到一个带有 .EXE 扩展名的文件并且 *不知何故我知道这确实是一个音频文件`,我可以使用Winista检查文件魔法。

public MimeType GetMimeTypeFromFile(string filePath)
{
    sbyte[] fileData = null;
    using (FileStream srcFile = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        byte[] data = new byte[srcFile.Length];
        srcFile.Read(data, 0, (Int32)srcFile.Length);
        fileData = Winista.Mime.SupportUtil.ToSByteArray(data);
    }

    MimeType oMimeType = GetMimeType(fileData);
    if (oMimeType != null) return oMimeType;

    //We haven't found the file using Magic (eg a text/plain file)
    //so instead use URLMon to try and get the files format
    Winista.MimeDetect.URLMONMimeDetect.urlmonMimeDetect urlmonMimeDetect = new Winista.MimeDetect.URLMONMimeDetect.urlmonMimeDetect();
    string urlmonMimeType = urlmonMimeDetect.GetMimeFromFile(filePath);
    if (!string.IsNullOrEmpty(urlmonMimeType))
    {
        foreach (MimeType mimeType in types)
        {
            if (mimeType.Name == urlmonMimeType)
            {
                return mimeType;
            }
        }
    }

    return oMimeType;
}

注意使用 URLMon 来查找 MIME 类型的代码可以在msdn 上找到 - 检测文件类型

上述方法将打开文件并检测其真正的 MIME 类型以了解使用哪个程序打开它。它使用 XML 格式的视频/音频 MIME 类型映射文件进行匹配:

<!--
 !   Audio primary type
 ! -->

<mime-type name="audio/basic"
           description="uLaw/AU Audio File">
    <ext>au</ext><ext>snd</ext>
    <magic offset="0" type="byte" value="2e736e64000000"/>
</mime-type>

<mime-type name="audio/midi"
           description="Musical Instrument Digital Interface MIDI-sequention Sound">
    <ext>mid</ext><ext>midi</ext><ext>kar</ext>
    <magic offset="0" value="MThd"/>
</mime-type>

<mime-type name="audio/mpeg"
           description="MPEG Audio Stream, Layer III">
    <ext>mp3</ext><ext>mp2</ext><ext>mpga</ext>
    <magic offset="0" value="ID3"/>
</mime-type>

我尝试了 winamp 和 Windows Media Classic,但都无法打开文件。

由于您不知道文件的 MIME 类型和文件扩展名 AUD 显然是错误的,我认为无法检测到播放此文件所需的编解码器/程序。

于 2013-03-02T23:23:29.220 回答