CN116935868A - 一种ogg音频修复方法、装置、计算机设备及存储介质 - Google Patents

一种ogg音频修复方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116935868A
CN116935868A CN202310926081.7A CN202310926081A CN116935868A CN 116935868 A CN116935868 A CN 116935868A CN 202310926081 A CN202310926081 A CN 202310926081A CN 116935868 A CN116935868 A CN 116935868A
Authority
CN
China
Prior art keywords
ogg
audio
target
decoder
ogg audio
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
Application number
CN202310926081.7A
Other languages
English (en)
Inventor
龙逸翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Afirstsoft Co Ltd
Original Assignee
Afirstsoft Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Afirstsoft Co Ltd filed Critical Afirstsoft Co Ltd
Priority to CN202310926081.7A priority Critical patent/CN116935868A/zh
Publication of CN116935868A publication Critical patent/CN116935868A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/173Transcoding, i.e. converting between two coded representations avoiding cascaded coding-decoding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H5/00Instruments in which the tones are generated by means of electronic generators
    • G10H5/007Real-time simulation of G10B, G10C, G10D-type instruments using recursive or non-linear techniques, e.g. waveguide networks, recursive algorithms
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/011Files or data streams containing coded musical information, e.g. for transmission
    • G10H2240/031File merging MIDI, i.e. merging or mixing a MIDI-like file or stream with a non-MIDI file or stream, e.g. audio or video
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Nonlinear Science (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开了一种ogg音频修复方法、装置、计算机设备及存储介质,该方法包括:获取参考ogg音频,对参考ogg音频进行解析,并根据解析结果构建解码器;根据解码器创建temp.wav文件;获取待修复的目标ogg音频,并通过内存映射的方法提取目标ogg音频的二进制数据,得到指向二进制数据首地址的指针;基于地址偏移,利用指针获取目标ogg音频的所有页结构,并对每一页结构进行解析,得到目标ogg音频的负载;通过解码器对负载进行解码,并将解码数据写入至temp.wav文件,然后将temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。本发明通过可以正常播放的ogg音频构建解码器,然后对损坏的ogg音频进行负载获取,并通过解码器对负载进行解码,从而实现对于损坏的ogg音频的修复效果。

Description

一种ogg音频修复方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机软件技术领域,特别涉及一种ogg音频修复方法、装置、计算机设备及存储介质。
背景技术
Ogg(OGGVobis或者oggVorbis)是一种音频压缩格式,ogg音频在发生损坏时一般是由于页结构不完整而导致,而由于ogg容器格式的协定,故只有ogg音频的首页的结构中有存放包头,而其他页结构存放的是音频帧数据,因此页结构不完整通常是由于缺少了ogg首页结构中的三个包头中的任何一个或多个。
当前市面上还没有能够对结构不完整的ogg音频进行解析播放或者修复的播放器。另外,第三方库ffmpeg(是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序)的主要功能是转换格式,其无法获取ogg文件的包头信息,因此即便直接采用ffmpeg工具也无法直接为ogg音频文件补充完整结构。
发明内容
本发明实施例提供了一种ogg音频修复方法、装置、计算机设备及存储介质,旨在实现对于损坏ogg音频的修复。
第一方面,本发明实施例提供了一种ogg音频修复方法,包括:
获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;
根据所述解码器创建temp.wav文件;
获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;
基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;
通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
第二方面,本发明实施例提供了一种ogg音频修复装置,包括:
解码器构建单元,用于获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;
文件创建单元,用于根据所述解码器创建temp.wav文件;
指针获取单元,用于获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;
页结构解析单元,用于基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;
解码转换单元,用于通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的ogg音频修复方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的ogg音频修复方法。
本发明实施例提供了一种ogg音频修复方法、装置、计算机设备及存储介质,该方法包括:获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;根据所述解码器创建temp.wav文件;获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。本发明实施例考虑到ogg音频的编解码信息可以共用,因此首先通过可以正常播放的ogg音频构建解码器,然后对损坏的ogg音频进行负载获取,并通过构建的解码器对负载进行解码,然后经过格式转换后便能够得到修复后的ogg音频,从而实现对于损坏的ogg音频的修复效果。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种ogg音频修复方法的流程示意图;
图2为本发明实施例提供的一种ogg音频修复方法的子流程示意图;
图3为本发明实施例提供的一种ogg音频修复方法的示例示意图;
图4为本发明实施例提供的一种ogg音频修复装置的示意性框图;
图5为本发明实施例提供的一种ogg音频修复装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面请参见图1,图1为本发明实施例提供的一种ogg音频修复方法的流程示意图,具体包括:步骤S101~S105。
S101、获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;
S102、根据所述解码器创建temp.wav文件;
S103、获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;
S104、基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;
S105、通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
本实施例中,考虑到ogg音频的编解码信息可以共用,因此首先通过对可正常播放的参考ogg音频解析,来构建得到解码器,然后基于解码器构建temp.wav文件,同时对于发生损坏待修复的目标ogg音频进行内存映射,以获取目标ogg音频的二进制数据,从而得到指向数据首地址的指针。随后根据该指针来获取目标ogg音频的页结构,并对其进行解析以获取目标ogg音频的负载,接着便可以通过解码器对负载进行解析,随之进行格式转换,得到修复后的目标ogg音频,从而实现对于损坏的ogg音频的修复效果。
在一实施例中,所述步骤S101包括:
利用ffmpeg工具打开所述参考ogg音频的音频流文件;
对所述音频流文件进行扫描,并根据扫描结果提取得到初始解码器和转换器;其中,所述初始解码器为空解码器;
读取所述音频流文件的第一帧,并对所述第一帧进行解码操作;
通过所述ffmpeg工具补充所述初始解码器的上下文,得到完整的所述解码器。
本实施例中,使用第三方库ffmpeg的api接口来对参考ogg音频进行解析,其具体流程为:打开文件,对参考ogg音频的音频流进行扫描,从而获取初始解码器和转换器,然后读取音频流的第一帧,并对其进行解码操作,且解码后的帧不做处理,解码时ffmpeg会自动补充解码器的上下文,如此便能够得到完整解码器。可以理解的时,由于解码器、转码器等均为ffmpeg工具中定义的结构体,因此在实际场景中只需要在程序代码中声明一下需要使用即可获取获取相应的空的解码器和转码器。
在一实施例中,所述步骤S102包括:
从所述解码器中提取声道数和采样率;
创建temp.wav文件,并写入wav结构头部;其中,所述wav结构头部包含有固定标识、声道数和采样率,所述固定标识包括RIFF标识、WAVE标识、fmt标识、data标识。
本实施例中,在创建temp.wav文件时,写入wav结构头部,其中具体包含“RIFF”、“WAVE”、“fmt”、“data”等固定标识,以及解码器中的声道数、采样率。在这里,RIFF等标识均属于wav(WaveForm,也称为波形文件,是一种常见的音频格式)的一种标识,属于.wav文件结构的头部,而wav的整体结构便是由这些头部标识加上音频帧组成,而声道数、采样率则是指上述参考ogg音频的声道数和采样率,二者在所述解码器中都有保存。还需说明的是,在其他实施例中,除了wav格式之外,还可以采用其他音频格式,例如WMA(WindowsMediaAudio)格式、MIDI(Musical Instrument Digital Interface,一种编曲类的音频格式文件)格式等等。
在一实施例中,所述步骤S103包括:
将所述目标ogg音频映射至磁盘程序的地址空间;
调用mmap函数提取所述二进制数据,并得到所述指针。
本实施例中,在通过内存映射的方法提取所述目标ogg音频的二进制数据时,所述的内存映射是将磁盘上的文件(这里指待修复的目标ogg音频)映射到程序的地址空间(内存)中的机制,然后调用内置的mmap函数即可提取得到所述指针。
在一实施例中,如图2所示,所述步骤S104包括:步骤S201~S207。
S201、利用所述指针搜索捕获OggS标志,得到所述目标ogg音频的所有页结构;
S202、选取所述页结构中的任一页结构作为当前页,并针对所述当前页获取首字母,并将所述首字母设置为所述当前页的起点;
S203、基于所述起点,按照设定字节对所述指针进行偏移,然后读1字节数据,得到分段个数N;
S204、根据分段个数N设置分段表,并将所述分段表中的每一负载大小保存为数组;其中,所述分段表记录有N个字节负载的大小;
S205、结合所述分段表和设定字节计算所述当前页的总字节数;
S206、遍历所述数组,按照预置读取规则读取并记录所述分段表后的负载内容;
S207、在读取并保存所述当前页的所有负载后,根据所述总字节数对所述指针进行偏移,以读取下一页结构的负载内容,直至每一所述页结构的负载均被读取。
本实施例中,在获取了指针后,使用指针进行地址偏移寻找ogg的所有页结构,然后对页结构进行解析并得到所有的负载。具体来说,由于ogg页结构的开头是“OggS”,为固定格式,因此首先通过指针搜索捕获标志“OggS”来找到页结构,并将首字母“O”作为当前页结构的首地址。在找到首地址后,控制指针在首地址偏移设定字节,接着读1字节数据得到分段个数N,表明往后的N字节都是分段表的内容,而分段表记录了分段表往后每个负载的大小n1、n2、n3...(每个大小占1字节,共N个字节),然后使用数组保存分段表中每个负载的大小。
在这里,按结构顺序来说,ogg页结构的元素包含捕获标志、版本id、类型标识、位置数、流id、页序号、CRC校验和、分段个数(用于描述分段表的长度)、分段表、负载(即音频帧,大小由分段表决定,负载在页结构中是连续存储的)。其中分段个数占1字节,分段表所占字节数不固定,其他元素总共占26个字节。因此本实施例在所述起点进行指针偏移时,便可以按照设定字节为26字节对所述指针进行偏移。
然后,结合分段表和设定字节计算所当前页的总字节数,具体计算公式如下所示:
X=26+1+N+n1+n2+n3+...+nN;
其中,N表示分段表所占字节,n1、n2、n3、nN分别为所述分段表后的N个字节负载的大小。
结合图3所示,图3中的0x4F~0x97表示跳过的26字节,下一字节0x29为分段个数的值,那么分段表的内容即为0x49~0x6A,共0x29字节长度,分段表中0x49为负载1长度,即0x12~0x02,往后则是下一帧。
随后遍历所述数组,并在预设读取规则下,根据保存的负载读取分段表后续的负载内容并保存下来。在具体的实施例中,预设读取规则为:若第一个负载大小为n1,则分段表元素往后n1字节为负载1内容,第二个负载大小为n2,则负载1往后n2字节为负载2内容,第三个负载大小为n3,则负载2往后n3字节为负载3内容,以此类推。当读取并保存当前页的所有负载后,将指针偏移总字节数大小的位置,即对下一页结构进行负载读取保存,以此类推,直至所有页结构均读取完成,即目标ogg音频文件的末尾。
在一实施例中,所述步骤S105包括:
通过所述解码器对所述负载进行解码,得到解码数据;
通过所述转码器将所述解码数据转换为wav格式的音频帧;
按照追加的方式将所述wav格式的音频帧写入至temp.wav文件;
利用ffmpeg工具将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
本实施例中,利用构建得到的解码器,对保存的每个负载逐一进行解码。然后利用得到的转码器,将解码后的数据转换成wav格式的音频帧,并以追加的方式写入预先创建的所述temp.wav文件中,当所有负载均转入temp.wav后便得到完整的temp.wav文件。随后使用ffmpeg工具将完整的temp.wav文件进行ogg格式转换,最终得到一个修复完成的ogg音频。
图4为本发明实施例提供的一种ogg音频修复装置400的示意性框图,该装置400包括:
解码器构建单元401,用于获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;
文件创建单元402,用于根据所述解码器创建temp.wav文件;
指针获取单元403,用于获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;
页结构解析单元404,用于基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;
解码转换单元405,用于通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
在一实施例中,所述解码器构建单元401包括:
文件打开单元,用于利用ffmpeg工具打开所述参考ogg音频的音频流文件;
音频流扫描单元,用于对所述音频流文件进行扫描,并根据扫描结果提取得到初始解码器和转换器;其中,所述初始解码器为空解码器;
帧读取单元,用于读取所述音频流文件的第一帧,并对所述第一帧进行解码操作;
上下文补充单元,用于通过所述ffmpeg工具补充所述初始解码器的上下文,得到完整的所述解码器。
在一实施例中,所述文件创建单元402包括:
解码器提取单元,用于从所述解码器中提取声道数和采样率;
结构写入单元,用于创建temp.wav文件,并写入wav结构头部;其中,所述wav结构头部包含有固定标识、声道数和采样率,所述固定标识包括RIFF标识、WAVE标识、fmt标识、data标识。
在一实施例中,所述指针获取单元403包括:
内存映射单元,用于将所述目标ogg音频映射至磁盘程序的地址空间;
函数调用单元,用于调用mmap函数提取所述二进制数据,并得到所述指针。
在一实施例中,如图5所示,所述页结构解析单元404包括:
标志搜索单元501,用于利用所述指针搜索捕获OggS标志,得到所述目标ogg音频的所有页结构;
起点设置单元502,用于选取所述页结构中的任一页结构作为当前页,并针对所述当前页获取首字母,并将所述首字母设置为所述当前页的起点;
第一偏移单元503,用于基于所述起点,按照设定字节对所述指针进行偏移,然后读1字节数据,得到分段个数N;
分段表设置单元504,用于根据分段个数N设置分段表,并将所述分段表中的每一负载大小保存为数组;其中,所述分段表记录有N个字节负载的大小;
字节结合单元505,用于结合所述分段表和设定字节计算所述当前页的总字节数;
数组遍历单元506,用于遍历所述数组,按照预置读取规则读取并记录所述分段表后的负载内容;
第二偏移单元507,用于在读取并保存所述当前页的所有负载后,根据所述总字节数对所述指针进行偏移,以读取下一页结构的负载内容,直至每一所述页结构的负载均被读取。
在一实施例中,所述设定字节为26字节;
所述字节结合单元505包括:
字节计算单元,用于按照下式计算所述总字节数X:
X=26+1+N+n1+n2+n3+...+nN;
其中,N表示分段表所占字节,n1、n2、n3、nN分别为所述分段表后的N个字节负载的大小。
在一实施例中,所述解码转换单元405包括:
负载解码单元,用于通过所述解码器对所述负载进行解码,得到解码数据;
第一转换单元,用于通过所述转码器将所述解码数据转换为wav格式的音频帧;
追加写入单元,用于按照追加的方式将所述wav格式的音频帧写入至temp.wav文件;
第二转换单元,用于利用ffmpeg工具将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机设备,可以包括存储器和处理器,存储器中存有计算机程序,处理器调用存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然计算机设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的***而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种ogg音频修复方法,其特征在于,包括:
获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;
根据所述解码器创建temp.wav文件;
获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;
基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;
通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
2.根据权利要求1所述的ogg音频修复方法,其特征在于,所述获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器,包括:
利用ffmpeg工具打开所述参考ogg音频的音频流文件;
对所述音频流文件进行扫描,并根据扫描结果提取得到初始解码器和转换器;其中,所述初始解码器为空解码器;
读取所述音频流文件的第一帧,并对所述第一帧进行解码操作;
通过所述ffmpeg工具补充所述初始解码器的上下文,得到完整的所述解码器。
3.根据权利要求1所述的ogg音频修复方法,其特征在于,所述根据所述解码器创建temp.wav文件,包括:
从所述解码器中提取声道数和采样率;
创建temp.wav文件,并写入wav结构头部;其中,所述wav结构头部包含有固定标识、声道数和采样率,所述固定标识包括RIFF标识、WAVE标识、fmt标识、data标识。
4.根据权利要求1所述的ogg音频修复方法,其特征在于,所述获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针,包括:
将所述目标ogg音频映射至磁盘程序的地址空间;
调用mmap函数提取所述二进制数据,并得到所述指针。
5.根据权利要求1所述的ogg音频修复方法,其特征在于,所述基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载,包括:
利用所述指针搜索捕获OggS标志,得到所述目标ogg音频的所有页结构;
选取所述页结构中的任一页结构作为当前页,并针对所述当前页获取首字母,并将所述首字母设置为所述当前页的起点;
基于所述起点,按照设定字节对所述指针进行偏移,然后读1字节数据,得到分段个数N;
根据分段个数N设置分段表,并将所述分段表中的每一负载大小保存为数组;其中,所述分段表记录有N个字节负载的大小;
结合所述分段表和设定字节计算所述当前页的总字节数;
遍历所述数组,按照预置读取规则读取并记录所述分段表后的负载内容;
在读取并保存所述当前页的所有负载后,根据所述总字节数对所述指针进行偏移,以读取下一页结构的负载内容,直至每一所述页结构的负载均被读取。
6.根据权利要求5所述的ogg音频修复方法,其特征在于,所述设定字节为26字节;
所述结合所述分段表和设定字节计算所述当前页的总字节数,包括:
按照下式计算所述总字节数X:
X=26+1+N+n1+n2+n3+...+nN;
其中,N表示分段表所占字节,n1、n2、n3、nN分别为所述分段表后的N个字节负载的大小。
7.根据权利要求2所述的ogg音频修复方法,其特征在于,所述通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频,包括:
通过所述解码器对所述负载进行解码,得到解码数据;
通过所述转码器将所述解码数据转换为wav格式的音频帧;
按照追加的方式将所述wav格式的音频帧写入至temp.wav文件;
利用ffmpeg工具将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
8.一种ogg音频修复装置,其特征在于,包括:
解码器构建单元,用于获取参考ogg音频,对所述参考ogg音频进行解析,并根据解析结果构建解码器;其中,所述参考ogg音频为可正常播放的ogg音频;
文件创建单元,用于根据所述解码器创建temp.wav文件;
指针获取单元,用于获取待修复的目标ogg音频,并通过内存映射的方法提取所述目标ogg音频的二进制数据,得到指向所述二进制数据首地址的指针;
页结构解析单元,用于基于地址偏移,利用所述指针获取所述目标ogg音频的所有页结构,并对每一所述页结构进行解析,得到所述目标ogg音频的负载;
解码转换单元,用于通过所述解码器对所述负载进行解码,并将解码数据写入至所述temp.wav文件,然后将所述temp.wav文件转换为ogg格式,得到修复后的目标ogg音频。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的ogg音频修复方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的ogg音频修复方法。
CN202310926081.7A 2023-07-26 2023-07-26 一种ogg音频修复方法、装置、计算机设备及存储介质 Pending CN116935868A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310926081.7A CN116935868A (zh) 2023-07-26 2023-07-26 一种ogg音频修复方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310926081.7A CN116935868A (zh) 2023-07-26 2023-07-26 一种ogg音频修复方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN116935868A true CN116935868A (zh) 2023-10-24

Family

ID=88393932

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310926081.7A Pending CN116935868A (zh) 2023-07-26 2023-07-26 一种ogg音频修复方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116935868A (zh)

Similar Documents

Publication Publication Date Title
US6915012B2 (en) System and method of storing data in JPEG files
JP2005129217A5 (zh)
US10446188B2 (en) Method and apparatus for low latency non-linear media editing using file-based inserts into finalized digital multimedia files
JP2003507988A5 (zh)
JP2006244697A (ja) 製造業体の特殊機能を支援する記録及び/または再生装置
TW460865B (en) Signal processing on information files so as to obtain characteristic point information sequences
US11750784B2 (en) Automatic video file repair method and system
JP5164183B2 (ja) データの記録方法、データの集合の取り出し方法、データファイル、データ構造、および当該データを収容する媒体
US8509590B2 (en) Metadata recording device and method thereof
US20040008975A1 (en) Input buffer management for the playback control for MP3 players
US20050232498A1 (en) System and method of storing data in JPEG files
CN116935868A (zh) 一种ogg音频修复方法、装置、计算机设备及存储介质
CN101448094B (zh) 一种用于快速导入媒体素材的方法
US7149159B2 (en) Method and apparatus for editing data streams
CN114125469B (zh) Mp4文件修复方法、装置、电子设备及存储介质
CN114257840B (zh) 一种用于Matroska格式视频的修复方法和***
CN102522088B (zh) 音频的解码方法及装置
CN102169706B (zh) Yuv文件的存储、播放方法及其装置
CN109633740B (zh) 磁带seg-d地震数据结构分析方法及解编装置
CN106101573A (zh) 一种视频标注的锚定及匹配方法
US20080320157A1 (en) Virtual format for the storage of streaming data
US6928408B1 (en) Speech data compression/expansion apparatus and method
CN110099252B (zh) 一种转换监控视频为可播放视频的方法
JP4360428B2 (ja) 記録装置、記録方法、コンピュータプログラムおよび記録媒体
US20050197830A1 (en) Method for calculating a frame in audio decoding

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