m4a音频文件的修复方法、系统、设备及存储介质与流程

未命名 10-08 阅读:91 评论:0


1.本发明涉及音频文件修复技术领域,尤其涉及一种m4a音频文件的修复方法、系统、设备及存储介质。


背景技术:

2.m4a文件采用mpeg-4协议封装,主要的部分有两个,第一部分包含了音频帧的元数据,即音频帧的采样率、通道数、位深度和位置偏移等信息,第二部分为经过aac压缩算法压缩过的去头部的裸音频帧数据。当音频帧的元数据无法解析时,音频也就无法正常播放,但是还是能通过音频帧的余下部分信息进行判断是否为有效的音频帧来完成m4a文件的修复,现有技术缺乏一种能够利用音频帧的余下部分信息提取出有效的音频帧来完成m4a文件修复的技术方案。
3.因此,现有技术还有待于改进和发展。


技术实现要素:

4.本发明的主要目的在于提供一种元数据解析异常时m4a音频文件的修复方法、系统、设备及存储介质。
5.本发明第一方面提供了一种m4a音频文件的修复方法,包括:
6.使用内存映射的方式获得待修复的m4a音频文件数据;
7.按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测;
8.判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据;
9.若所述2个字节数据中各个所述检测位点的数据为各自对应的所述特征数据,则将所述2个字节数据的首字节作为疑似音频帧入口;
10.获取所述m4a音频文件数据中所有的所述疑似音频帧入口;
11.对于任一所述疑似音频帧入口,以当前所述疑似音频帧入口作为每段疑似音频帧的起始,以下一所述疑似音频帧入口的前一字节作为每段疑似音频帧的结尾,获取得到所述m4a音频文件数据中所有的疑似音频帧数据;
12.将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件。
13.在本发明第一方面一种可选的实施方式中,所述按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测包括:
14.构建一个长度为2个字节的滑动窗口;
15.通过所述滑动窗口从所述m4a音频文件数据的头部首次截取得到2个字节数据进行合法性检测;
16.在截取下一所述2个字节数据时,判断当前所述2个字节数据中是否存在所述疑似
音频帧入口;
17.若当前所述2个字节数据中存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移2个字节以截取得到下一所述2个字节数据;
18.若当前所述2个字节数据中不存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移1个字节以截取得到下一所述2个字节数据。
19.在本发明第一方面一种可选的实施方式中,所述判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据包括:
20.判断所述2个字节数据中的第1-3bit位的数据是否为语法元素数据;
21.判断所述2个字节数据中的第4-7bit位的数据是否为tag标签数据;
22.判断所述2个字节数据中的第8bit位的数据是否为窗口编号数据;
23.判断所述2个字节数据中的第10和11bit位的数据是否为窗口序列数据;
24.判断所述2个字节数据中的第12bit位的数据是否为窗口形状数据。
25.在本发明第一方面一种可选的实施方式中,所述使用内存映射的方式获得待修复的m4a音频文件数据的同时还包括获取所述m4a音频文件数据的总字节数;
26.所述每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测的同时还包括记录下所述m4a音频文件数据中已检测的字节数。
27.在本发明第一方面一种可选的实施方式中,所述判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据之后还包括:
28.若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断所述2个字节数据中是否存在m4a音频文件的任何一个box标签;
29.若所述2个字节数据中存在m4a音频文件的任何一个box标签,则判定所述m4a音频文件数据检测结束,终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测;
30.划定所述2个字节数据中最靠前的所述box标签反推4个字节的位置作为最后一段所述疑似音频帧的结尾。
31.在本发明第一方面一种可选的实施方式中,所述若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断所述2个字节数据中是否存在m4a音频文件的任何一个box标签之后还包括:
32.若所述2个字节数据中不存在所述box标签,则在进行下一次从所述m4a音频文件数据中截取2个字节数据进行合法性检测之前,判断当前记录的所述m4a音频文件数据中已检测的字节数是否等于所述m4a音频文件数据的总字节数;
33.若当前记录的所述m4a音频文件数据中已检测的字节数等于所述m4a音频文件数据的总字节数,则终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测,并以所述m4a音频文件数据的结尾作为最后一段所述疑似音频帧的结尾。
34.在本发明第一方面一种可选的实施方式中,所述将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件包括:
35.将所有的所述疑似音频帧数据使用ffmpeg工具的api接口转换成pcm格式数据并保存在temp.pcm文件中;
36.再使用所述ffmpeg工具的api接口将所述temp.pcm文件转换成m4a音频文件。
37.本发明第二方面提供了一种m4a音频文件的修复系统,所述m4a音频文件的修复系
统包括:
38.m4a音频文件数据获取模块,用于使用内存映射的方式获得待修复的m4a音频文件数据;
39.字节截取模块,用于按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测;
40.字节判断模块,用于判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据;
41.疑似音频帧入口获取模块,用于若所述2个字节数据中各个所述检测位点的数据为各自对应的所述特征数据,则将所述2个字节数据的首字节作为疑似音频帧入口;
42.疑似音频帧入口汇总模块,用于获取所述m4a音频文件数据中所有的所述疑似音频帧入口;
43.疑似音频帧数据获取模块,用于对于任一所述疑似音频帧入口,以当前所述疑似音频帧入口作为每段疑似音频帧的起始,以下一所述疑似音频帧入口的前一字节作为每段疑似音频帧的结尾,获取得到所述m4a音频文件数据中所有的疑似音频帧数据;
44.格式转换模块,用于将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件。
45.本发明第四方面提供了一种m4a音频文件的修复设备,所述m4a音频文件的修复设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
46.所述至少一个处理器调用所述存储器中的所述指令,以使得所述m4a音频文件的修复设备执行如上述任一项所述的m4a音频文件的修复方法。
47.本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的m4a音频文件的修复方法。
48.有益效果:本发明提供了一种m4a音频文件的修复方法、系统、设备及存储介质,本发明在获取到待修复的m4a音频文件数据后;会按照从文件数据的头至尾的顺序每次截取2个字节数据进行合法性检测;方法是通过判断2个字节数据中各个检测位点的数据是否为各自对应的特征数据,来找到疑似音频帧入口,汇总所有的疑似音频帧入口;之后基于所有的疑似频帧入口,获取得到m4a音频文件数据中所有疑似音频帧数据;最后将所有的疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式得到修复的m4a音频文件。本发明实现了在m4a音频文件的元数据损坏时,准确地提取出m4a音频文件中的有效音频帧,通过一定的格式转换来实现无法正常播放的m4a音频文件的修复。
附图说明
49.图1为本发明一种m4a音频文件的修复方法的一个实施例示意图;
50.图2为本发明一种m4a音频文件的修复系统的一个实施例示意图;
51.图3为本发明一种m4a音频文件的修复设备的一个实施例示意图。
具体实施方式
52.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
53.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明第一方面提供了一种m4a音频文件的修复方法,包括:
54.s100、使用内存映射的方式获得待修复的m4a音频文件数据;在步骤s100中,为了便于后续对待修复的m4a音频文件数据(二进制数据)进行检测时判断所述m4a音频文件数据中的所有字节是不是都被检测过,所述使用内存映射的方式获得待修复的m4a音频文件数据的同时还包括获取所述m4a音频文件数据的总字节数。
55.s200、按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测;对应的,为了判断当前已经检测了所述m4a音频文件数据中的多少字节,在步骤s200中,所述每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测的同时还包括记录下所述m4a音频文件数据中已检测的字节数。
56.在步骤s200一种可选的实施方式中,所述按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测包括:构建一个长度为2个字节的滑动窗口;通过所述滑动窗口从所述m4a音频文件数据的头部首次截取得到2个字节数据进行合法性检测;在截取下一所述2个字节数据时,判断当前所述2个字节数据中是否存在所述疑似音频帧入口;若当前所述2个字节数据中存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移2个字节以截取得到下一所述2个字节数据;若当前所述2个字节数据中不存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移1个字节以截取得到下一所述2个字节数据。具体来讲就是本发明滑动窗口的每次移动是要基于每次检测得到的所述2个字节数据中是否存在所述疑似音频帧入口来确定,举例来说,在首次时,如果所述m4a音频文件数据的第1个和第2个字节中存在所述疑似音频帧入口,那么下一次滑动窗口截取的就是所述m4a音频文件数据的第3个和第4个字节;如果所述m4a音频文件数据的第1个和第2个字节中不存在所述疑似音频帧入口,那么下一次滑动窗口截取的就是所述m4a音频文件数据的第2个和第3个字节。
57.s300、判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据;在步骤s300中,本发明合法性检测主要检测2个字节数据中语法元素、tag标签、窗口编号、窗口序列和窗口形状这几个位点,也就是说在本发明中,所述判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据包括:判断所述2个字节数据中的第1-3bit位的数据是否为语法元素数据;判断所述2个字节数据中的第4-7bit位的数据是否为tag标签数据;判断所述2个字节数据中的第8bit位的数据是否为窗口编号数据;判断所述2个字节数据中的第10和11bit位的数据是否为窗口序列数据;判断所述2个字节数据中的第12bit
位的数据是否为窗口形状数据。
58.更具体的来讲,语法元素占3bit数据(第1~3bit),“000”表示单声道,“001”表示双声道;tag标签占4bit数据(第4~7bit),固定为“0000”;窗口编号占1bit数据(第8bit),固定为1;窗口序列占2bit数据(第10~11bit),“00”表示长1024的长窗口,用于编码音频信号的中间部分、“01”表示长1024的长窗口,用于编码音频信号的开始部分、“02”表示128的短窗口,用于编码短时间的音频信号、“03”表示长1024的长窗口,用于编码音频信号的结束部分;窗口形状占1bit数据(第12bit),“0”表示sin window、“1”表示kbd window。
59.s400、若所述2个字节数据中各个所述检测位点的数据为各自对应的所述特征数据,则将所述2个字节数据的首字节作为疑似音频帧入口;在本发明中,步骤s400就是判断所述2个字节数据中的第1-3bit位的数据是否为“000”或“001”;第4-7bit位的数据是否为“0000”;第8bit位的数据是否为“1”,以此类推,直至最后判断第12bit的数据是否为“0”或者是“1”。
60.s500、获取所述m4a音频文件数据中所有的所述疑似音频帧入口;在本发明一种可选的实施方式中,也可以是在进行所述2个字节数据的合法性检测时,每检测所述2个字节数据中包含所述疑似音频帧入口,则以所述疑似音频帧入口为起点跟随者后续的字节检测一起获取疑似音频帧数据,直到检测到下一所述疑似音频帧入口,然后把上一所述疑似音频帧入口及其对应的所述疑似音频帧数据打包形成一段疑似音频帧。
61.s600、对于任一所述疑似音频帧入口,以当前所述疑似音频帧入口作为每段疑似音频帧的起始,以下一所述疑似音频帧入口的前一字节作为每段疑似音频帧的结尾,获取得到所述m4a音频文件数据中所有的疑似音频帧数据;在本发明s600的实施方式中,这种方式是在获取所述m4a音频文件数据中所有的所述疑似音频帧入口之后,再获取得到每个所述疑似音频帧入口对应的所述疑似音频帧数据。
62.s700、将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件。在步骤s700中,所述将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件包括:将所有的所述疑似音频帧数据使用ffmpeg工具的api接口转换成pcm格式数据并保存在temp.pcm文件中;再使用所述ffmpeg工具的api接口将所述temp.pcm文件转换成m4a音频文件(名称命名例如可以为原名.m4a)。
63.在本发明第一方面一种可选的实施方式中,所述判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据之后还包括:若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断所述2个字节数据中是否存在m4a音频文件的任何一个box标签;若所述2个字节数据中存在m4a音频文件的任何一个box标签,则判定所述m4a音频文件数据检测结束,终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测;划定所述2个字节数据中最靠前的所述box标签反推4个字节的位置作为最后一段所述疑似音频帧的结尾。
64.在本发明第一方面一种可选的实施方式中,所述若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断所述2个字节数据中是否存在m4a音频文件的任何一个box标签之后还包括:若所述2个字节数据中不存在所述box标签,则在进行下一次从所述m4a音频文件数据中截取2个字节数据进行合法性检测之前,判断当前记录的
所述m4a音频文件数据中已检测的字节数是否等于所述m4a音频文件数据的总字节数;若当前记录的所述m4a音频文件数据中已检测的字节数等于所述m4a音频文件数据的总字节数,则终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测,并以所述m4a音频文件数据的结尾作为最后一段所述疑似音频帧的结尾。
65.在本发明中,所述m4a音频文件数据在进行字节的合法性检测时,什么情况下判断所述m4a音频文件数据全部检测结束基于不同的文件情况有2种不同的判断方法,一种在文件2个字节数据检测的过程中,都没有碰到m4a音频文件的box标签,这种情况所述m4a音频文件检测通过已检测的字节数和字节总数是否相同判断;另一种是在进行某2个字节数据的检测过程中,在2个字节数据中找到了box标签,这个时候所述m4a音频文件后续的字节就不需要检测了,直接利用之前找到的有效音频帧数据进行音频恢复就好了。
66.为了方便本发明技术方案的理解,本发明技术方案的整体恢复流程理解可以如下:
67.s1:使用内存映射的方式获得.m4a文件数据以及其总字节数量(t),并从第一个字节的位置开始截取2个字节的数据进行合法性检测,验证的同时保存已搜索过的字节数量(n)。一共有以下几个检测点:语法元素、tag、窗口编号、窗口序列、窗口形状。
68.s2:语法元素占3bit数据(第1~3bit),“000”表示单声道,“001”表示双声道;tag标签占4bit数据(第4~7bit),固定为“0000”;窗口编号占1bit数据(第8bit),固定为1;窗口序列占2bit数据(第10~11bit),“00”表示长1024的长窗口,用于编码音频信号的中间部分、“01”表示长1024的长窗口,用于编码音频信号的开始部分、“02”表示128的短窗口,用于编码短时间的音频信号、“03”表示长1024的长窗口,用于编码音频信号的结束部分;窗口形状占1bit数据(第12bit),“0”表示sin window、“1”表示kbd window;
69.s3:满足s2所有条件的2字节的首字节作为疑似音频帧入口,然后执行s4,否则偏移1个字节重新检测s2的条件。
70.s4:从疑似音频帧入口的偏移2个字节位置,按照s2的条件继续寻找下一个疑似音频帧入口,找到之后将下一个疑似音频帧入口的上一个字节作为前一个疑似音频帧的结尾并计算前一个疑似音频帧的帧大小。
71.s5:如果寻找下一个音频帧的时候遇到mpeg-4的任何一个box标签(比如stsz、stco等),则说明音频帧数据已经全部搜索完,所以box标签的前4字节位置作为前一个疑似音频帧的结尾,并且停止寻找疑似音频帧。如果寻找下一个音频帧的时候遇到文件结尾(即t=n时),则文件结尾就是本音频帧的结尾,并且停止寻找疑似音频帧。
72.s6:将保存下来的音频帧使用ffmpeg的api转换成pcm格式数据并保存在temp.pcm文件中。
73.s7:使用ffmpeg.exe工具将temp.pcm文件转换成“原名.m4a”文件,即可得到一个修复完成的可播放的m4a文件。
74.本发明通过逐字节匹配找到符合m4a音频帧的合法特征值,合法的字节段的首字节作为音频帧入口,再找到下一个音频帧入口的前一个字节作为上一个音频帧的结尾,得到一个完整的疑似音频帧,对疑似音频帧做格式转换检验,成功的音频帧进行保存,最后将所有的音频帧进行mpeg-4封装即可得到一个修复完成的m4a文件。
75.参见图2,本发明第二方面提供了一种m4a音频文件的修复系统,所述m4a音频文件
的修复系统包括:
76.m4a音频文件数据获取模块10,用于使用内存映射的方式获得待修复的m4a音频文件数据;
77.字节截取模块20,用于按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测;
78.字节判断模块30,用于判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据;
79.疑似音频帧入口获取模块40,用于若所述2个字节数据中各个所述检测位点的数据为各自对应的所述特征数据,则将所述2个字节数据的首字节作为疑似音频帧入口;
80.疑似音频帧入口汇总模块50,用于获取所述m4a音频文件数据中所有的所述疑似音频帧入口;
81.疑似音频帧数据获取模块60,用于对于任一所述疑似音频帧入口,以当前所述疑似音频帧入口作为每段疑似音频帧的起始,以下一所述疑似音频帧入口的前一字节作为每段疑似音频帧的结尾,获取得到所述m4a音频文件数据中所有的疑似音频帧数据;
82.格式转换模块70,用于将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件。
83.在本发明第二方面一种可选的实施方式中,所述字节截取模块包括:
84.窗口构建单元,用于构建一个长度为2个字节的滑动窗口;
85.字节首次截取单元,用于通过所述滑动窗口从所述m4a音频文件数据的头部首次截取得到2个字节数据进行合法性检测;
86.窗口移动确定单元,用于在截取下一所述2个字节数据时,判断当前所述2个字节数据中是否存在所述疑似音频帧入口;若当前所述2个字节数据中存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移2个字节以截取得到下一所述2个字节数据;若当前所述2个字节数据中不存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移1个字节以截取得到下一所述2个字节数据。
87.在本发明第二方面一种可选的实施方式中,所述字节判断模块包括:
88.语法元素数据判断单元,由于判断所述2个字节数据中的第1-3bit位的数据是否为语法元素数据;
89.tag标签数据判断单元,用于判断所述2个字节数据中的第4-7bit位的数据是否为tag标签数据;
90.窗口编号数据判断单元,用于判断所述2个字节数据中的第8bit位的数据是否为窗口编号数据;
91.窗口序列数据判断单元,用于判断所述2个字节数据中的第10和11bit位的数据是否为窗口序列数据;
92.窗口形状数据判断单元,用于判断所述2个字节数据中的第12bit位的数据是否为窗口形状数据。
93.在本发明第二方面一种可选的实施方式中,所述使用内存映射的方式获得待修复的m4a音频文件数据的同时还包括获取所述m4a音频文件数据的总字节数;
94.所述每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测的同
时还包括记录下所述m4a音频文件数据中已检测的字节数。
95.在本发明第二方面一种可选的实施方式中,所述m4a音频文件的修复系统还包括:
96.结束判断模块,用于若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断所述2个字节数据中是否存在m4a音频文件的任何一个box标签;
97.以及用于若所述2个字节数据中存在m4a音频文件的任何一个box标签,则判定所述m4a音频文件数据检测结束,终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测;
98.以及用于划定所述2个字节数据中最靠前的所述box标签反推4个字节的位置作为最后一段所述疑似音频帧的结尾。
99.在本发明第二方面一种可选的实施方式中,所述结束判断模块还用于若所述2个字节数据中不存在所述box标签,则在进行下一次从所述m4a音频文件数据中截取2个字节数据进行合法性检测之前,判断当前记录的所述m4a音频文件数据中已检测的字节数是否等于所述m4a音频文件数据的总字节数;
100.以及用于若当前记录的所述m4a音频文件数据中已检测的字节数等于所述m4a音频文件数据的总字节数,则终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测,并以所述m4a音频文件数据的结尾作为最后一段所述疑似音频帧的结尾。
101.在本发明第二方面一种可选的实施方式中,所述格式转换模块包括:
102.pcm格式转换单元,用于将所有的所述疑似音频帧数据使用ffmpeg工具的api接口转换成pcm格式数据并保存在temp.pcm文件中;
103.m4a格式转换单元,用于再使用所述ffmpeg工具的api接口将所述temp.pcm文件转换成m4a音频文件。
104.图3是本发明实施例提供的一种m4a音频文件的修复设备的结构示意图,该m4a音频文件的修复设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器80(central processing units,cpu)(例如,一个或一个以上处理器)和存储器90,一个或一个以上存储应用程序或数据的存储介质100(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对用于关闭查找我的手机功能的设备中的一系列指令操作。更进一步地,处理器可以设置为与存储介质通信,在用于关闭查找我的手机功能的设备上执行存储介质中的一系列指令操作。
105.本发明的m4a音频文件的修复设备还可以包括一个或一个以上电源110,一个或一个以上有线或无线网络接口120,一个或一个以上输入输出接口130,和/或,一个或一个以上操作系统,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图3示出的m4a音频文件的修复设备结构并不构成对本发明m4a音频文件的修复设备的具体限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
106.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的m4a音频文件的修复方法的步骤。
107.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
108.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
109.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术特征:
1.一种m4a音频文件的修复方法,其特征在于,包括:使用内存映射的方式获得待修复的m4a音频文件数据;按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测;判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据;若所述2个字节数据中各个所述检测位点的数据为各自对应的所述特征数据,则将所述2个字节数据的首字节作为疑似音频帧入口;获取所述m4a音频文件数据中所有的所述疑似音频帧入口;对于任一所述疑似音频帧入口,以当前所述疑似音频帧入口作为每段疑似音频帧的起始,以下一所述疑似音频帧入口的前一字节作为每段疑似音频帧的结尾,获取得到所述m4a音频文件数据中所有的疑似音频帧数据;将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件。2.根据权利要求1所述的m4a音频文件的修复方法,其特征在于,所述按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测包括:构建一个长度为2个字节的滑动窗口;通过所述滑动窗口从所述m4a音频文件数据的头部首次截取得到2个字节数据进行合法性检测;在截取下一所述2个字节数据时,判断当前所述2个字节数据中是否存在所述疑似音频帧入口;若当前所述2个字节数据中存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移2个字节以截取得到下一所述2个字节数据;若当前所述2个字节数据中不存在所述疑似音频帧入口,则控制所述滑动窗口向后偏移1个字节以截取得到下一所述2个字节数据。3.根据权利要求2所述的m4a音频文件的修复方法,其特征在于,所述判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据包括:判断所述2个字节数据中的第1-3bit位的数据是否为语法元素数据;判断所述2个字节数据中的第4-7bit位的数据是否为tag标签数据;判断所述2个字节数据中的第8bit位的数据是否为窗口编号数据;判断所述2个字节数据中的第10和11bit位的数据是否为窗口序列数据;判断所述2个字节数据中的第12bit位的数据是否为窗口形状数据。4.根据权利要求3所述的m4a音频文件的修复方法,其特征在于,所述使用内存映射的方式获得待修复的m4a音频文件数据的同时还包括获取所述m4a音频文件数据的总字节数;所述每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测的同时还包括记录下所述m4a音频文件数据中已检测的字节数。5.根据权利要求4所述的m4a音频文件的修复方法,其特征在于,所述判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据之后还包括:若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断
所述2个字节数据中是否存在m4a音频文件的任何一个box标签;若所述2个字节数据中存在m4a音频文件的任何一个box标签,则判定所述m4a音频文件数据检测结束,终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测;划定所述2个字节数据中最靠前的所述box标签反推4个字节的位置作为最后一段所述疑似音频帧的结尾。6.根据权利要求5所述的m4a音频文件的修复方法,其特征在于,所述若所述2个字节数据中各个检测位点的数据不为各自对应的特征数据,则进一步判断所述2个字节数据中是否存在m4a音频文件的任何一个box标签之后还包括:若所述2个字节数据中不存在所述box标签,则在进行下一次从所述m4a音频文件数据中截取2个字节数据进行合法性检测之前,判断当前记录的所述m4a音频文件数据中已检测的字节数是否等于所述m4a音频文件数据的总字节数;若当前记录的所述m4a音频文件数据中已检测的字节数等于所述m4a音频文件数据的总字节数,则终止从所述m4a音频文件数据中截取2个字节数据进行合法性检测,并以所述m4a音频文件数据的结尾作为最后一段所述疑似音频帧的结尾。7.根据权利要求1所述的m4a音频文件的修复方法,其特征在于,所述将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件包括:将所有的所述疑似音频帧数据使用ffmpeg工具的api接口转换成pcm格式数据并保存在temp.pcm文件中;再使用所述ffmpeg工具的api接口将所述temp.pcm文件转换成m4a音频文件。8.一种m4a音频文件的修复系统,其特征在于,所述m4a音频文件的修复系统包括:m4a音频文件数据获取模块,用于使用内存映射的方式获得待修复的m4a音频文件数据;字节截取模块,用于按照从所述m4a音频文件数据的头至尾的顺序,每次从所述m4a音频文件数据中截取2个字节数据用于后续合法性检测;字节判断模块,用于判断所述2个字节数据中各个检测位点的数据是否为各自对应的特征数据;疑似音频帧入口获取模块,用于若所述2个字节数据中各个所述检测位点的数据为各自对应的所述特征数据,则将所述2个字节数据的首字节作为疑似音频帧入口;疑似音频帧入口汇总模块,用于获取所述m4a音频文件数据中所有的所述疑似音频帧入口;疑似音频帧数据获取模块,用于对于任一所述疑似音频帧入口,以当前所述疑似音频帧入口作为每段疑似音频帧的起始,以下一所述疑似音频帧入口的前一字节作为每段疑似音频帧的结尾,获取得到所述m4a音频文件数据中所有的疑似音频帧数据;格式转换模块,用于将所有的所述疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式,得到修复的m4a音频文件。9.一种m4a音频文件的修复设备,其特征在于,所述m4a音频文件的修复设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述m4a音频文件的修复
设备执行如权利要求1-7中任一项所述的m4a音频文件的修复方法。10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的m4a音频文件的修复方法。

技术总结
本发明提供了一种m4a音频文件的修复方法、系统、设备及存储介质,本发明在获取到待修复的m4a音频文件数据后;会按照从文件数据的头至尾的顺序每次截取2个字节数据进行合法性检测;方法是通过判断2个字节数据中各个检测位点的数据是否为各自对应的特征数据,来找到疑似音频帧入口并汇总所有的疑似音频帧入口;之后基于所有的疑似频帧入口,获取得到m4a音频文件数据中所有疑似音频帧数据;最后将所有的疑似音频帧数据先转换成pcm数据格式再转换成m4a数据格式得到修复的m4a音频文件。本发明实现了在m4a音频文件的元数据损坏时,准确地提取出m4a音频文件中的有效音频帧,通过一定的格式转换来实现无法正常播放的m4a音频文件的修复。的修复。的修复。


技术研发人员:龙逸翔
受保护的技术使用者:深圳软牛科技有限公司
技术研发日:2023.06.30
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐