Android 音乐信息乱码
来源:互联网 发布:团员考试答案软件 编辑:程序博客网 时间:2024/06/16 10:34
有哪些问题导致:
1、google mediaScanner 的缺陷
2、qcom MP3 PARSER的问题 (找QCOM)
Google不支持针对每个TAG ITEM 单独处理, 而是假设ID3 中所有的TAG类型都是一种编码格式
摘自百度百科:
ID3 V2 (一般是V2.3)
帧头的定义如下:
char FrameID[4]; /用四个字符标识一个帧,说明其内容,稍后有常用的标识对照表/
char Size[4]; /帧内容的大小,不包括帧头,不得小于1/
char Flags[2]; /存放标志,只定义了6位,稍后详细解说/
1.帧标识
用四个字符标识一个帧,说明一个帧的内容含义,常用的对照如下:
TIT2=标题 表示内容为这首歌的标题,
TPE1=作者
TALB=专集
TRCK=音轨 格式:N/M 其中N为专集中的第N首,M为专集中共M首,N和M为ASCII码表示的数字
TYER=年代 是用ASCII码表示的数字
TCON=类型 直接用字符串表示
COMM=备注 格式:”eng\0备注内容”,其中eng表示备注所使用的自然语言
下面摘自:http://article.yeeyan.org/view/460289/398443
一般来说,一个字符串表示范围在
所有数字字符串和URL必须编码为ISO-8859-1。如果编码为ISO-8859-1则必须以
对于允许不同类型文字编码的帧,在其帧大小之后紧跟一个字符编码描述位。如果使用ISO-8859-1则该位应为
对于NULL结尾的空Unicode字符串,在Unicode DOM之后跟随一个Unicode NULL(
三个字节的语言字段用户描述帧内容的语言,其参照ISO-639-2标准。
0000 0000代表字符使用ISO-8859-1编码方式。
0000 0001代表字符使用UTF-16编码方式。 (FFFE开始标志,很多文件没有这个标志,软件兼容处理吧)
0000 0002代表字符使用 UTF-16BE编码方式。(BIG ENDIAN)
0000 0003代表字符使用UTF-8编码方式。
解决方案:
对每个TAG ITEM 单独测试码表,然后利用 ucnv_convertEx 将源编码格式转换为UTF-8格式
KK 的源码中有MediaScannerClient::convertValues,
这个函数循环处理了 mValues 这个数组。
很简单: 将这个函数改造成针对单个TAG item的函数。
然后改造 endFile, 针对单个ITAM处理即可。
附件:
一、Hex Workshop 打开 某MP3文件Skyfall 片段:
4944330400000000083D54504531000000060000004164656C655449543200000023000003536B7966616C6C2028E794B5E5BDB1E3808A303037E3808BE4B8BBE9A298E69BB229
逐一分析,先取 ID3V2头分析:
49 44 33 04 00000000083D (49 44 33 =ID3 ,在文件起始处那么就是ID3v2,04 代表为ID3V2.4)
是否有扩展头,也在上面描述,这个略过。
然后是ID3 帧序列(帧1(帧头+帧体)、帧2、帧3~~~~)
54504531 000000 06 0000 00 4164656C65
[ Ascii: ID3……=TPE1…….Adele] 06是帧体长度, 00是帧体首字节,代表编码为 ISO-8859-1
54495432 000000 23 0000 03 536B7966616C6C2028E794B5E5BDB1E3808A303037E3808BE4B8BBE9A298E69BB229
[Ascii:TIT2…#…Skyfall (………007…………)] 23是帧体长度, 03是帧体首字节,代表编码为 UTF-8
二、Hex Workshop 打开另一个文件:黄昏.mp3
49443303000000016E515449
543200000005000001C49E0F66
54434F50000000 28 0000 00 B0AEC7E9B1A3CFCABAD0204C6F766520496E204120426F7820BEDED0C7D0C2B4BABEABD1A1BC
上面这行表示帧体为 ISO-8859-1编码,但是事实上编码内容上看是GBK。
- Android 音乐信息乱码
- ubuntu 音乐信息乱码
- Android 音乐乱码问题修改
- Android音乐播放器乱码
- Android 音乐播放器中显示歌曲的信息
- android,获取当前手机播放的音乐信息
- Android多媒体__信息和简单的音乐播放
- 解决音乐播放乱码
- ubuntu音乐乱码
- 音乐播放器乱码
- Linux下音乐乱码
- Android Studio 工具窗口信息乱码问题。
- QQ音乐信息架构
- 音乐id3信息解析
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- 如何远程连接POSTGRESQL数据库
- Eclipse 常用快捷键
- 网上下载的ios开源有签名---更改为自己的签名方法-----sign----ios---签名---证书
- 第2章受限的线性表
- ubuntu下搭建tomcat服务器
- Android 音乐信息乱码
- JavaWeb监听器
- Eclipse 中编辑XML文件不能进行提示的解决方法
- ssh无密码登录
- Bash shell编程<七>:处理选项、getopt命令
- CSS样式重置
- JSPatch – 动态更新iOS APP
- 操作系统概念阅读笔记3
- linux常用命令—— 系统管理(五)