网站首页 > 易语言相关 > 易语言模块源码 正文
.版本 2 .支持库 iconv .子程序 取ID3v2标签, ID3v2, 公开, 支持ID3v2.3 .局部变量 p标签, 整数型 .局部变量 标签, 文本型 .局部变量 标签头, 字节集, , , 10 .局部变量 标签尺寸, 整数型 .局部变量 帧尺寸, 整数型 .局部变量 帧标识, 文本型 .局部变量 帧内容, 字节集 .局部变量 标签帧组, 字节集, , , 除去标签头 .局部变量 x, 整数型 .局部变量 x1 .局部变量 ID3v2, ID3v2 .局部变量 计次 p标签 = BASS_ChannelGetTags (实例句柄, #BASS_TAG_ID3) .如果真 (BASS_ErrorGetCode () = #BASS_ERROR_NOTAVAIL) p标签 = BASS_ChannelGetTags (实例句柄, #BASS_TAG_ID3V2) .如果真结束 ' ID3V2.3标签结构 ' 一个标签头 + 多个标签帧 ' 标签头[10]: 类型[3](必须是"ID3") 版本号[1] 副版本号[1] 标志[1](二进制只有3位) 标签大小[4](每个字节最高位为0,不使用 包括标签头和标签帧) 标签头 = 指针到字节集 (p标签, 10) ' 调试输出 (“标签信息”, 字符 (标签头 [1]) + 字符 (标签头 [2]) + 字符 (标签头 [3]), 字符 (标签头 [4]), 字符 (标签头 [5]), 字符 (标签头 [6])) ' 调试输出 (“标签尺寸”, 到整数 (标签头 [7]) × 2097152 + 到整数 (标签头 [8]) × 16384 + 到整数 (标签头 [9]) × 128 + 到整数 (标签头 [10])) 标签尺寸 = 到整数 (标签头 [7]) × 2097152 + 到整数 (标签头 [8]) × 16384 + 到整数 (标签头 [9]) × 128 + 到整数 (标签头 [10]) 标签帧组 = 指针到字节集 (p标签, 标签尺寸) 标签帧组 = 取字节集右边 (标签帧组, 标签尺寸 - 10) ' 标签帧:帧头【10】 内容【不定】 ' 帧头:标识【4】 内容尺寸:【4】(不包括帧头,最小为1) 标志【2】 ' 举例: ' * “帧标识” | “TSSE”(编码设置) | “帧尺寸” | 13 ' * “帧标识” | “APIC”(封面) | “帧尺寸” | 94331 ' * “帧标识” | “COMM”(备注) | “帧尺寸” | 950 ' * “帧标识” | “TALB”(专辑) | “帧尺寸” | 37 ' * “帧标识” | “TIT1”(内容分组) | “帧尺寸” | ' * “帧标识” | “TIT2”(标题) | “帧尺寸” | 37 ' * “帧标识” | “TIT3”(副标题) | “帧尺寸” | ' * “帧标识” | “TPE1”(作者) | “帧尺寸” | 59 ' * “帧标识” | “TPE2”(乐队) | “帧尺寸” | ' * “帧标识” | “TPE3”(指挥) | “帧尺寸” | ' * “帧标识” | “TPE4”(Remix) | “帧尺寸” | ' * “帧标识” | “TRCK”(音轨) | “帧尺寸” | 5 ' * “帧标识” | “TYER”(年代) | “帧尺寸” | x = 1 .循环判断首 () 帧标识 = 字符 (标签帧组 [x]) + 字符 (标签帧组 [x + 1]) + 字符 (标签帧组 [x + 2]) + 字符 (标签帧组 [x + 3]) 帧尺寸 = 到整数 (标签帧组 [x + 4]) × 16777216 + 到整数 (标签帧组 [x + 5]) × 65536 + 到整数 (标签帧组 [x + 6]) × 256 + 到整数 (标签帧组 [x + 7]) .如果真 (帧标识 ≠ “”) 帧内容 = 取字节集中间 (标签帧组, x + 10, 帧尺寸) .判断开始 (帧标识 = “TIT2”) ' 帧内容 [1] = 0 表示ISO-8859-1编码 = 1 表示Unicode编码 .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.标题 = ID3v2.标题 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.标题 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “TPE1”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.作者 = ID3v2.作者 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.作者 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “TALB”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.专辑 = ID3v2.专辑 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.专辑 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “APIC”) ' 音乐封面 ' 封面数据结构: 编码格式【1】 MIME类型【不定】 图片类型【1】 数据描述段【不定】 真实图片数据【剩余长度】 .判断开始 (到整数 (帧内容 [1]) = 0) x1 = 2 取字节集数据 (帧内容, #文本型, x1) ' MIME类型 C++中用strlen计算长度 取字节集数据 (帧内容, #文本型, x1) .判断 (到整数 (帧内容 [1]) = 1) ' Unicode编码 ' 未完成 .默认 .判断结束 ID3v2.封面 = 取字节集右边 (帧内容, 帧尺寸 - x1 + 1) .判断 (帧标识 = “TYER”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.年代 = ID3v2.年代 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.年代 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “TRCK”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.音轨 = ID3v2.音轨 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.音轨 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “COMM”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.备注 = ID3v2.备注 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.备注 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .默认 .判断结束 .如果真结束 ' 位置跳到下一帧 x = x + 10 + 帧尺寸 .循环判断尾 (x + 10 ≤ 标签尺寸 - 10) 返回 (ID3v2)
@hxznhf
- 上一篇: QQ群成员提取导出软件
- 下一篇: 易语言简单的窗口网格布局演示(仅做参考)
猜你喜欢
- 2023-10-09 定时执行任务模块(Metr_定时执行任务[Majo])
- 2023-02-13 讯飞文本识别鉴权与文字识别源码
- 2022-04-07 大漠插件免费版3.1233的中文版模块
- 2022-04-05 易语言log日志模块源码
- 2022-03-13 易语言TCP客户端模块 支持SSL
- 2021-12-23 队长自动化测试模块2.96
- 2021-12-12 判断电脑是否开启VT虚拟化(你的cpu虚拟化特性vt没有开启)
- 2021-12-01 Echarts商业级数据图表库模块v1.7.0.328【模块及示例大全】
- 2021-11-27 动态添加选择夹子夹例程源码
- 2021-11-14 配置项加密读写源码
你 发表评论:
欢迎- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag
本文暂时没有评论,来添加一个吧(●'◡'●)