MP3学习总结

MP3学习总结目录 1 前言 2 格式解析 2 1 ID3V1 2 2 ID3V2 2 2 1 ID3V2 3 标签头内容 2 2 2 ID3V2 3 标签帧结构 2 2 3 标签帧标识符 2 3 数据帧 2 3 1 编码方式 CBR 与 VBR 2 3 2 有效音频数据帧 3 解码原理 4 常见问题 5 参考资料 6

大家好,我是讯享网,很高兴认识大家。

目录

1 前言

2 格式解析

2.1 ID3V1

2.2 ID3V2

2.2.1 ID3V2.3标签头内容

2.2.2 ID3V2.3标签帧结构

2.2.3 标签帧标识符

2.3 数据帧

2.3.1 编码方式:CBR与VBR

2.3.2 有效音频数据帧

3 解码原理

4 常见问题

5 参考资料

6 附录[1]

6.1 VBR帧

6.2 MPEG 音频版本表

6.3 比特率索引表(单位 Kbps)

​6.4 采样率索引表

6.5 每帧数据的采样数

6.6 channel 模式表

6.7 标签帧的标识以及其意义对照表


1 前言

该文档旨在提供一个对MP3整体的认识,方便入门,文章引用已标明,如有错误纰漏,非常欢迎指出。

MP3全称为MPEG Audio Layer 3,是一种音频编码方案。MPEG有三种音频编码方案,包括Layer1、Layer2、Layer3。通常MP3指的是Layer3。

2 格式解析

MP3主要由多个数据帧组成,一个数据帧包括帧头与数据块。在MP3文件的开头,可能包括ID3V2元数据,而文件末尾可能包括128字节的ID3V1元数据MP3最开始只有数据帧,对于应用者而言,无从得知该mp3文件的相关信息,包括演唱者,作曲家,专辑名等,因此产生了ID3V1标签,固定128个字节,放在文件最后,该标签可以提供如上的信息。然而,固定的128个字节ID3V1标签所能提供的信息实在有限,越来越不满足应用的需要,ID3V2应运而生,该标签存在于文件首部,作为ID3V1的补充。毕竟,文件尾部已经被占用了。

 

2.1 ID3V1

ID3v1是第一个版本的音频标签,长度为固定的 128 字节,位置在 MP3 文件的尾部。

名称 字长长度 字节位置 说明
Tag 3 1~3 ID3V1标识符“TAG”的Ascii码
Title 30 4~33 歌曲名的音频
Artist 30 34~63 歌手名的音频
Album 30 64~93 专辑名的音频
Year 4 94~97 日期信息音频
Comment 28 98~125 注释信息,有时为30字节
Reserved 1 126 =0说明有音轨,下一字节就是音轨;≠0表示注释是30个字节
Track 1 127 音轨(字节型数值),歌曲在专辑里的序号
Genre 1 128 歌曲风格(字节型数值)
注释: 1.如果MP3的注释=30字节,那么就要占用 Reserved 和 Track 两个字节,这要看 Reserved 是否=0,如果=0,那么注释有 28 个字节。如果不是,那么注释有 30 个字节。当注释=30 个字节的时候,那就没有 Track 了。 2.如果 MP3 文件后面虽然有“TAG”三个字母,但字母后面全是0,那就不是一个合法的 ID3V1 信息,应该认为没有 ID3V1 信息。 3.ID3V1 的各项信息都是顺序存放,没有任何标识将其分开,一般用 0补足规定的长度。比如歌曲名有 20 个字节,则在歌曲名后要补足 10 个 0,否则将造成信息错误。 4.歌曲风格共 148 种,用编号表示,详情可上网查询。其数据存放按照顺序一个个存放,如果长度不足则补 0,ID3v1 应该已经比较少用了。
讯享网

2.2 ID3V2

ID3V2由10个字节的标签头与多个标签帧组成,标签帧不固定长度,包括10个字节的帧头与至少1字节的帧内容。

2.2.1 ID3V2.3标签头内容

名称 字节长度 字节位置 说明
Header 3 1~3 ID3V2.3标识符"ID3"的Ascii码
Ver 1 4 版本号
Revision 1 5 副版本号
Flag 1 6 标志字节,一般没意义,=00
Size 4 7~10 标签内容长度,高位在前,不包括标签头的10个字节
讯享网注释 1.Size 字段的计算公式如下(从左至右): size =字节1的值*0x+字节2的值*0x4000+字节3的值*0x80+字节4的值(每个字节只用7位,最高位不使用,恒为0) 2.如果所有标签帧的总长度<标签内容长度,则须用0填满。

2.2.2 ID3V2.3标签帧结构

名称 字节长度 字节位置 说明
FrameID 4 1~4 帧标识符的Ascii码
Size 4 5~8 帧内容及编码方式的合计长度,高位在前,不包括帧头
Flags 2 9~10 标志,只使用了6位,一般均=0
帧内容     至少 1 个字节

ID3V2长度不固定,尾部可能有补空数据。

注释 1.标签帧大小计算公式:Size = Size[0]*0x+Size[1]*0x10000+Size[2]*0x100+Size[3]。 2.标签帧之间没有特殊的分隔符,要得到一个完整的标签帧内容必须先从帧头中得到帧内容长度。 3.帧内容均为字符串,常以 00 开头。 4.Flags一般没用,通常为0.

2.2.3 标签帧标识符

名称 意义 名称 意义
TALB 专辑 TCOM 作曲家
TCON 流派 TCOP 版权
TDAT 日期 TENC 编码
TEXT 歌词作者 TFLT 文件类型
TIT2 标题 TIT3 副标题
TLAN 语言 TLEN 长度
TMED 媒体类型 TOWM 文件所有者
TRCK 音轨 TSIZ 大小
讯享网注释 1.帧内容是数字的,都用 Ascii 字符表示。 2.有的 TCON(风格、流派)的帧内容是直接用字符串表示的,如“genre”,而有的则是用编号表示的,如“28 31 32 29”就是用字符串“(12)”表示 12 号风格,我们在解析的时候要注意。 3.TRCK(音轨)的帧内容格式是:N/M。其中,分母表示专辑中共有 M 首歌曲,分子表示专辑中的第 N 首曲。

2.3 数据帧

2.3.1 编码方式:CBR与VBR

MP3有两种编码方式,一种是CBR,一种是VBR,前者是恒定码率,后者是可变码率。

恒定码率的帧大小是固定的,除去ID3V1与ID3V2,有效数据帧总长度为帧大小与帧数据的乘积,从而可算得MP3播放时长,跳播容易。一般有效数据帧第一帧即为音频数据,但也有例外,有些编码器在编码CBR文件时也像VBR那样将信息记入第一帧,比如著名的lame,它使用"Info"来做CBR的标记。

VBR是XING公司推出的算法,所以在MP3的FRAME里会有“Xing"这个关键字(也有用"Info"来标识的,现在很多流行的小软件也可以进行VBR压缩,它们是否遵守这个约定,那就不得而知了),它存放在MP3文件中的第一个有效帧的数据区里,它标识了这个MP3文件是VBR的,也就是说,MP3数据帧如果是VBR编码,则第一帧是VBR帧。。同时第一个帧里存放了MP3文件的帧的总个数,这就很容易获得了播放总时间,同时还有100个字节存放了播放总时间的100个时间分段的帧索引,假设4分钟的MP3歌曲,240S,分成100段,每两个相邻INDEX的时间差就是2.4S,所以通过这个INDEX,只要前后处理少数的FRAME,就能快速找出我们需要快进的帧头。其实这第一帧就相当于文件头了 。[1]

CBR相关计算公式: LayerII 与 LayerII 帧长 = (每帧采样次数 * 比特率 / 8 / 采样率) + 补白 LayerI 帧长 = (每帧采样次数 * 比特率 / 8 / 采样率) + 补白 * 4 CBR 总播放时长计算公式: 播放时长 = (文件大小 – ID3标签大小) * 8 / 比特率 ​ VBR相关计算公式: VBR 总播放时长计算公式: 播放时长 = 有效数据帧总帧数 * 每帧采样数 / 采样率 每一帧的播放时长计算公式: 帧播放时长 = 采样数 / 采样频率 * 1000 毫秒

关于VBR帧、INFO帧、VBRI帧的结构与实例分析,参见参考文献[1],该文章对照着MP3二进制数据,解析了VBR帧与VBRI帧。另外也可以见附录1,引用自文献[1]。

2.3.2 有效音频数据帧

每个帧都有一个帧头,长度是四个字节,帧后面可能有2字节的CRC校验,取决于帧头的第16位,为0则无校验,为1则有校验,后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是32字节,紧接其后的是压缩的声音数据,当解码器读到此处时就进行解码了。

帧头结构

typedef FrameHeader {   unsigned int sync:11;                       //同步信息   unsigned int version:2;                     //版本   unsigned int layer: 2;                           //层   unsigned int error protection:1;           // CRC校验   unsigned int bitrate_index:4;             //位率   unsigned int sampling_frequency:2;         //采样频率   unsigned int padding:1;                   //帧长调节   unsigned int private:1;                       //保留字   unsigned int mode:2;                         //声道模式   unsigned int mode extension:2;       //扩充模式   unsigned int copyright:1;                           // 版权   unsigned int original:1;                     //原版标志   unsigned int emphasis:2;                 //强调模式 }HEADER;

帧头信息

帧头信息如下表所示,该图引用于博文[1]。

帧边信息(通道信息)

在帧头后边是Side Info(姑且称之为通道信息)。对标准的立体声MP3文件来说其长度为32字节。当解码器在读到上述信息后,就可以进行解码了。帧边信息解码的主要目的在于找出解这帧的各个参数,包括主数据开始位置,尺度因子长度等。帧边信息如下图所示。

3 解码原理

MP3音频解码可以用下图表示总体流程,具体可参见文档《mp3解码算法原理详解》。

 

在博文《MP3解码详细过程》中,也有大概地论述MP3解码流程,如下所述:

PCM信号进行MP3压缩时,以1152个PCM采样值为单位,封装成具有固定长度的MP3数据帧,帧是MP3文件的最小组成单位。在解码时,利用数据帧里的信息就可以恢复出1152个PCM采样值。这1152个采样值被分为2个粒度组,每个粒度组包含576个采样值。一个MP3数据帧分为5个部分:帧头、CRC校验值、边信息、主数据、附加数据。

1 数据流的同步以及帧头信息的读取

MP3数据流的同步以帧为单位,每一帧的帧头都包含同步信息。这个同步信息是连续的12比特的‘1’组成。MP3音频解码过程中的第一步就是使解码器与输入数据流同步。在启动解码器后,可以通过搜索数据流中的12比特长的同步字来完成。在取得同步以后跟着的数据就是帧头信息,包括采样率、填充位、比特率等信息。

2 主数据的读取

在MP3编码过程中使用了比特池技术,所以当前帧的主数据不一定全部都在当前帧中,在解码过程中,必须结合主数据开始指针的值来确定主数据的开始位置。主数据包含的数据有缩放因子、哈夫曼数据及附加数据。这些字段在主数据中有固定的格式。

3 哈夫曼解码和反量化

在MP3编码过程中,根据心理声学模型的输出,对离散余弦变换的输出样本以粒度为单位进行的量化和分配,再对量化的结果进行哈夫曼编码。量化和编码主要是通过循环迭代完成的,循环模块分为三层来描述,最高层为帧循环,它调用外层迭代循环,而外层迭代循环又调用内层迭代循环。但在解码过程中,哈夫曼解码和反量化过程是分开实现的。每个粒度组的频率线都是用不同的哈夫曼表来进行编码的,因此在解码过程中,需要采用不同的解码方法。反量化频谱过程就是基于所得到的哈夫曼解码数据,根据逆量化全缩放公式和帧边信息,对于不同的窗类型采用不同的公式以恢复576个频率线的真实值。

4 立体声处理

5 重排序和反混叠

反量化过程中得出的频谱值不是按相同顺序排列的。在编码的MDCT过程中,对于长窗产生的频谱值先按子带然后按频率排列;对于短窗,产生的频谱值按子带、窗、频率的顺序排列。为了提供哈夫曼编码效率,短窗中的数据被重新排列,按照子带、频率、窗的顺序排列。解码时,重排序及时将短窗中的频谱值重新排列。同样,在编码的MDCT过程中,为了得到更好的频域特性,对长窗对应每个子带进行了去混叠处理,为了得到正确的音频信号,在解码时必须对长窗对应的子带进行混叠重建。

6 逆向离散余弦变换

逆向离散余弦变换主要是使用逆向离散余弦变换的公式,对反量化得出的信号进行变换。逆向离散余弦变换的计算十分复杂,为了提高效率,可以对计算做一些优化。

7 频率反转和子带合成

频率反转是对逆向离散余弦变换的输出值中的奇数号子带(0到31号子带中的1,3,5,...,31)中的奇数号样本值(每个子带中的0到17号样本值的1,3,5,...,17号样本值)进行反相处理,用来补偿编码时为提高离散余弦变换效率而进行的频率反转。子带合成滤波器将32个带宽相等的子带中的频域信号反变换成时域信号。子带合成是逆向离散余弦变换后的一个通道中32个子带的样值,经过一系列的计算还原出32个PCM数字音频信号的过程。子带合成过程先将32个子带样值进行逆向离散余弦变换,生成64个中间值,将这64个中间值转入到一个长为1024点的类似先进先出FIFO的缓存,再在这1024个值中抽取一半,构成一个512个值的矢量,再进行加窗运算,最后将加窗结果进行叠加生成32个时域输出。

4 常见问题

1.MP3的同步标识是什么?

“FF FA xx xx”或者“FF FB xx xx”

2.采样率有哪些?

在当今的主流采集卡上,采样频率一般共分为22.05KHz、44.1KHz、48KHz三个等级,22.05KHz只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加精确一些。

3.MP3的编码原理大概是怎样的?

MP3音频压缩包含编码和解码两部分,编码是将原始信号转换成电平信号的过程,解码即是逆过程,MP3 采用了感知音频编码(PerceptualAudio Coding)这一失真算法。人耳感受声音的频率范围是20Hz-20kHz,MP3截掉了大量的冗余信号和无关的信号,编码器通过混合滤波器组将原始声音变换到频率域,利用心理声学模型,估算刚好能被察觉到的噪声水平,再经过量化,转换成Huffman编码,形成MP3位流。解码器要简单得多,它的任务是从编码后的谱线成分中,经过反量化和逆变换,提取出声音信号。[1]

4.MP3一帧的时长是多少秒?一帧大小是多大?[1]

根据公式,帧时长=每帧采样数/采样频率,易知MPEG1 Layer3在44.1kHz的条件下:

帧时长=1152/4=0.026s

一帧数据的采样个数根据音频的Layer与MPEG标准不同而不同。如下表所示:

None MPEG 1 MPEG 2(LSF) MPEG 2.5(LSF)
Layer 1 384 384 384
Layer 2 1152 1152 1152
Layer 3 1152 576 576

帧长度是压缩时每一帧的长度,包括帧头的4个字节。它将填充的空位也计算在内。Layer 1的一个空位长4字节,Layer 2和Layer 3的空位是1字节。当读取MPEG文件时必须计算该值以便找到相邻的帧。注意:因为有填充和比特率变换,帧长度可能变化

计算公式如下:

Layer 1:Len(字节) = ((每帧采样数/8比特率)/采样频率)+填充4

Layer2/3:Len(字节) = ((每帧采样数/8*比特率)/采样频率)+填充

例:MPEG1 Layer3 比特率,采样率44100,填充0,帧长度为:((1152/8*128K)/44.1K+0=417字节

5.VBR头结构是怎样的?

VBR文件头位于MP3文件中第一个有效帧的数据区 ,引用自参考文献[1]。

6.ID3是怎么来的?

起初MP3并不能保存歌手名称、专辑名称、歌名、备注等附加信息,直到1996年,一个叫做Eric Kemp的人制作了Studio3软件,它可以在MP3文件的最后部分增加固定的128字节小块数据,用来记录音乐的信息。很快,MP3ext的作者Michael Mutschler又将这个标记进行了扩展,并正式将其命名为ID3,而且还使用注释的最后两个字节来记录CD和音乐的来源,其版本被定为ID3v1.1。不过ID3v1版本的限制太多,比如歌曲名长度被限制在30个英文字母,稍长一点的曲名就会被截掉,让人头痛不已。在这种情况下,它的升级版本ID3v2出现了。它首先解除了128个字节的限制,各个字段的长度也是弹性可变的,使可包含的音乐信息更为丰富,除了歌名、专辑名、演唱者外,还可保存歌词、均衡器设置、图片等信息。ID3v2的设计更灵活,扩展性更强,并且支持Unicode,因此歌词信息支持多语言。ID3v2甚至能包含一个文件,所以未来的MP3可能会附带有视频文件,让你不仅能听,还可以看。微软的Windows Midia Player就能很好地支持ID3v2,甚至在Windows XP中,你不需要打开任何播放器,只要进入一个存放MP3的文件夹,系统就能读取ID3v2的信息来对文件分类排列。

5 参考资料

1.《MP3文件结构解析》(https://blog.csdn.net/aigoogle/article/details/)

2.《MP3解码算法原理详解》(https://wenku.baidu.com/view/0dc1c929647d27284b735149.html)

3.《MP3解码详细过程》(https://blog.csdn.net/aigoogle/article/details/?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task)

6 附录[1]

6.1 VBR帧

 

标准声音帧头:Mp3时,为“FF FA xx xx”或者“FF FB xx xx”

36-39:Mp3的就是这种情况,第5至36的数据存储的是前面提到过的32字节的边信息,无效边信息时是32字节的“00”

45-48:帧数(包括第一帧)

VBR规模:VBR规模,用于位率变动音频质量指示,最差 0,最好 100,大端[可选]

举例说明: https://blog.csdn.net/xsjm206/article/details/

曲子是:刘德华 - 虹桥机场的咖啡厅.mp3(5,898,130字节,时长3分14秒)

 

a. 第37至40地址为“58 69 6E 67”,就是“Xing”标志了;

b. 第41至44地址为“00 00 00 0F”,这里是Flag了,表示该帧存储了帧数、文件长度、目录表和VBR规模信息。

c. 第45至48地址为“00 00 1D 11”,这里是文件的总帧数(包括第一帧),是big-endia的,(116^3+1316^2+1*16+1)帧。

d. 第49至52地址为“00 59 FD DE”,这里是文件的总大小,也是Big-Endian的,(516^5+916^4+1516^3+1316^2+13*16+14)=5,897,694(字节)。

e. 第53至152地址,就是100字节的目录表了(称作TOC表),如图蓝色的部分。

TOC (Table of Contents)

TCO 索引的计算方式如下:文件长度 100 比如文件持续 240 秒,我需要跳到 60 秒,文件长度为 字节 计算如下TOC[(60/240)*100] =TOC[25] 然后相对于文件中的位置大约是在 (TOC[25]/256) * 如果要自己重建的话,基本是把这个步骤反过来做就可以了。要求准确的话,就需要根据时间点找到正确帧的位置然后再计算, 定位帧的做法都是从第一帧开始搜索。

f. 第153至156字节地址为“00 00 00 64”,,音频质量指示质量指示器,为 0(最好)-100(最差)的 Big-Endian 值,没想到这个文件的音质是最差的100。

g. 接下来是Lame版本的相关信息。

Info 帧

​ info帧,结构和Xing帧是相同的,从一些网上的资料显示:这种类型的帧有点怪,在CBR文件中的第一个数据帧可以是Info帧,在VBR文件中的第一个数据帧也有可能是Info帧。根据文章xx,第一个数据帧为Info帧的文件大概率是CBR文件,比如Kugoo软件制作的铃声的第一帧都是Info帧,而且是CBR文件。

VBRI帧

据了解,目前此头信息,只有用 Fraunhofer 的编码器生成的 MPEG音频文件,才会用到此头。其和Xing 头不一样,其放在第一个MPEG头的后面,大小正好是 32字节。其位置,长度和示例,都是以字节为单位。下表是 VBRi 头的具体格式及含义,单位为字节:

位置(字节) 长度(字节) 含义 示例
0 4 4个 ASCII字符的 VBR 头ID: “VBRI”无NULL结尾 VBRI
4 2 版本 ID,大端,类型:DWORD 00 01
6 2 延迟,类型:float 0D B1
8 2 音频质量指示 00 64
10 4 文件总大小,大端,类型:DWORD 00 5F 09 68
14 4 总的帧数,大端,类型:DWORD 00 00 26 8C
18 2 TOC 表的表项数目,大端,类型:WORD 00 9A
20 2 TOC 表项的缩放因子,大端,类型:DWORD 00 02
22 2 单个 TOC 表项的大小,单位字节,最大为 4,大端,类型:DWORD 00 02
24 2 帧数/表项,大端,类型:WORD 00 40
26   用于检索的 TOC 表,整型值,可以通过每个表项大小乘以表项个数得到此TOC 表的总大小,大端 9A * 02 = 0X134

如下图所示,蓝色部分包括了4个字节的帧头,32个字节的空字节,以及26个字节的不包括TOC表的VBRI帧内容。从地址0x6BC开始,0x6BC--0X6BF为VBRI字符。从0X6D7至0X80A为TOC表内容。文件总大小为0X5F0968字节,不包括ID3与TAG,也就是说,如果用HXD看整个文件的大小,实际上是大于0X5F0968字节的。

6.2 MPEG 音频版本表

index content
00 MPEG 2.5
01 reserved
10 MPEG 2
11 MPEG 1

6.3 比特率索引表(单位 Kbps)

Bitrate Index MPEG 1 MPEG 2,2.5      
  LayerI LayerII LayerIII LayerI LayerII&LayerIII
0000 FREE        
0001 32 32 32 32 8
0010 64 48 40 48 16
0011 96 56 48 56 24
0100 128 64 56 64 32
0101 160 80 64 80 40
0110 192 96 80 96 48
0111 224 112 96 112 56
1000 256 128 112 128 64
1001 288 160 128 144 80
1010 320 192 160 160 96
1011 352 224 192 176 112
1100 384 256 224 192 128
1101 416 320 256 224 144
1110 448 384 320 256 160
1111 FREE        

​6.4 采样率索引表

采样率索引 MPEG-1 (Hz) MPEG-2 (Hz) MPEG-2.5 (Hz)
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 reserved reserved reserved

6.5 每帧数据的采样数

-- MPEG 1 MPEG 2 (LSF) MPEG 2.5 (LSF)
Layer I 384 384 384
Layer II 1152 1152 1152
Layer III 1152 576 576

6.6 channel 模式表

index content
00 Stereo
01 Joint Stereo (Stereo)
10 Dual channel (Two mono channels)
11 Single channel (Mono)

6.7 标签帧的标识以及其意义对照表

index content AENC [Audio encryption] APIC [Attached picture] COMM [Comments] COMR [Commercial frame] ENCR [Encryption method registration] EQUA [Equalization] ETCO [Event timing codes] GEOB [General encapsulated object] GRID [Group identification registration] IPLS [Involved people list] LINK [Linked information] MCDI [Music CD identifier] MLLT [MPEG location lookup table] OWNE [Ownership frame] PRIV [Private frame] PCNT [Play counter] POPM [Popularimeter] POSS [Position synchronisation frame] RBUF [Recommended buffer size] RVAD [Relative volume adjustment] RVRB [Reverb] SYLT [Synchronized lyric/text] SYTC [Synchronized tempo codes] TALB [Album/Movie/Show title] TBPM [BPM (beats per minute)] TCOM [Composer] TCON [Content type] TCOP [Copyright message] TDAT [Date] TDLY [Playlist delay] TENC [Encoded by] TEXT [Lyricist/Text writer] TFLT [File type] TIME [Time] TIT1 [Content group description] TIT2 [Title/songname/content description] TIT3 [Subtitle/Description refinement] TKEY [Initial key] TLAN [Language(s)] TLEN [Length] TMED [Media type] TOAL [Original album/movie/show title] TOFN [Original filename] TOLY [Original lyricist(s)/text writer(s)] TOPE [Original artist(s)/performer(s)] TORY [Original release year] TOWN [File owner/licensee] TPE1 [Lead performer(s)/Soloist(s)] TPE2 [Band/orchestra/accompaniment] TPE3 [Conductor/performer refinement] TPE4 [Interpreted, remixed, or otherwise modified by] TPOS [Part of a set] TPUB [Publisher] TRCK [Track number/Position in set] TRDA [Recording dates] TRSN [Internet radio station name] TRSO [Internet radio station owner] TSIZ [Size] TSRC [ISRC (international standard recording code)] TSSE [Software/Hardware and settings used for TYER [Year] TXXX [User defined text information frame] UFID [Unique file identifier] USER [Terms of use] USLT [Unsychronized lyric/text transcription] WCOM [Commercial information] WCOP [Copyright/Legal information] WOAF [Official audio file webpage] WOAR [Official artist/performer webpage] WOAS [Official audio source webpage] WORS [Official internet radio station homepage] WPAY [Payment] WPUB [Publishers official webpage] WXXX [User defined URL link frame]

 

小讯
上一篇 2025-03-01 17:01
下一篇 2025-01-25 23:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16956.html