用python给MP3加封面图片,修改作者,专辑等信息 |
您所在的位置:网站首页 › 怎么设置mp3封面 › 用python给MP3加封面图片,修改作者,专辑等信息 |
一个需求,用户上传的mp3需要给自动加上用户传的封面图, 研究linux的ffmpeg,发现用这个加专辑信息还是容易的,但是封面始终加不上,无法,去研究mp3文件的编码吧 用来描述MP3信息的head有两个大版本,分别是idv2和idv3,idv2放在文件尾部,只能描述一些简单的信息,idv3就厉害了,可以添加图片,和其它各种信息,包括自定义信息(做一些防盗版的事儿也可以) 我们只研究 idv3,它放在文件头 idv3也有几个常用的版本,一个是idv3.3一个是idv3.4两者区别不大,就是frame中的长度idv3.4 改成了sync safe integer ,其它相同,但是idv3.4只有iturns和一些比较先进的播放器能识别出来,比如windows 8 的mediaplay 就无法识别出来,这样在windows的文件夹中,那张封面图就木有了,所以,我们主要研究idv3.3 idv3.3分 header和frame ,header描述 整个idv3.3的长度啊,和一些常见信息 共10bytes,frame可以有多个,比如专辑名,作者名,就是两个frame 每个frame也有它的头,也是10个字节,下面具体描述 header 共10个字节 1-3 字节 字符串 ID3 4 字节 整数 表示版本号 正常是03 或者 04,03就是idv3.3 ,04就是idv3.4 5 字节 整数 小版本号 不管它 6 一个flags 不管它 用0即可 7-10 字节 一个无符号整数 表示整个id3头的长度,这里的长度是个synchsafe integer,具体这个是啥,你可以去百度搜,我这儿只提供个算法,将该数字转义成真正的长度(不包括这个头的长度) def decode(x): #如果按照正常算法得到的是synchsafe integer,解析成 真正的整数大小 a = x & 0xff; b = (x >> 8) & 0xff; c = (x >> 16) & 0xff; d = (x >> 24) & 0xff; x_final = 0x0; x_final = x_final | a; x_final = x_final | (b > 14) & 0x7f; d = (x >> 21) & 0x7f; x_final = 0x0; x_final = x_final | a; x_final = x_final | (b > 16) & 0xff; d = (x >> 24) & 0xff; x_final = 0x0; x_final = x_final | a; x_final = x_final | (b > 14) & 0x7f; d = (x >> 21) & 0x7f; x_final = 0x0; x_final = x_final | a; x_final = x_final | (b |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |