• 音乐ID3 中 专辑封面解析(APIC帧)


    ID3V2 中 APIC 帧标识 专辑封面。前几天 百度 谷歌 都没有找到具体的说明。有点小伤人。

    最好参考  Android 中的 id3.cpp 以及一个java 开源 id3 库。找到这里的规格了。记录一下分享给需要的童鞋

    数据帧头(固定 10个字节)

    标签名                      4  个字节  APIC

    数据帧长度              4 个字节   XX XX XX XX

    Flag标签                  2 个字节

    帧数据

    描述信息的编码格式                      1 个字节

    MIME Type                                  (可变字节)ANSIC 字符串  strlen 计算长度就可以了。(image/jpg)

    图片类型                                        1 个字节

    数据描述段                                    下面专门写

    数据描述段    

    如果 描述信息的编码格式 0x00    好吧,这里的长度你可以用  strlen 来计算了

    如果 描述信息的编码格式 0x01   好吧,按照 UNICODE  进行计算(这里之计算长度,每次加2 知道 遇见2个0 就OK了)

    参考 Android 的代码实现:

     

    static size_t StringSize(const uint8_t *start, uint8_t encoding) {


        if (encoding == 0x00 || encoding == 0x03) {
            // ISO 8859-1 or UTF-8
            return strlen((const char *)start) + 1;
        }

        // UCS-2
        size_t n = 0;
        while (start[n] != '' || start[n + 1] != '') {
            n += 2;
        }

        return n;
    }

    给一段实际数据:

    -------------- 帧头区 ---------------

    第一个红框   APIC

    第二个绿框   数据长度

    第三个红框   00 00 标识

    ------------------ 数据区-----------------

    第一个蓝框    01  标识描述字段是 unicode

    一串ANSIC 字符 image/jpeg  描述 MIME

    第二个蓝框    03  标识 图片类型

    FF FE 65 00 00 00 // 描述字段 (FF FE 标识大小端, 最后两个00 00 标识 Unicode 描述信息结束 )ANSIC 不列举了

    FF  D8  ........  实际封面图片数据, JPEG 图片 一定是 FF D8 开始哦!

    小结一下:

    描述信息的编码  1个字节

    MIME 字符串    N 个字节  strlen 计算

    IMAGE 类型    1个字节

    描述信息

    实际图片数据

  • 相关阅读:
    C# 反射机制(转)
    asp.net 控件开发(三)处理标签间内容
    WCF学习(三)数据契约1
    个人的一点私事
    Asp.net 控件开发(四) 数据回传
    WCF学习 (四) 数据契约的事件
    wcf学习(一):预览
    WCF学习(二)服务契约
    css3图片3D翻转
    Javascript面向对象(一)(共有方法,私有方法,特权方法)
  • 原文地址:https://www.cnblogs.com/pangblog/p/3327548.html
Copyright © 2020-2023  润新知