CN115114090A - 一种从损坏的存储设备中提取amr音频文件的方法 - Google Patents
一种从损坏的存储设备中提取amr音频文件的方法 Download PDFInfo
- Publication number
- CN115114090A CN115114090A CN202210740276.8A CN202210740276A CN115114090A CN 115114090 A CN115114090 A CN 115114090A CN 202210740276 A CN202210740276 A CN 202210740276A CN 115114090 A CN115114090 A CN 115114090A
- Authority
- CN
- China
- Prior art keywords
- cluster
- amr
- current
- executing
- map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种从损坏的存储设备中提取amr音频文件的方法,其特征在于包括以下步骤:S100:获取簇的字节长度,包括以下步骤:S101:遍历N个以amr头标识为起始的簇并记录各个簇的起始地址,其中,N为不小于1的自然数;S102:计算并记录各个簇中相邻两个簇的起始地址之差;S103:获取步骤S102中的N‑1个起始地址之差的最小值,作为簇的字节长度;S200:获取首个簇的地址,包括以下步骤:S201:获取首个以amr头标识为起始的簇的地址;S202:以首个以amr头标识为起始的簇的地址作为起始地址,以簇的字节长度为偏移量,向前寻址各个簇直至寻址到首个簇的地址;S300:对存储设备中amr数据进行分类并按分类存储至各个map数据结构,遍历各个map数据结构并提取amr音频文件。
Description
技术领域
本发明属于数据恢复领域,涉及一种从损坏的存储设备中提取amr音频文件的方法。
背景技术
amr是一种主要用于移动设备上的音频文件格式。由于amr文件占用资源少、容量小,每秒钟的amr文件大小可控制在1K左右,便于发录音及彩信等,因因而符合中国彩信大小不超过50k的技术规范。现市面上手机上的录音大多是amr格式。例如,amr曾是Nokia手机中的铃声音频文件格式,而Nokia手机中录音的文件也是运用的amr格式。因此,amr音频在生活中被广泛应用。
如果存储着amr的储存设备被损坏,现有技术的恢复方法是直接通过amr头以及头记录的长度直接获取文件,(即,我们通常所说的根据文件签名提取)。采用该方法提取出来的amr音频文件,将会提取出很多脏数据,同时,也会漏掉很多有用的数据。
本方法,通过研究而amr的格式、数据的组成方式、每个数据帧的特征,通过先确认正确的cluster(簇,以下都这样简称)大小,再对每个cluster分类,通过amr文件组成方式,amr帧的特征,提取出可播放amr的方法。
发明内容
针对现有技术的技术问题,本发明提供了一种从损坏的存储设备中提取amr音频文件的方法:通过分析amr的格式以及数据的组成方式,先获取簇的字节长度,再对各个簇分类,结合amr的数据帧的特征提取amr音频文件。
本发明包括以下步骤:
S100:获取簇的字节长度,包括以下步骤:
S101:遍历N个以amr头标识为起始的簇并记录各个簇的起始地址,其中,N为不小于1的自然数;
S102:计算并记录各个簇中相邻两个簇的起始地址之差;
S103:获取步骤S102中的N-1个起始地址之差的最小值,作为簇的字节长度;
S200:获取首个簇的地址,包括以下步骤:
S201:获取首个以amr头标识为起始的簇的地址;
S202:以首个以amr头标识为起始的簇的地址作为起始地址,以簇的字节长度为偏移量,向前寻址各个簇直至寻址到首个簇的地址;
S300:对存储设备中amr数据进行分类并按分类存储至各个map数据结构,遍历各个map数据结构并提取amr音频文件,其中,amr数据包括amr头及amr帧,相应地,map数据结构包括头map储存及数据map储存,所述步骤S300包括以下步骤:
S3000:寻址首个簇的地址;
S3001:判断是否完成所有簇的提取,如果是,执行步骤S3008,否则,执行步骤S3002;
S3002:根据簇的字节长度及当前簇的地址,读取当前簇的内容;
S3003:判断当前簇是否具有amr头,如果是,执行步骤S3004,否则,执行步骤S3005;
S3004:将amr头存储在map数据结构中,记为头map储存;
采用当前簇在存储设备中的偏移地址作为关键字、采用amr头信息作为关键值,将当前关键字及当前关键值添加至头map储存中,寻址下一簇并执行步骤S3001,其中,amr头信息包括当前簇中帧头的值、末帧在当前簇中缺失的字节长度;
S3005:判断当前簇是否具有amr帧,如果是,执行步骤S3006,否则,执行步骤S3007;
S3006:将amr帧存储在map数据结构中,记为帧map储存;
采用当前簇在储存设备中的偏移地址作为关键字、采用amr帧信息作为关键值,将当前关键字及当前关键值添加至数据map储存中,寻址下一簇并执行步骤S3001,其中,amr帧信息包括帧头的值、首帧的起始地址、当前簇末帧在当前簇中缺失的字节长度及文件结尾标识的值;
S3007:寻址下一簇并执行步骤S3001;
S3008:遍历map数据结构,提取amr音频文件。
优选地,N为20。
优选地,步骤S3003中判断当前簇是否具有amr头包括以下步骤:
A:当前簇是否以amr头标识作为起始;
B:amr头标识后是否连续储存amr帧。
优选地,所述amr头标识为#!AMR。
优选地,步骤S3006中所述文件结尾标识为bIsEnd,bIsEnd的值为真,表示为文件结尾,反之亦然。
优选地,步骤S3008包括以下步骤:
S30081:判断头map储存是否被遍历完,如果是,结束流程,否则,执行S30082;
S30082:从头map储存中读取一个簇并从头map储存中删除当前所读取的簇,将当前所读取的簇储存至输出暂存文件;
S30083:判断数据map储存是否被遍历完,如果是,执行步骤S30087,否则,执行步骤S30084;
S30084:从数据map储存中读取一个簇;
S30085:判断是否查找到下一簇,如果是,执行步骤S30086,否则,寻址下一簇并执行步骤S30083;
S30086:判断从数据map储存中所读取的当前簇中文件结尾标识是否为真,如果是,执行步骤S30087,否则,执行步骤S30088;
S30087:将当前输出暂存文件尾加至amr音频文件,执行步骤S30081;
S30088:把当前簇储存至输出暂存文件,将当前簇从数据map储存中删除,执行步骤S30083。
优选地,步骤S30085中判断是否查找到下一簇包括以下步骤:
1.当前簇及当前簇的下一簇具有相同的帧头;
2.当前簇末帧在当前簇中缺失的字节长度等于当前簇的下一簇首帧的字节长度。
本发明具有以下有益效果:
1.通过amr的数据存储格式来恢复amr音频文件,相比通过签名方式的恢复,所得到的amr音频文件更准确。
2.通过文件存储在文件系统中的特征,对簇大小重新计算,而不使用默认值,使得的恢复的amr音频文件更为准确。
3.通过分析amr帧的特征,找出存储着amr数据的簇,相比现有技术,能够获取到更多的有效的amr音频文件。
附图说明
图1为本发明所提供的方法的流程图;
图2为本发明所提供的一个实施例中amr头标识的数据结构示例图;
图3为本发明所提供的方法中对amr数据进行分类并按分类存储至各个map数据结构以及提取amr音频文件的具体流程图;
图4为本发明所提供的方法中遍历map数据结构并提取amr音频文件的具体流程图。
具体实施方式
图1示出了本发明所提供的方法的流程图。如图1所示,本发明的方法包括以下步骤:
S100:获取簇的字节长度,包括以下步骤:
S101:遍历N个以amr头标识为起始的簇并记录各个簇的起始地址,其中,N为不小于1的自然数;本实施例中,我们设置N为20。
此外,amr头标识为#!AMR。具体地,amr头标识分为窄带AMR-NB及宽带AMR-WB两种,其中,窄带AMR-NB的amr头标识为#!AMR;宽带AMR-WB的amr头标识为#!AMR_MC1.0。两者均以#!AMR为起始。
图2示出了本发明所提供的一个实施例中amr头标识的数据结构示例图。如图2所示,地址0x00000000至0x00000005的字节内容为0x2321414D520A,表示窄带AMR-NB的amr头标识#!AMR的ASCII码的十六进制表示。
S102:计算并记录各个簇中相邻两个簇的起始地址之差;
S103:获取步骤S102中的N-1个(本实施例中为19个)起始地址之差的最小值,作为簇的字节长度;
S200:获取首个簇的地址,包括以下步骤:
S201:获取首个以amr头标识为起始的簇的地址;
S202:以首个以amr头标识为起始的簇的地址作为起始地址,以簇的字节长度为偏移量,向前寻址各个簇直至寻址到首个簇的地址;
S300:对存储设备中amr数据进行分类并按分类存储至各个map数据结构,遍历各个map数据结构并提取amr音频文件,其中,amr数据包括amr头及amr帧,相应地,map数据结构包括头map储存及数据map储存。
图3示出了本发明所提供的方法中对amr数据进行分类并按分类存储至各个map数据结构以及提取amr音频文件的具体流程图。如图3所示,步骤S300包括以下步骤:
S3000:寻址首个簇的地址;
S3001:判断是否完成所有簇的提取,如果是,执行步骤S3008,否则,执行步骤S3002;
S3002:根据簇的字节长度及当前簇的地址,读取当前簇的内容;
S3003:判断当前簇是否具有amr头,如果是,执行步骤S3004,否则,执行步骤S3005;
具体地,判断当前簇是否具有amr头包括以下步骤:
A:当前簇是否以amr头标识作为起始;
B:amr头标识后是否连续储存amr帧。
S3004:将amr头存储在map数据结构中,记为头map储存;
采用当前簇在存储设备中的偏移地址作为关键字、采用amr头信息作为关键值,将当前关键字及当前关键值添加至头map储存中,寻址下一簇并执行步骤S3001,其中,amr头信息包括当前簇中帧头的值、末帧在当前簇中缺失的字节长度;
S3005:判断当前簇是否具有amr帧,如果是,执行步骤S3006,否则,执行步骤S3007;
S3006:将amr帧存储在map数据结构中,记为帧map储存;
采用当前簇在储存设备中的偏移地址作为关键字、采用amr帧信息作为关键值,将当前关键字及当前关键值添加至数据map储存中,寻址下一簇并执行步骤S3001,其中,amr帧信息包括帧头的值、首帧的起始地址、当前簇末帧在当前簇中缺失的字节长度及文件结尾标识的值;其中,文件结尾标识为bIsEnd,bIsEnd的值为真,表示为文件结尾,反之亦然。
S3007:寻址下一簇并执行步骤S3001;
S3008:遍历map数据结构,提取amr音频文件。
图4示出了本发明所提供的方法中遍历map数据结构并提取amr音频文件的具体流程图。如图4所示,步骤S3008包括以下步骤:
S30081:判断头map储存是否被遍历完,如果是,结束流程,否则,执行S30082;
S30082:从头map储存中读取一个簇并从头map储存中删除当前所读取的簇,将当前所读取的簇储存至输出暂存文件;
S30083:判断数据map储存是否被遍历完,如果是,执行步骤S30087,否则,执行步骤S30084;
S30084:从数据map储存中读取一个簇;
S30085:判断是否查找到下一簇,如果是,执行步骤S30086,否则,寻址下一簇并执行步骤S30083;具体地,步骤S30085中判断是否查找到下一簇包括以下步骤:
1.当前簇及当前簇的下一簇具有相同的帧头;
2.当前簇末帧在当前簇中缺失的字节长度等于当前簇的下一簇首帧的字节长度。
S30086:判断从数据map储存中所读取的当前簇中文件结尾标识是否为真,如果是,执行步骤S30087,否则,执行步骤S30088;
S30087:将当前输出暂存文件尾加至amr音频文件,执行步骤S30081;
S30088:把当前簇储存至输出暂存文件,将当前簇从数据map储存中删除,执行步骤S30083。
通过本发明所提供的上述方法,解决了现有技术中尚无一种从损坏的存储设备中提取amr音频文件的方法的技术问题。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (7)
1.一种从损坏的存储设备中提取amr音频文件的方法,其特征在于包括以下步骤:
S100:获取簇的字节长度,包括以下步骤:
S101:遍历N个以amr头标识为起始的簇并记录各个簇的起始地址,其中,N为不小于1的自然数;
S102:计算并记录各个簇中相邻两个簇的起始地址之差;
S103:获取步骤S102中的N-1个起始地址之差的最小值,作为簇的字节长度;
S200:获取首个簇的地址,包括以下步骤:
S201:获取首个以amr头标识为起始的簇的地址;
S202:以首个以amr头标识为起始的簇的地址作为起始地址,以簇的字节长度为偏移量,向前寻址各个簇直至寻址到首个簇的地址;
S300:对存储设备中amr数据进行分类并按分类存储至各个map数据结构,遍历各个map数据结构并提取amr音频文件,其中,amr数据包括amr头及amr帧,相应地,map数据结构包括头map储存及数据map储存,所述步骤S300包括以下步骤:
S3000:寻址首个簇的地址;
S3001:判断是否完成所有簇的提取,如果是,执行步骤S3008,否则,执行步骤S3002;
S3002:根据簇的字节长度及当前簇的地址,读取当前簇的内容;
S3003:判断当前簇是否具有amr头,如果是,执行步骤S3004,否则,执行步骤S3005;
S3004:将amr头存储在map数据结构中,记为头map储存;
采用当前簇在存储设备中的偏移地址作为关键字、采用amr头信息作为关键值,将当前关键字及当前关键值添加至头map储存中,寻址下一簇并执行步骤S3001,其中,amr头信息包括当前簇中帧头的值、末帧在当前簇中缺失的字节长度;
S3005:判断当前簇是否具有amr帧,如果是,执行步骤S3006,否则,执行步骤S3007;
S3006:将amr帧存储在map数据结构中,记为帧map储存;
采用当前簇在储存设备中的偏移地址作为关键字、采用amr帧信息作为关键值,将当前关键字及当前关键值添加至数据map储存中,寻址下一簇并执行步骤S3001,其中,amr帧信息包括帧头的值、首帧的起始地址、当前簇末帧在当前簇中缺失的字节长度及文件结尾标识的值;
S3007:寻址下一簇并执行步骤S3001;
S3008:遍历map数据结构,提取amr音频文件。
2.根据权利要求1所述的一种从损坏的存储设备中提取amr音频文件的方法,其特征在于,N为20。
3.根据权利要求1所述的一种从损坏的存储设备中提取amr音频文件的方法,其特征在于,步骤S3003中判断当前簇是否具有amr头包括以下步骤:
A:当前簇是否以amr头标识作为起始;
B:amr头标识后是否连续储存amr帧。
4.根据权利要求3所述的一种从损坏的存储设备中提取amr音频文件的方法,其特征在于,所述amr头标识为#!AMR。
5.根据权利要求1所述的一种从损坏的存储设备中提取amr音频文件的方法,其特征在于,步骤S3006中所述文件结尾标识为bIsEnd,bIsEnd的值为真,表示为文件结尾,反之亦然。
6.根据权利要求1所述的一种从损坏的存储设备中提取amr音频文件的方法,其特征在于,步骤S3008包括以下步骤:
S30081:判断头map储存是否被遍历完,如果是,结束流程,否则,执行S30082;
S30082:从头map储存中读取一个簇并从头map储存中删除当前所读取的簇,将当前所读取的簇储存至输出暂存文件;
S30083:判断数据map储存是否被遍历完,如果是,执行步骤S30087,否则,执行步骤S30084;
S30084:从数据map储存中读取一个簇;
S30085:判断是否查找到下一簇,如果是,执行步骤S30086,否则,寻址下一簇并执行步骤S30083;
S30086:判断从数据map储存中所读取的当前簇中文件结尾标识是否为真,如果是,执行步骤S30087,否则,执行步骤S30088;
S30087:将当前输出暂存文件尾加至amr音频文件,执行步骤S30081;
S30088:把当前簇储存至输出暂存文件,将当前簇从数据map储存中删除,执行步骤S30083。
7.根据权利要求6所述的一种从损坏的存储设备中提取amr音频文件的方法,其特征在于,步骤S30085中判断是否查找到下一簇包括以下步骤:
1).当前簇及当前簇的下一簇具有相同的帧头;
2).当前簇末帧在当前簇中缺失的字节长度等于当前簇的下一簇首帧的字节长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210740276.8A CN115114090A (zh) | 2022-06-27 | 2022-06-27 | 一种从损坏的存储设备中提取amr音频文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210740276.8A CN115114090A (zh) | 2022-06-27 | 2022-06-27 | 一种从损坏的存储设备中提取amr音频文件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115114090A true CN115114090A (zh) | 2022-09-27 |
Family
ID=83329536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210740276.8A Pending CN115114090A (zh) | 2022-06-27 | 2022-06-27 | 一种从损坏的存储设备中提取amr音频文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115114090A (zh) |
-
2022
- 2022-06-27 CN CN202210740276.8A patent/CN115114090A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6915012B2 (en) | System and method of storing data in JPEG files | |
CN102750962B (zh) | 一种录像文件的回放方法及装置 | |
CN102937926B (zh) | 一种恢复移动终端已删除sqlite文件的方法及装置 | |
JP4319378B2 (ja) | 製造業体の特殊機能を支援する記録媒体 | |
CN107545064A (zh) | 行车记录装置在文件名编码中加入日期和时间信息的机制 | |
CN101986302B (zh) | 媒体文件关联方法和设备 | |
CN1099091C (zh) | 利用ic卡存储器来录制和重放数字语音的方法 | |
US20050232498A1 (en) | System and method of storing data in JPEG files | |
CN109511008B (zh) | 一种基于对象存储支持视音频文件内容追加的方法 | |
CN115114090A (zh) | 一种从损坏的存储设备中提取amr音频文件的方法 | |
CN103137124A (zh) | 一种语音合成方法 | |
CN100440364C (zh) | 信息信号编辑装置,信息信号编辑方法 | |
WO2000049503A1 (fr) | Procede et dispositif d'enregistrement et de reproduction de donnees numeriques | |
JP3907227B2 (ja) | デジタルカメラ、その記録方法及びその記録再生方法 | |
CN115145765A (zh) | 一种avi格式的监控视频的雕复方法 | |
JP2008310889A (ja) | 記録再生装置 | |
US20050197830A1 (en) | Method for calculating a frame in audio decoding | |
US20060245307A1 (en) | Recording medium, data reproducing device, data recording device, and data reproducing method | |
US20030236660A1 (en) | Data recording-reproduction device | |
PL368806A1 (en) | Method and apparatus for recording video data, and information storage medium thereby | |
JP3705145B2 (ja) | Avデータ複製装置 | |
CN116935868A (zh) | 一种ogg音频修复方法、装置、计算机设备及存储介质 | |
TWI306247B (en) | Range splitting read/write methods for cd-mrw | |
CN105513103A (zh) | 制作有声图片的方法及装置 | |
CN105023594A (zh) | Midi文件解码方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |