一种音频文件的标签信息解析方法、装置及终端转让专利

申请号 : CN201610404399.9

文献号 : CN106095910B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈勇

申请人 : 广东欧珀移动通信有限公司

摘要 :

本发明实施例公开了一种音频文件的标签信息解析方法、装置及终端。该方法包括:根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容;对待验证帧内容进行验证,若验证通过,则将待验证帧内容确定为当前标签帧的已解析帧内容。本发明实施例通过采用上述技术方案,在现有解析方案的基础上增加了对帧内容进行验证的操作,保证了所获取的帧内容的准确性,优化了现有的音频文件的标签信息解析方案。

权利要求 :

1.一种音频文件的标签信息解析方法,其特征在于,包括:

根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容;

判断所述待验证帧内容后第一预设数量的字节是否符合帧头格式,若符合,则验证通过;

若验证通过,则将所述待验证帧内容确定为所述当前标签帧的已解析帧内容;

若验证失败,则依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索,若在待验证帧内容中搜索到所述预设帧标识,则将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第一位置,判断从所述第一位置开始第一预设数量的字节是否符合帧头格式,若符合,将所述待验证帧内容中的位于所述第一位置之前的字节确定为所述当前标签帧的已解析帧内容,其中,所述第一位置是指与所述位置最靠前的预设帧标识的第一字节相匹配的字节对应的位置。

2.根据权利要求1所述的方法,其特征在于,依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还包括:若未搜索到预设帧标识,则依次以所述多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容后第二预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第二位置,将所述待验证帧内容和所述待验证帧内容后位于所述第二位置之前的字节确定为所述当前标签帧的已解析帧内容。

3.根据权利要求1所述的方法,其特征在于,依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还包括:若未搜索到预设帧标识,则将所述待验证帧内容中倒数第A个字节设定为搜索起点;

依次以所述多个预设帧标识中的一个预设帧标识为关键字对从所述搜索起点开始的第三预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第三位置,将所述待验证帧内容的第一个字节到所述第三位置的前一个字节确定为所述当前标签帧的已解析帧内容。

4.根据权利要求1-3任一所述的方法,其特征在于,所述标签信息包括ID3标签信息。

5.一种音频文件的标签信息解析装置,其特征在于,包括:

待验证帧内容获取模块,用于根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容;

验证模块,判断所述待验证帧内容后第一预设数量的字节是否符合帧头格式,若符合,则验证通过;

已解析帧内容确定模块,用于在所述待验证帧内容验证通过时,将所述待验证帧内容确定为所述当前标签帧的已解析帧内容;

已解析帧内容确定模块,还用于对所述待验证帧内容进行验证之后,若验证失败,则依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索,若在待验证帧内容中搜索到所述预设帧标识,则将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第一位置,判断从所述第一位置开始第一预设数量的字节是否符合帧头格式,若符合,将所述待验证帧内容中的位于所述第一位置之前的字节确定为所述当前标签帧的已解析帧内容,其中,所述第一位置是指与所述位置最靠前的预设帧标识的第一字节相匹配的字节对应的位置。

6.根据权利要求5所述的装置,其特征在于,依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还包括:若未搜索到预设帧标识,则依次以所述多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容后第二预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第二位置,将所述待验证帧内容和所述待验证帧内容后位于所述第二位置之前的字节确定为所述当前标签帧的已解析帧内容。

7.根据权利要求5所述的装置,其特征在于,依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还包括:若未搜索到预设帧标识,则将所述待验证帧内容中倒数第A个字节设定为搜索起点;

依次以所述多个预设帧标识中的一个预设帧标识为关键字对从所述搜索起点开始的第三预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第三位置,将所述待验证帧内容的第一个字节到所述第三位置的前一个字节确定为所述当前标签帧的已解析帧内容。

8.根据权利要求5-7任一所述的装置,其特征在于,所述标签信息包括ID3标签信息。

9.一种终端,其特征在于,所述终端集成了如权利要求5-8任一项所述的音频文件的标签信息解析装置。

说明书 :

一种音频文件的标签信息解析方法、装置及终端

技术领域

[0001] 本发明实施例涉及音频技术领域,尤其涉及一种音频文件的标签信息解析方法、装置及终端。

背景技术

[0002] 音频文件标签信息中可包含音频文件相关的标题、歌手、专辑、风格以及出品年代等信息,是音频文件的重要组成部分。常见的音频文件标签包括ID3标签和APE标签等。其中,ID3是一种元数据(metadata)容器,多应用于MP3格式的音频文件中。ID3标签中可包括与其所属音频文件相关的标题、歌手、专辑、风格以及出品年代等信息。在进行音频文件播放时,需要对ID3标签信息进行解析。
[0003] ID3标签一般包括一个标签头和若干个标签帧,每个标签帧都由一个长度为10个字节的帧头和至少一个字节的不固定长度的帧内容组成。帧头中会包含所属标签帧的帧内容的长度信息。标签帧是顺序存放在文件中的,每个标签帧与标签头之间、以及与其他标签帧之间没有特殊的字符分隔。现有的ID3标签信息解析方案为:按顺序读取字节流中的每个标签帧,也就是先读第一个标签帧的帧头,然后根据帧头数据读取相应长度的帧内容,然后再读第二个标签帧的帧头,以此类推直到所有标签帧读完。然而,帧头中包含的帧内容的长度信息经常会出现错误,现有解析方案过于依赖帧头中的帧内容长度信息,若该信息错误,则会导致读取的帧内容不准确,可能造成帧内容的缺失或者将下一个标签帧的内容误认为是当前标签帧的帧内容,更严重的是,错误存在连锁反应,出现错误的标签帧后面的各标签帧的解析也会同样出错。

发明内容

[0004] 本发明实施例的目的是提供一种音频文件的标签信息解析方法、装置及终端,以优化现有的音频文件的标签信息解析方案。
[0005] 第一方面,本发明实施例提供了一种音频文件的标签信息解析方法,包括:
[0006] 根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容;
[0007] 对所述待验证帧内容进行验证,若验证通过,则将所述待验证帧内容确定为所述当前标签帧的已解析帧内容。
[0008] 第二方面,本发明实施例提供了一种音频文件的标签信息解析装置,包括:
[0009] 待验证帧内容获取模块,用于根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容;
[0010] 验证模块,用于对所述待验证帧内容进行验证;
[0011] 已解析帧内容确定模块,用于在所述待验证帧内容验证通过时,将所述待验证帧内容确定为所述当前标签帧的已解析帧内容。
[0012] 第三方面,本发明实施例提供了一种终端,所述终端集成了本发明实施例中的音频文件的标签信息解析装置。
[0013] 本发明实施例中提供的音频文件的标签信息解析方案,在根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容后,对获取的帧内容进行验证,验证通过后才将获取的帧内容确定为当前标签帧的已解析帧内容。通过采用上述技术方案,在现有解析方案的基础上增加了对帧内容进行验证的操作,保证了所获取的帧内容的准确性,优化了现有的音频文件的标签信息解析方案。

附图说明

[0014] 图1为本发明实施例一提供的一种音频文件的标签信息解析方法的流程示意图;
[0015] 图2为本发明实施例二提供的一种音频文件的标签信息解析方法的流程示意图;
[0016] 图3为本发明实施例三提供的一种优选的音频文件的标签信息解析方法的流程示意图;
[0017] 图4为本发明实施例四提供的音频文件的标签信息解析装置的结构框图。

具体实施方式

[0018] 下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0019] 在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0020] 实施例一
[0021] 图1为本发明实施例一提供的一种音频文件的标签信息解析方法的流程示意图,该方法可以由音频文件的标签信息解析装置执行,其中该装置可由软件和/或硬件实现,一般可集成在终端中。如图1所示,该方法包括:
[0022] 步骤101、根据当前标签帧的帧头中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容。
[0023] 示例性的,本实施例中的终端具体可为手机、平板电脑、MP3播放器以及智能手表等支持音频播放功能的移动终端,也可为计算机及电视等支持音频播放功能的其他终端。音频文件可包括音乐文件以及录音文件等。
[0024] 示例性的,标签信息可包括ID3标签信息、APE标签信息及无损音频压缩编码(Free Lossless Audio Codec,FLAC)标签信息等。现有的标签信息解析方案中,按顺序读取标签信息的字节流中的每个标签帧,在获取帧内容时需要根据帧头中的帧内容长度信息来获取相应长度的字节来作为帧内容,若帧内容长度信息不准确,就会造成解析错误。
[0025] 本实施例中以ID3标签为例进行下面的说明。ID3标签信息一般位于音频文件的头部,是一串二进制数。ID3标签中的每个标签帧都由一个长度为10个字节的帧头和至少一个字节的不固定长度的帧内容组成。帧头中的第1个到第4个字节的内容为帧标识(又称帧名),常见的帧标识如TIT2(标题)、TPE1(作者)、TALB(专辑)、TRCK(音轨)及APIC(图片)等等;帧头中的第5个到第8个字节的内容为帧内容长度信息,具体可为数字;帧头中的第9个到第10个字节的内容为标志(又称附加标志)。例如,当前标签帧的位置为N,从N+10开始的10个字节数据为帧头,假设帧内容长度为L,那么从N+10之后的L个字节为帧内容,获取该帧内容,得到待验证帧内容。示例性的,可将获取的帧内容存入一个临时的字符串中,等待验证。
[0026] 示例性的,在获取帧内容之前,可根据标签头中包含的标签信息长度信息来判断即将获取的帧内容的长度是否超出了标签信息总长度,若超出,可先对帧内容长度信息进行纠正,例如,将标签信息的最后一个字节确定为即将获取的帧内容的最后一个字节。其中,标签信息总长度具体为标签头长度和所有标签帧的长度的总和。
[0027] 步骤102、对待验证帧内容进行验证,若验证通过,则将待验证帧内容确定为当前标签帧的已解析帧内容。
[0028] 本实施例中增加了对帧内容进行验证的操作,可避免某个帧头中的帧内容长度信息不准确时引起的解析错误。示例性的,可对待验证帧内容进行分析,判断其中是否包含了不属于帧内容的数据,如下一个标签帧的部分或整个帧头内容;也可对待验证帧内容后的下一个标签帧的帧头进行分析,来得出待验证帧内容是否正确,如判断待验证帧内容后的下一个标签帧的帧头是否符合帧头格式。
[0029] 可以理解的是,不同类型的标签信息由于所采用的标准不同,所以具体的数据格式可能存在差异,本领域技术人员能够根据所应用的标签信息的结构组成等特点来确定相应的对待验证帧内容进行验证的具体方式,本实施例不作具体限定。
[0030] 示例性的,在对待验证帧内容进行验证后,若验证失败,可对待验证内容进行纠错,以得到正确的帧内容;还可停止对当前标签帧后面的标签帧的解析,防止连锁错误情况的发生,从而避免播放界面或音频详情列表等需要显示音频文件信息的界面显示乱码而对用户造成的困扰,改善用户体验。
[0031] 优选的,从标签信息的标签头后的第一个标签帧开始逐一进行上述验证,即首先将第一个标签帧作为当前标签帧,对当前标签帧进行验证后,将下一个标签帧作为新的当前标签帧。
[0032] 本发明实施例中提供的音频文件的标签信息解析方法,在根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容后,对获取的帧内容进行验证,验证通过后才将获取的帧内容确定为当前标签帧的已解析帧内容。通过采用上述技术方案,在现有解析方案的基础上增加了对帧内容进行验证的操作,保证了所获取的帧内容的准确性,优化了现有的音频文件的标签信息解析方案。
[0033] 实施例二
[0034] 图2为本发明实施例二提供的一种音频文件的标签信息解析方法的流程示意图,本实施例以上述实施例为基础进行优化,在本实施例中,将“对待验证帧内容进行验证”优化为:判断待验证帧内容后第一预设数量的字节是否符合帧头格式,若符合,则验证通过。
[0035] 进一步的,在对待验证帧内容进行验证之后,还可包括:若验证失败,则对待验证帧内容进行纠错,得到当前标签帧的已解析帧内容。
[0036] 相应的,本实施例的方法包括如下步骤:
[0037] 步骤201、根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容。
[0038] 步骤202、判断待验证帧内容后第一预设数量的字节是否符合帧头格式,若是,则执行步骤203;否则,执行步骤204。
[0039] 示例性的,第一预设数量可根据标签信息的具体类型来确定。以ID3标签为例,每个标签帧的前10个字节为帧头,第一预设数量为10。如果帧内容长度信息是准确的,那么所获取的待验证帧内容就是正确的,在待验证帧内容后面应该是下一个标签帧的数据。如前文所述,ID3标签的帧头格式是固定的,依次为帧标识、帧内容长度信息和标志,可逐一进行验证。例如,可先验证前4个字节是否与帧标识中的一个匹配,若均不匹配,可说明不符合帧头格式,若与任意一个帧标识匹配,可继续验证中间4个字节是否表示一串数字(帧内容长度信息为表示帧内容长度的数字),若是数字,再继续验证最后两个字节是否表示标志。
[0040] 可以理解的是,如果待验证帧内容后第一预设数量的字节符合帧头格式,可说明待验证帧内容就是正确的帧内容;如果不符合帧头格式,可说明待验证帧内容可能是不完整的(帧内容长度信息的值比正确值小),或者待验证帧内容包含了后面标签帧里的内容(帧内容长度信息的值比正确值大)。
[0041] 步骤203、验证通过,将待验证帧内容确定为当前标签帧的已解析帧内容。
[0042] 步骤204、验证失败,对待验证帧内容进行纠错,得到当前标签帧的已解析帧内容。
[0043] 具体的,可按照如下方式对待验证帧内容进行纠错:依次以多个预设帧标识中的一个预设帧标识为关键字对待验证帧内容进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第一位置,将待验证帧内容中的位于第一位置之前的字节确定为当前标签帧的已解析帧内容。
[0044] 示例性的,预设帧标识可以包括标签信息中支持的所有帧标识。优选的,若在待验证帧内容中搜索到了帧标识,可说明待验证内容中可能包含了下一个标签帧的内容。帧标识为4个字节,本实施例中的第一位置具体可指与位置最靠前的预设帧标识的第一个字节相匹配的字节对应的位置,因此,在待验证帧内容中的位于第一位置之前的字节应为当前标签帧的已解析帧内容,从而对待验证帧内容进行了纠错。
[0045] 进一步的,为了避免将帧内容中与帧标识相同字样的字节误认为是帧标识,可判断从第一位置开始第一预设数量的字节是否符合帧头格式,若符合,则将待验证帧内容中的位于第一位置之前的字节确定为当前标签帧的已解析帧内容。更进一步的,若不符合,则判断下一个被搜索到的帧标识的首个字节开始第一预设数量的字节是否符合帧头格式,依次类推。若均不符合,则可认为未搜索到预设帧标识。
[0046] 进一步的,在依次以多个预设帧标识中的一个预设帧标识为关键字对待验证帧内容进行搜索之后,若未搜索到任何预设帧标识,还可采用如下两种处理方式中的一种进行进一步处理:
[0047] 第一方式、依次以多个预设帧标识中的一个预设帧标识为关键字对待验证帧内容后第二预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第二位置,将待验证帧内容和待验证帧内容后位于第二位置之前的字节确定为当前标签帧的已解析帧内容。
[0048] 示例性的,若在待验证内容中未搜索到任何预设帧标识,说明待验证内容可能并未正确包含全部的帧内容,需要从后面的字节中找到缺失的帧内容。上述第二预设数量可以是一个固定的经验值(如100个字节),也可以根据当前标签帧的位置来动态确定,还可以根据当前标签帧的帧标识或帧内容长度信息来动态确定。例如,第二预设数量可以是从待验证帧内容后面的第一个字节到整个标签信息的最后一个字节的总字节数量。
[0049] 第二方式、依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还可包括:若未搜索到预设帧标识,则将待验证帧内容中倒数第A个字节设定为搜索起点;依次以多个预设帧标识中的一个预设帧标识为关键字对从搜索起点开始的第三预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第三位置,将待验证帧内容的第一个字节到第二位置的前一个字节确定为当前标签帧的已解析帧内容。其中,A可以是帧头长度值(如10),也可以是帧标识长度值(如4)。
[0050] 上述第二方式与第一方式的不同在于搜索起点的不同,第一方式的搜索起点为待验证帧内容后的第一个字节,而第二方式的搜索起点为待验证帧内容中倒数第A个字节。第二方式的优势在于,可避免在获取待验证帧内容时获取了后面标签帧的帧标识的部分内容,如仅获取了2个字节,那么在对待验证帧内容进行帧标识搜索时,就会搜索不到。
[0051] 本发明实施例在上述实施例的基础上,细化了待验证帧内容的验证方式,并进一步增加了在验证失败时,对待验证帧内容进行纠错处理,可避免某个帧头中的帧内容长度信息不准确时引起的解析错误,避免对后面的标签帧造成影响,从而避免连锁错误的出现,提高音频文件的标签信息解析的准确度。此外,在终端对解析后的标签信息内容进行显示时,也不会出现乱码的情况,改善了用户的使用体验。
[0052] 实施例三
[0053] 图3为本发明实施例三提供的一种优选的音频文件的标签信息解析方法的流程示意图,本实施例以上述实施例为基础进行优化,并以ID3标签为例进行具体说明。
[0054] 本实施例的方法包括如下步骤:
[0055] 步骤301、读取音频文件前10个字节的内容为标签头。
[0056] 步骤302、根据标签头内容判断是否包含ID3信息,若是,则执行步骤303;否则,执行步骤318。
[0057] 示例性的,ID3的标签头中会包含“ID3”字样,用以表明ID3标签身份。
[0058] 步骤303、根据标签头内容设定标签信息总长度为M,当前标签帧位置为N。
[0059] 步骤304、判断N+10是否大于M,若是,则执行步骤318;否则,执行步骤305。
[0060] 步骤305、根据当前标签帧帧头数据设定当前帧内容长度为L,判断N+10+L是否大于M,若是,则执行步骤306;否则,执行步骤307。
[0061] 步骤306、纠正L=M-(N+10),执行步骤307。
[0062] 步骤307、读取长度L的字节流数据,并将读取到的内容存储在字符串S中,执行步骤308。
[0063] 步骤308、设定当前标签帧位置为N=N+10+L,执行步骤309。
[0064] 步骤309、读取当前标签帧的帧头数据,判断是否符合帧头格式,若是,则执行步骤305;否则,执行步骤310。
[0065] 示例性的,若当前标签帧的帧头数据符合帧头格式,可说明上一个标签帧的帧内容获取正确,此时可将字符串S中的内容提取出来作为上一个标签帧的帧内容,并清除字符串S,继续获取当前标签帧的帧内容。
[0066] 步骤310、依次使用常用帧标识集合中的帧标识K为关键字,在字符串S中进行关键字匹配搜索。
[0067] 步骤311、判断在字符串S中是否搜索到K,若是,则执行步骤312;否则,执行步骤313。
[0068] 步骤312、如果在字符串S中的位置X搜索到K,则截取字符串S中位置X之前的字节数据为上一个标签帧的帧内容,设定当前标签帧位置为N=N+10+X,执行步骤304。
[0069] 优选的,如果在S中位置X搜到了K,则读取S中位置X之后的10个字节数据,判断数据是否符合帧头格式,若是,则截取字符串S中位置X之前的字节数据为当前帧内容;否则,继续进行搜索,搜索到就继续判断后面的10个字节数据是否符合帧头格式;未搜到则执行步骤313。
[0070] 步骤313、判断下次读取数据长度为Y是否大于0,若是,则执行步骤314;否则,执行步骤318。
[0071] 对于一个标签帧来说,首次执行本步骤时,在字符串S中未搜索到K,说明上一个标签帧的帧内容可能没获取完整,需要在上一个标签帧的帧内容后面一定数量的字节数据中寻找帧标识。在读取Y时,读取的起点需在当前读取位置(当前标签帧的第一个字节位置处)基础上减10,为了避免字符串S刚好将帧头内容切分为两段而引起判断错误。例如,Y初始值为100,然后对Y进行修正。若N+10+L+Y-10小于M,则L=L+Y-10,若N+10+L+Y-10大于M,则修正Y=M-(N+10+L-10),L=L+Y-10。再次执行本步骤时,说明在Y长度的字节中未找到帧标识,那么可将当前Y长度字节的末尾设定为搜索起点,继续读取Y长度字节数据,即若此时Y大于0,可继续执行步骤314。
[0072] 步骤314、从搜索起点的位置开始读取长度为Y个字节的数据,将此数据内容接着存储到字符串S。
[0073] 对于一个标签帧来说,首次执行本步骤时,搜索起点为N+L(由N+10+L-10得到),当再次执行本步骤时,搜索起点为上一个Y长度字节的末尾。
[0074] 步骤315、依次使用常用帧标识集合中的帧标识K为关键字,在上一步骤中的字符串S中进行关键字匹配搜索。
[0075] 步骤316、判断在S中是否搜索到K,若是,则执行步骤317;否则,执行步骤313。
[0076] 步骤317、如果在字符串S中位置Z搜到了K,上一个标签帧的帧内容长度为L=L+Z,将位置N+10开始读取的长度为L的数据作为上一个标签帧的内容数据,将当前帧位置设定为N=N+10+L,执行步骤304。
[0077] 优选的,如果在S中位置Z搜到了K,则读取S中位置Z之后的10个字节数据,判断数据是否符合帧头格式,若是,则当前帧内容长度为L=L+Z;否则,继续进行搜索,搜索到就继续判断后面的10个字节数据是否符合帧头格式;未搜到则执行步骤312。
[0078] 步骤318、解析结束。
[0079] 本发明实施例提供的音频文件的标签信息解析方法,当读取到错误的帧头时,即进入纠错流程,对当前标签帧数据及当前标签帧后若干字节的数据进行读取解析检索对比,找到正确的帧内容数据,再继续下一帧的解析。这样可避免某个帧头信息不正确引起的连锁错误,确保正确解析并得到ID3标签信息。
[0080] 实施例四
[0081] 图4为本发明实施例四提供的音频文件的标签信息解析装置的结构框图,该装置可由软件和/或硬件实现,一般集成在终端中,可通过执行音频文件的标签信息解析方法来解析音频文件的标签信息。如图4所示,该装置包括待验证帧内容获取模块401、验证模块402和已解析帧内容确定模块403。
[0082] 其中,待验证帧内容获取模块401,用于根据当前标签帧中包含的帧内容长度信息从标签信息中获取相应的帧内容,得到待验证帧内容;验证模块402,用于对所述待验证帧内容进行验证;已解析帧内容确定模块403,用于在所述待验证帧内容验证通过时,将所述待验证帧内容确定为所述当前标签帧的已解析帧内容。
[0083] 本发明实施例提供的音频文件的标签信息解析装置,在现有解析方案的基础上增加了对帧内容进行验证的操作,保证了所获取的帧内容的准确性,优化了现有的音频文件的标签信息解析方案。
[0084] 在上述实施例的基础上,所述验证模块用于:判断所述待验证帧内容后第一预设数量的字节是否符合帧头格式,若符合,则验证通过。
[0085] 在上述实施例的基础上,已解析帧内容确定模块还用于:对所述待验证帧内容进行验证之后,若验证失败,则对所述待验证帧内容进行纠错,得到所述当前标签帧的已解析帧内容。
[0086] 在上述实施例的基础上,对所述待验证帧内容进行纠错,得到所述当前标签帧的已解析帧内容,包括:依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第一位置,将所述待验证帧内容中的位于所述第一位置之前的字节确定为所述当前标签帧的已解析帧内容。
[0087] 在上述实施例的基础上,将所述待验证帧内容中的位于所述第一位置之前的字节确定为所述当前标签帧的已解析帧内容,包括:判断从所述第一位置开始第一预设数量的字节是否符合帧头格式,若符合,则将所述待验证帧内容中的位于所述第一位置之前的字节确定为所述当前标签帧的已解析帧内容。
[0088] 在上述实施例的基础上,依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还包括:若未搜索到预设帧标识,则依次以所述多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容后第二预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第二位置,将所述待验证帧内容和所述待验证帧内容后位于所述第二位置之前的字节确定为所述当前标签帧的已解析帧内容。
[0089] 在上述实施例的基础上,依次以多个预设帧标识中的一个预设帧标识为关键字对所述待验证帧内容进行搜索之后,还包括:若未搜索到预设帧标识,则将所述待验证帧内容中倒数第A个字节设定为搜索起点;依次以所述多个预设帧标识中的一个预设帧标识为关键字对从所述搜索起点开始的第三预设数量的字节进行搜索,将被搜索到的预设帧标识中位置最靠前的预设帧标识的所在位置确定为第三位置,将所述待验证帧内容的第一个字节到所述第二位置的前一个字节确定为所述当前标签帧的已解析帧内容。
[0090] 在上述实施例的基础上,所述标签信息包括ID3标签信息。
[0091] 实施例五
[0092] 本实施例五提供了一种终端,该终端集成了本发明实施例中所述的音频文件的标签信息解析装置,可通过执行音频文件的标签信息解析方法来解析音频文件的标签信息。
[0093] 示例性的,本实施例中的终端具体可为手机、平板电脑、MP3播放器以及智能手表等支持音频播放功能的移动终端,也可为计算机及电视等支持音频播放功能的其他终端。
[0094] 用户在使用本实施例中的终端时,终端在对音频文件的标签信息进行解析时,会对所获取的帧内容进行验证的操作,保证了所获取的帧内容的准确性,优化了现有的音频文件的标签信息解析方案。
[0095] 上述实施例中提供的音频文件的标签信息解析装置及终端可执行本发明任意实施例所提供的音频文件的标签信息解析方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的音频文件的标签信息解析方法。
[0096] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。