找回密码
 注册
搜索
查看: 1559|回复: 3

[音频编解码] 怎么判断AAC的文件格式?

[复制链接]
发表于 2007-9-3 09:48:29 | 显示全部楼层 |阅读模式
如何判断AAC文件格式是ADIF还是ADTS?两者有何区别与联系?
发表于 2008-4-21 17:17:33 | 显示全部楼层
我也想知道
点评回复

使用道具 举报

发表于 2008-5-3 22:39:54 | 显示全部楼层
看看FAAD的 就知道了,呵呵

/* get AAC infos for printing */
    header_type = 0;
    if ((b.buffer[0] == 0xFF) && ((b.buffer[1] & 0xF6) == 0xF0))
    {
        adts_parse(&b, &bitrate, &length);
        fseek(b.infile, tagsize, SEEK_SET);

        bread = fread(b.buffer, 1, FAAD_MIN_STREAMSIZE*MAX_CHANNELS, b.infile);
        if (bread != FAAD_MIN_STREAMSIZE*MAX_CHANNELS)
            b.at_eof = 1;
        else
            b.at_eof = 0;
        b.bytes_into_buffer = bread;
        b.bytes_consumed = 0;
        b.file_offset = tagsize;

        header_type = 1;
    } else if (memcmp(b.buffer, "ADIF", 4) == 0) {
        int skip_size = (b.buffer[4] & 0x80) ? 9 : 0;
        bitrate = ((unsigned int)(b.buffer[4 + skip_size] & 0x0F)<<19) |
            ((unsigned int)b.buffer[5 + skip_size]<<11) |
            ((unsigned int)b.buffer[6 + skip_size]<<3) |
            ((unsigned int)b.buffer[7 + skip_size] & 0xE0);

        length = (float)fileread;
        if (length != 0)
        {
            length = ((float)length*8.f)/((float)bitrate) + 0.5f;
        }

        bitrate = (int)((float)bitrate/1000.0f + 0.5f);

        header_type = 2;
    }
点评回复

使用道具 举报

发表于 2009-6-12 15:44:26 | 显示全部楼层
ADIF和ADTS两者都有各自的文件头标志,在ISO13818-7有说明,而且ADTS还分为固定头和可变头,其中固定头和mp3的帧头差不多,FF FX...现在的AAC音乐基本都是ADTS文件
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-2-25 05:36 , Processed in 0.048663 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表