zoukankan      html  css  js  c++  java
  • 音乐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个字节

    描述信息

    实际图片数据

  • 相关阅读:
    类似直播点赞动画(出现一颗心缓缓升起然后消失)
    进入App弹出提示框
    iOS NSString 截取字符串(根据索引截取)
    刷新tableView 保持头部视图 不变
    截取一段字符串中,两个指定字符串中间的字符串
    ios 导航栏透明, 上下滑动 导航栏 颜色渐变
    ios 自定义键盘的return键以及键盘的其他一些属性
    百度地图通过坐标定位 自己的位置显示小圆点 (精度圈是否显示根据自己喜好) 上图
    百度地图定位 (直接上图上代码)
    iOS 对H5加载html的数据的一些基础设置
  • 原文地址:https://www.cnblogs.com/pangblog/p/3327548.html
Copyright © 2011-2022 走看看