用python给MP3加封面图片,修改作者,专辑等信息

您所在的位置:网站首页 怎么设置mp3封面 用python给MP3加封面图片,修改作者,专辑等信息

用python给MP3加封面图片,修改作者,专辑等信息

2023-09-11 07:42| 来源: 网络整理| 查看: 265

一个需求,用户上传的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