CN116110410B - 音频数据处理方法、装置、电子设备和存储介质 - Google Patents

音频数据处理方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116110410B
CN116110410B CN202310397945.0A CN202310397945A CN116110410B CN 116110410 B CN116110410 B CN 116110410B CN 202310397945 A CN202310397945 A CN 202310397945A CN 116110410 B CN116110410 B CN 116110410B
Authority
CN
China
Prior art keywords
data
stream
data packet
packet
information
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.)
Active
Application number
CN202310397945.0A
Other languages
English (en)
Other versions
CN116110410A (zh
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.)
Beijing Suneng Technology Co ltd
Original Assignee
Beijing Suneng Technology 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 Beijing Suneng Technology Co ltd filed Critical Beijing Suneng Technology Co ltd
Priority to CN202310397945.0A priority Critical patent/CN116110410B/zh
Publication of CN116110410A publication Critical patent/CN116110410A/zh
Application granted granted Critical
Publication of CN116110410B publication Critical patent/CN116110410B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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/26Pre-filtering or post-filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本公开提供一种音频数据处理方法、装置、电子设备和存储介质。所述方法包括:获取AAC类型的原始音频数据,原始音频数据中的数据包包含:ADTS头信息和音频帧数据;在将数据包的长度记录为第一长度时,跳过针对数据包的预设处理,第一长度为数据包中的音频帧数据的长度;针对跳过预设处理的数据包,将数据包的第一长度更新为第二长度,并调整数据包的后一个数据包的偏移位置;第二长度为数据包中的ADTS头信息的长度与第一长度之和;根据数据包的偏移位置及数据包的第二长度,将跳过预设处理的数据包封装到流媒体文件中。本公开通过将包含ADTS头信息的ACC音频数据封装到流媒体文件中,实现对流媒体文件解封装后的裸音频数据进行直接播放或加解密等操作。

Description

音频数据处理方法、装置、电子设备和存储介质
技术领域
本公开涉及数据处理技术,尤其涉及一种音频数据处理方法、装置、电子设备和存储介质。
背景技术
流媒体是采用流式传输技术在网络上连续实时播放的媒体格式,例如音频、视频或多媒体文件。
AAC(Advanced Audio Coding,高级音频编码)是一种高压缩比的音频压缩编码算法,AAC音频压缩编码标准相对于MP2、MP3、AC3(Audio Coding3,音频编码3)等音频编码标准来说,在相同质量下码率更低,有效地节约了传输带宽。
相关技术中,在对AAC类型的音频数据封装到流媒体文件中时,默认该音频数据不包含ADTS(Audio Data Transport Stream,音频数据传输流)头信息,会导致进行流媒体文件解封装后得到的音频数据无法直接播放,需要对解封装得到的音频数据手动添加ADTS头信息使其成为一个完整的数据,才能对音频数据进行实时播放。而在封装AAC类型的音频数据时,若依赖特定的lib(Library)库进行封装,则会增加产品的系统内存,并且可能会由于使用特定的商业版lib库,导致音频处理成本的增加。
发明内容
本公开实施例提供一种音频数据处理方法、装置、电子设备和存储介质。
根据本公开实施例的第一方面,提供了一种音频数据处理方法,所述方法包括:
获取高级音频编码AAC类型的原始音频数据,其中,所述原始音频数据中的数据包包含:音频数据传输流ADTS头信息和音频帧数据;
在将所述数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,所述第一长度为:所述数据包中的音频帧数据的长度;
针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;所述第二长度为:所述数据包中的ADTS头信息的长度与所述第一长度之和;
根据所述数据包的偏移位置以及所述数据包的第二长度,将跳过所述预设处理的所述数据包封装到流媒体文件中。
在一个实施例中,所述跳过针对所述数据包的预设处理,包括:
跳过针对所述数据包中的ADTS头信息的剔除处理;
在跳过针对所述ADTS头信息的剔除处理后,跳过针对所述数据包进行的所述AAC类型的检测处理。
在一个实施例中,所述跳过针对所述数据包中的ADTS头信息的剔除处理,包括:
跳过使用比特流滤波器对所述数据包的处理,其中,所述使用比特流滤波器对所述数据包的处理包括:使用所述比特流滤波器对所述数据包中的ADTS头信息的剔除处理。
在一个实施例中,所述根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置,包括:
根据跳过所述预设处理的所述数据包的偏移位置以及所述数据包的第二长度,调整所述数据包的后一个数据包的偏移位置。
在一个实施例中,所述方法还包括:
在所述流媒体文件出现异常的情况下,从异常的所述流媒体文件中获取媒体数据包;
对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息;
根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息;
根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的moov(movie box,元数据容器,也可称为“影像包”)模板,生成moov信息;
将所述moov信息更新到异常的所述流媒体文件中,得到修复后的所述流媒体文件。
在一个实施例中,所述对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息,包括:
对所述媒体数据包中的AAC类型的音频流数据进行ADTS头信息的解析,得到所述音频流数据的解析信息;
当所述媒体数据包中包含视频流数据时,对所述视频流数据进行解析,获得所述视频流数据的解析信息;
当所述媒体数据包中包含字幕流数据时,对所述字幕流数据进行解析,获得所述字幕流数据的解析信息;
当所述媒体数据包中包含缩略图流数据时,对所述缩略图流数据进行解析,获得所述缩略图流数据的解析信息。
在一个实施例中,所述根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息,包括:
根据各所述流数据的解析信息,确定各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序;
根据各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序,获取各所述流数据在所述流媒体文件中的样本位置信息。
在一个实施例中,所述根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的元数据容器moov模板,生成moov信息,包括:
根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息,更新所述moov模板中的内容;
根据更新后的所述moov模板中的内容,生成所述moov信息;
其中,所述moov模板中的内容包括:轨道的头部包、媒体信息的头部包、样本时间包、样本块包、样本大小包、块偏移量包和样本描述包。
根据本公开实施例的第二方面,提供了一种音频数据处理装置,所述装置包括:
获取模块,用于获取高级音频编码AAC类型的原始音频数据,其中,所述原始音频数据中的数据包包含:音频数据传输流ADTS头信息和音频帧数据;
第一处理模块,用于在将所述数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,所述第一长度为:所述数据包中的音频帧数据的长度;
第二处理模块,用于针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;所述第二长度为:所述数据包中的ADTS头信息的长度与所述第一长度之和;
封装模块,用于根据所述数据包的偏移位置以及所述数据包的第二长度,将跳过所述预设处理的所述数据包封装到流媒体文件中。
根据本公开实施例的第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面任一项所述的音频数据处理方法。
根据本公开实施例的第四方面,提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一项所述的音频数据处理方法。
本公开实施例提供的技术方案,通过获取AAC类型的原始音频数据,原始音频数据中的数据包包含:ADTS头信息和音频帧数据,并在将数据包的长度记录为第一长度的情况下,跳过针对原始音频数据中的数据包的预设处理,其中,第一长度为:数据包中的音频帧数据的长度,以及针对跳过预设处理的数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;第二长度为:数据包中的ADTS头信息的长度与第一长度之和;根据数据包的偏移位置以及数据包的第二长度,对跳过预设处理的数据包封装到流媒体文件中。如此,在不增加其它lib库的情况下,能够将包含ADTS头信息的ACC类型的音频数据封装到流媒体文件中,降低了音频数据处理成本,这样在对流媒体文件进行解封装后,可以得到音频数据中的ADTS头信息,从而利用ADTS头信息实现对解封装后的裸音频数据进行直接播放,提高了音频播放效率,并且可以解析出每一帧音频数据的具体长度,此外也可以对解封装后的音频数据进行加解密操作,达到音频数据加解密的功能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1示出了本公开实施例提供的一种音频数据处理方法的流程示意图;
图2示出了本公开实施例提供的一种音频数据处理方法的流程示意图;
图3示出了本公开实施例提供的一种音频数据处理方法的流程示意图;
图4示出了本公开实施例提供的一种音频数据处理方法的流程示意图;
图5示出了本公开实施例提供的一种音频数据处理方法的流程示意图;
图6示出了本公开实施例提供的一种音频数据处理方法的流程示意图;
图7示出了本公开实施例提供的音频数据处理的具体流程示意图;
图8示出了本公开实施例提供的流媒体文件修复的具体流程示意图;
图9示出了本公开实施例提供的对异常的流媒体文件进行修复的示意图;
图10示出了本公开实施例提供的一种音频数据处理装置的结构示意图;
图11示出了本公开实施例提供的音频数据处理装置中的修复模块的结构示意图;
图12示出了本公开实施例提供的一种电子设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开实施例的一些方面相一致的装置和方法的例子。
在本公开实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开实施例。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
流媒体是采用流式传输技术在网络上连续实时播放的媒体格式,例如音频、视频或多媒体文件。
流媒体文件的封装格式(即,流媒体文件格式)可以为:MOV(Movie digital videotechnology,数码电影视频技术的文件格式)、MP4(Moving Picture Experts Group 4,动态图像专家组)、TS(Transport Stream,高清摄像机拍摄下进行的封装格式文件)或FLV(Flash Video)等。
相关技术中,针对流媒体文件封装AAC类型的音频数据,存在如下技术问题:
(1)在将AAC类型的音频码流封装到流媒体文件时,需要将音频码流中的ADTS头信息剔除后再封装。由于不存在ADTS头信息导致进行流媒体文件解封装后得到的音频数据无法直接播放,需要对解封装得到的音频数据手动添加ADTS头信息,使其成为一个完整的数据,才能对音频数据进行实时播放。
(2)由于无法获知音频数据长度大小,导致无法对流媒体文件中的音频数据做加解密或者其它操作。
(3)使用特定的lib(Library,动态库/静态库)库,会增加产品的系统内存,并且使用特定的商业版lib库会增加一定的成本。
相关技术中,针对流媒体文件的保存,通常有如下两种解决方案:
一种解决方案为:在设备断电前,依靠设备电容进行供电来保存录制的流媒体文件,使其保持文件的完整性。然而,该方案在电容保护上,由于存储介质存在不可控因素,例如,被人为取出存储介质,或者设备被暴力损坏,比如发生车祸,设备被撞坏等,但存储介质还是完好的,此时由于设备中的流媒体文件处于损坏状态,将会导致损失关键资料。
另一种解决方案为:在封装流媒体文件时,采用固定时间将已封装的数据文件补齐,虚构其已经封装完成,使该文件中包含多个完整的区域块。然而,该方案在采用重复计算文件实现多个完整区域时,由于重复地写数据和计算数据,在耗时上会有所增加,并且由于分为多个完整的数据块去写不必要的数据,会使整个流媒体文件大小也有所增加;另外,采用固定时间写完整数据而使其成为一个独立的完整块数据,如果遇到不可控的因素导致设备损坏,这样未达到写完整块数据的内容将会被丢失,从而造成部分数据的损失。
本公开实施例提供一种音频数据处理方法,可以应用于电子设备,所述电子设备可以是终端或服务器。例如,终端可以包括但不限于:手机、电脑、车载设备、监控摄像设备、物联网设备等。例如,服务器可以为一台服务器或者为多台服务器组成的服务器集群,或者为一个云计算服务中心。
图1示出了本公开实施例提供的一种音频数据处理方法的流程示意图,如图1所示,所述方法包括以下步骤:
101:获取高级音频编码AAC类型的原始音频数据,其中,所述原始音频数据中的数据包包含:ADTS头信息和音频帧数据;
102:在将所述数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,所述第一长度为:所述数据包中的音频帧数据的长度;
103:针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;所述第二长度为:所述数据包中的ADTS头信息的长度与所述第一长度之和;
104:根据所述数据包的偏移位置以及所述数据包的第二长度,将跳过所述预设处理的所述数据包封装到流媒体文件中。
本公开实施例中,所述音频数据处理方法可以采用多媒体框架来实现。例如,多媒体框架可以为:FFmpeg(fast forward moving picture expert group,快速前进运动图像专家组)框架。例如,可以通过对FFmpeg框架进行自定义的开发来实现对音频数据的处理。
其中,FFmpeg框架是一款开源的多媒体框架,能够实现解码、编码、转码、流媒体和播放等音视频服务功能,可以作为编解码的基础框架,进行自定义的开发。可以理解的是,还可以采用Gstreamer等其他框架实现对音频数据的处理,本实施例对此不作限定。
在一些示例中,上述步骤101中,可以将由经过AAC编码后的音频原始流(Elementary Streams,ES)形成的音频PES(Packetized Elementary Streams,分组的ES),确定为所述AAC类型的原始音频数据。
例如,可以对AAC编码后的音频ES流经过PES打包器处理后形成音频PES数据流。
所述音频PES数据流的形成过程可以包括:对音频ES流的分组、打包以及对数据包添加ADTS头信息等操作。
本实施例中,原始音频数据中的数据包包含:ADTS头信息和音频帧数据。ADTS头信息包含音频信息,例如,音频信息包括但不限于:采样率(Sample Rate)、通道数和/或数据长度。所述音频帧数据可以称为:裸音频数据或者音频数据裸流,即是具体的音频内容。
其中,ADTS头信息的长度可以为7个字节或9个字节,例如,可以在AAC类型的音频帧数据前添加长度为7个字节的ADTS头信息。
在一些示例中,上述步骤102中,可以将所述数据包中的音频帧数据的长度记录为所述数据包的长度,同时跳过针对所述数据包的预设处理;或者,将所述数据包中的音频帧数据的长度记录为所述数据包的长度之后,跳过针对所述数据包的预设处理。
本实施例中,数据包中包含:ADTS头信息和音频帧数据;所述数据包的实际长度为:所述数据包中包含的ADTS头信息的长度与音频帧数据的长度之和。
这里,所述数据包的长度,可用于表征所述数据包的数据量大小;所述ADTS头信息的长度,可用于表征所述ADTS头信息的数据量大小;所述音频帧数据的长度,可用于表征所述音频帧数据的数据量大小。
本实施例中,将数据包的长度记录为第一长度,第一长度为所述数据包中的音频帧数据的长度,可以理解为:将所述数据包的长度虚拟为所述数据包中的音频帧数据的长度。
这里,所述预设处理包括:对编解码类型是AAC类型的数据包执行封装前的处理。
在一些示例中,所述预设处理包括:剔除数据包中包含的ADTS头信息,和/或在检测到数据包中包含ADTS头信息的情况下,不允许执行针对所述数据包的封装。
其中,针对所述数据包的封装可以包括:将所述数据包写入数据块(chunk,也可称为“消息块”)的操作。本实施例中,当AAC类型的数据包包含ADTS头信息和音频帧数据时,通过在将AAC类型的数据包的长度记录为第一长度(即,将所述数据包的长度虚拟为所述数据包中的音频帧数据的长度)的情况下,跳过针对所述数据包的预设处理,能够在所述数据包中包含ADTS头信息的情况下,保持所述数据包中包含ADTS头信息,并允许执行针对所述数据包的封装。另外,通过对跳过预设处理的所述数据包封装成流媒体文件,这样在对流媒体文件解封装后得到ADTS头信息,也能够防止AAC音频解码器错误地将该ADTS头信息作为AAC裸流数据,而导致解码错误或者音频播放错误的情况发生。
在一些示例中,上述步骤103中,可以针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包在取样器中的偏移位置。
这里,所述第二长度为所述数据包中的ADTS头信息的长度与所述第一长度之和,也就是说,第二长度为数据包的实际长度。
在一些示例中,数据包的偏移位置可以指向:该数据包在该数据包待封装到的流媒体文件的起始位置。
在一些示例中,ACC类型的数据包的偏移位置可以指向:ACC类型的数据包中ADTS头信息在该数据包待封装到的流媒体文件的起始位置。
其中,数据包的偏移位置,可以以字节数来表示。
在一些示例中,上述步骤103中,针对跳过所述预设处理的所述数据包,根据所述数据包的偏移位置,调整所述数据包的后一个数据包的偏移位置,可以包括:
响应于所述数据包的偏移位置发生调整,根据所述数据包的偏移位置的调整量以及所述数据包中的ADTS头信息的长度,调整所述数据包的后一个数据包的偏移位置;
或者,响应于所述数据包的偏移位置未发生调整,根据所述数据包中的ADTS头信息的长度,调整所述数据包的后一个数据包的偏移位置。
这里,所述数据包的偏移位置发生调整时,所述数据包的偏移位置的调整量与所述数据包中的ADTS头信息的长度之和,可用于作为后一个数据包的偏移位置的调整量。
所述数据包的偏移位置未发生调整时,所述数据包中的ADTS头信息的长度,可用于作为后一个数据包的偏移位置的调整量。
在一些示例中,所述数据包的偏移位置是否发生调整,可以根据所述数据包的前一个数据包是否为包含ADTS头信息的数据包确定。当所述数据包的前一个数据包为包含ADTS头信息的数据包时,确定所述数据包的偏移位置发生调整;当所述数据包的前一个数据包不是包含ADTS头信息的数据包时,确定所述数据包的偏移位置未发生调整。
在一些示例中,针对跳过所述预设处理的所述数据包,若所述数据包为待封装到流媒体文件中的第一个数据包,所述数据包的偏移位置指向所述流媒体文件的起始位置。
若所述数据包不是待封装到流媒体文件中的第一个数据包,所述数据包的偏移位置根据所述数据包的前一个数据包的偏移位置和所述数据包的前一个数据包的长度确定。
这里,所述数据包的前一个数据包的偏移位置,指向所述数据包的前一个数据包在待封装到的流媒体文件中的起始位置。
在本公开中,需要封装到流媒体文件中的每一个数据包的长度可以被记录到stsz(sample size box,样本大小包)中。需要封装到流媒体文件中的每一个数据包的偏移位置可以被记录到stco(chunk offset box,块偏移量包)中。
取样器,可用于将包含所述ADTS信息和音频帧数据的数据包形成sample(样本)。通过确定一个sample在取样器中的偏移位置,结合该sample的长度大小,即可得到该数据包在数据块(chunk)中的实际位置。
这里,sample是媒体数据存储的基本单元。对于音频,sample可以理解为一段连续的压缩音频;对于视频,sample可以理解为一帧或一组连续视频帧。
chunk是媒体轨(Media Stream Track)中的一个或多个Sample的组合。
track是一个或多个chunk的集合,对于媒体数据而言,track可以是视频轨(即,视频序列),也可以是音频轨(即,音频序列)。在一些示例中,可以调用FFmpeg功能函数来调整数据包的偏移位置。
示例性地,流媒体文件的起始位置为0,若AAC类型的音频数据为第一个数据包,第一个数据包中的裸音频数据的长度为250字节,第二个数据包为视频流数据。由于对AAC类型的音频数据封装到流媒体文件中时,默认该音频数据不包含ADTS头信息,因此第二个数据包在待封装到的流媒体文件的偏移位置指向第251个字节(即,第二个数据包的起始位置为250)。
而本实施例中,通过跳过针对所述原始音频数据中的数据包的预设处理,使得ADTS头信息保持包含在AAC类型的原始音频数据中,这样第一个数据包的实际长度为257字节(包含7个字节长度的ADTS头信息和250个字节长度的裸音频数据),第一个数据包的位置范围为0~256,则将第二个数据包的偏移位置由指向第251个字节调整为指向第258个字节(即,第二个数据包的起始位置调整为257),如此,能够避免数据包之间的位置发生重叠而导致数据丢失。
本实施例中,AAC类型的数据包的后一个数据包与AAC类型的数据包,可以是相同类型,也可以是不同类型的流数据。例如,AAC类型的数据包的后一个数据包为视频流数据或字幕流数据。
本实施例中,针对跳过预设处理的数据包,通过更新该数据包的长度为所述数据包中的ADTS头信息的长度与所述第一长度之和,即将记录的所述数据包的长度更新为所述数据包的实际长度,并调整所述数据包的后一个数据包的偏移位置,这样在保持ADTS头信息保持包含在AAC类型的数据包中时,能够避免当前数据包与后一个数据包之间的位置发生重叠,同时能够在内存中为该数据包分配相应的存储空间,能够保证数据包在封装到流媒体文件的过程中信息不丢失。
在一些示例中,上述步骤104中,可以采用FFmpeg框架根据所述数据包的偏移位置以及所述数据包的第二长度确定所述数据包在流媒体文件中的开始位置和结束位置,根据所述数据包开始位置和结束位置,将所述数据包封装到流媒体文件中。
其中,可以采用FFmpeg框架的视音频复用器(Muxer)根据所述数据包的偏移位置以及所述数据包的第二长度,将所述数据包封装到预定的流媒体格式的流媒体文件中。
这里,流媒体格式例如可以为FLV(Flash Video)、MP4(MPEG-4 Part 14)或EMP4(Fragmented MP4,片段MP4)等。
可以理解的是,在上述步骤104中,可以将AAC类型的所述数据包与其他类型的数据(例如,H.264类型的视频压缩数据)封装到同一个流媒体文件中。
在一些示例中,封装有所述数据包的流媒体文件,可以采用预定的流媒体协议在网络上传输。所述流媒体协议例如HTTP(Hypertext Transfer Protocol,超文本传输协议)、RTMP(Real Time Messaging Protocol,实时消息传输协议)或者是MMS(MicrosoftMedia Server Protocol,微软媒体服务器协议),等等。
在一些示例中,在将包含所述ADTS头信息的所述数据包封装到流媒体文件前,还可以对ADTS头信息进行加密处理,例如对ADTS头信息中的可变头进行加密处理,以提高所述ADTS头信息的安全性。
本公开实施例提供一种音频数据处理方法,通过获取AAC类型的原始音频数据,原始音频数据中的数据包包含:ADTS头信息和音频帧数据,并在将数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,第一长度为:数据包中的音频帧数据的长度,以及针对跳过预设处理的数据包,将所述数据包的第一长度更新为第二长度,并调整所述数据包的后一个数据包的偏移位置;第二长度为:数据包中的ADTS头信息的长度与第一长度之和;根据数据包的偏移位置以及数据包的第二长度,对跳过预设处理的数据包封装到流媒体文件中。
如此,在不增加其它lib库的情况下,能够将包含ADTS头信息的ACC类型的音频数据封装到流媒体文件中,降低了音频数据处理成本,这样在对流媒体文件进行解封装后,可以得到音频数据中的ADTS头信息,从而利用ADTS头信息可以实现对解封装后的裸音频数据进行直接播放,提高了音频播放效率,同时也没有改变流媒体的封装步骤,且封装流媒体文件的耗时及文件大小也不会有所增加。另外,利用ADTS头信息可以解析到每一帧音频数据的具体长度,能够解决AAC类型的封装无法获取音频数据的长度及相关的标志起始位的问题,进而也可以利用音频帧数据的长度对流媒体文件中的音频数据进行一些特定的加解密操作或其他操作等。
在一个实施例中,如图2所示,上述步骤102中,所述跳过针对所述数据包的预设处理,可以包括:
201:跳过针对所述数据包中的ADTS头信息的剔除处理;
202:在跳过针对所述ADTS头信息的剔除处理后,跳过针对所述数据包进行的所述AAC类型的检测处理。
本实施例中,通过跳过针对所述数据包中的ADTS头信息的剔除处理,可以保持ADTS头信息包含在所述数据包中。
在一些示例中,所述方法还可以包括:
在跳过针对所述数据包中的ADTS头信息的剔除处理的情况下,执行针对所述数据包的压缩处理。如此,可以在不损失有用信息量的情况下,降低AAC类型的音频码率。
在一些示例中,针对数据包进行AAC类型的检测处理,用于在检测到数据包的类型是AAC类型的情况下,若判断到所述数据包中包含ADTS信息,则不允许执行针对所述数据包的写入操作。
本实施例中,在跳过针对所述ADTS头信息的剔除处理后,跳过针对所述数据包进行所述AAC类型的检测处理,能够在数据包中包含ADTS头信息的情况下,允许执行针对所述数据包的封装(例如,写入操作)。
可以理解的是,在其他实施例中,也可以先执行跳过针对所述数据包进行所述AAC类型的检测处理,再执行跳过针对所述数据包中的ADTS头信息的剔除处理。
在一个实施例中,上述步骤201中,所述跳过针对所述数据包中的ADTS头信息的剔除处理,可以包括:
跳过使用比特流滤波器对所述数据包的处理,其中,所述使用比特流滤波器对所述数据包的处理包括:使用所述比特流滤波器对所述数据包中的ADTS头信息的剔除处理。
这里,比特流过滤器(Bitstream Filter),可用于过滤掉所述数据包中的ADTS头信息,即剔除所述数据包中的ADTS头信息,同时保留所述数据包中的音频帧数据(即,裸音频数据)。
在一些示例中,跳过使用比特流滤波器对所述数据包的处理,可以包括:跳过使用比特流滤波器对所述数据包中的ADTS头信息的剔除处理。在该示例中,可以保留使用滤波器执行针对所述数据包中的ADTS头信息的剔除处理之外的其他处理。
在另一些示例中,跳过使用比特流滤波器对所述数据包的处理,可以包括:使用比特流过滤器不加改变地传递所述数据包,即:跳过使用比特流滤波器执行针对所述数据包中的ADTS头信息的剔除处理以及针对所述数据包的其他处理。
在又一些示例中,跳过使用比特流滤波器对所述数据包的处理,可以包括:使所述数据包绕过比特流滤波器的处理。
在一些示例中,所述比特流过滤器可以为:音频比特流过滤器,例如:FFmpeg框架提供的aac_adtstoasc。
在一些示例中,当调用FFmpeg框架提供的函数check_bitstream检测到码流为AAC类型的数据包时,对所述数据包跳过比特流过滤器的处理。
这里,跳过比特流过滤器的处理的数据包的写入方式为第一写入方式(例如,调用函数write_packet_common写数据包的方式),其中,第一写入方式不同于第二写入方式,第二写入方式为:经过比特流过滤器的剔除处理的数据包的写入方式(例如,调用函数write_packets_from_bsfs写数据包的方式)。
本实施例中,通过跳过使用比特流滤波器针对AAC类型的所述数据包的处理,这样可以保持ADTS头信息包含在所述数据包中,以便确保后续将包含ADTS头信息的音频数据封装到流媒体文件中。
在一个实施例中,上述步骤103中,所述根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置,可以包括:
根据跳过所述预设处理的所述数据包的偏移位置以及所述数据包的第二长度,调整所述数据包的后一个数据包的偏移位置。
其中,当跳过所述预设处理的所述数据包是待封装到流媒体文件中的第一个数据包时,所述数据包中的所述ADTS的起始位置为所述数据包的起始位置。
这里,跳过所述预设处理的所述数据包的前一个数据包、与跳过所述预设处理的所述数据包的流类型可以相同或不同。例如,跳过所述预设处理的所述数据包的前一个数据包为不同于音频流数据的视频流数据或字幕流数据。
这里,跳过所述预设处理的所述数据包的后一个数据包、与跳过所述预设处理的所述数据包的流类型可以相同或不同。例如,跳过所述预设处理的所述数据包的后一个数据包为不同于音频流数据的视频流数据或字幕流数据。
在一些示例中,当跳过所述预设处理的所述数据包是所述原始音频数据中的第一个数据包时,可以根据所述数据包中的所述ADTS在取样器的起始位置以及数据包的长度,调整所述数据包的后一个数据包在取样器的偏移位置。
在一个实施例中,如图3所示,所述方法还可以包括:
301:在所述流媒体文件出现异常的情况下,从异常的所述流媒体文件中获取媒体数据包。
其中,流媒体文件包括若干个容器(Box),例如ftyp、mdat、moov。
ftyp类型的容器是整个流媒体文件的第一个容器,用于确定流媒体文件的视频封装类型(比如,MP4)和/或音频封装类型(比如,AAC类型)。
mdat类型的容器用于保存媒体数据,例如,视频数据和音频数据等。
moov类型的容器,用于存放媒体数据的元数据(metadata)信息。moov类型的容器包含文件索引信息,属于集装容器。moov类型的容器结构中包含:tts(time to samplebox,样本时间包)、stsc(sample to chunk box,样本块包)、stsz(sample size box,样本大小包)、stco(chunk offset box,块偏移量包)、stsd(sample description box,样本描述包)等内容。
当moov类型的容器中的数据缺失或异常时,可能导致无法正常读取流媒体文件中的媒体数据。
此外,流媒体文件还可以包括free类型的Box。free类型的Box的数据通常为全0,其作用相当于占位符。
其中,流媒体文件中的至少一个流数据可以包括:AAC类型的音频流数据,还可以包括:其他类型流数据,所述其他类型流数据包括但不限于:视频流数据、缩略图流数据和/或字幕流数据。
视频流,可以由H.264构成,每个视频流由NALU(Network Abstract Layer Unit,网络抽象层单元)构成。
缩略图流可以为:MJPEG(Motion Joint Photographic Experts Group,技能即运动静止图画(或逐帧)紧缩技能)。缩略图流是一种视频压缩格式,一个流媒体文件中一般只存在一张缩略图。
在一些示例中,所述流媒体文件出现异常可以包括:所述流媒体文件中的moov信息出现异常,例如,所述流媒体文件中的moov信息缺失或异常。
在一些示例中,上述步骤301中,可以通过读取流媒体文件中的指定数据位以获取媒体数据包,其中,流媒体文件中的32位至35位或者44位至47位为mdat(Media Data Box,媒体数据包)的十六进制数。
302:对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息。
本实施例中,可以从媒体数据包的起始位置开始,依次对所述媒体数据包中的每个流数据进行解析,得到每一个流数据的解析信息,直至完成所有流数据的解析。
在一些示例中,在媒体数据包中包含音频流数据以及其他类型流数据的情况下,可以分别对音频流数据和其他类型流数据进行解析,得到音频流数据的解析信息以及其他类型流数据的解析信息。
在一些示例中,所述音频流数据的解析信息可以包括采样率、通道数以及数据长度。
本实施例中,对流媒体文件包含的音频流数据中的ADTS头信息进行解析,可以得到通道数、采样率、数据长度大小等信息。
在一些示例中,流媒体文件中包含的其他类型流数据为视频流数据,针对视频流中的每一个流数据,如果该流数据的类型是SPS(sequence parameter set,序列参数集)类型,则可以解析出视频的帧率、宽高等信息。
303:根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息。
在一些示例中,样本位置信息可以包括样本起始位置;在另一些示例中,样本位置信息可以包括样本起始位置和样本结束位置。
本实施例中,可以通过解析流媒体文件中的所有流数据,得到每个流数据的流类型、长度以及各个流数据处于所有流数据中的排序(例如,出现位置或出现时间的顺序),进而根据每个流数据的流类型、长度以及各个流数据处于所有流数据中的排序,获得每个流数据在流媒体文件中的样本位置信息。
304:根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的moov模板,生成moov信息。
这里,所述预设的moov模板,可以是基于正常的流媒体文件中的moov类型的容器生成的。
在一些示例中,可以按照多媒体文件格式的协议规定,根据各所述流数据的解析信息以及各所述流数据在所述流媒体文件中的样本位置信息,更新正常的moov模板中的内容,并根据更新后的moov模板中的内容,生成moov信息。
305:将所述moov信息更新到异常的所述流媒体文件中,得到修复后的所述流媒体文件。
在一些示例中,可以在异常的流媒体文件中存在异常的moov信息的情况下,将异常的moov信息替换成步骤304生成的所述moov信息;或者,可以在异常的流媒体文件中不存在moov信息的情况下,将生成的所述moov信息添加到所述流媒体文件中的尾部。
在一个实施例中,如图4所示,上述步骤302中,所述对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息,可以包括:
401:对所述媒体数据包中的AAC类型的音频流数据进行ADTS头信息的解析,得到所述音频流数据的解析信息;
402:当所述媒体数据包中包含视频流数据时,对所述视频流数据进行解析,获得所述视频流数据的解析信息;
403:当所述媒体数据包中包含字幕流数据时,对所述字幕流数据进行解析,获得所述字幕流数据的解析信息;
404:当所述媒体数据包中包含缩略图流数据时,对所述缩略图流数据进行解析,获得所述缩略图流数据的解析信息。
需要说明的是,可以根据媒体数据包中的各个流数据的出现位置或出现时间的顺序,依次对各个流数据解析得到流数据的类型,并根据流数据的类型,对应执行步骤401、402、403和步骤404。
例如,若媒体数据包中的第一个流数据为音频流数据,第二个流数据为视频流数据,第三个流数据为字幕流数据、第四个流数据为缩略图流数据,则依次执行步骤401、402、403、404。
又例如,若媒体数据包中的第一个流数据为视频流数据,第二个流数据为音频流数据,第三个流数据为缩略图流数据,第四个流数据为字幕流数据,则依次执行步骤402、401、404、403。
在一些示例中,在当前流数据为AAC类型的裸流数据时,判断ADTS的固定头信息,并将其中的数据解析出来。ADTS头信息的解析信息可以包括:采样率、通道数以及数据长度。通过解析当前流数据的长度,记录该当前流数据在流媒体文件中的起始位置。
本实施例中,由于音频流数据中包含ADTS头信息,因此可以根据ADTS头信息确定到该音频流数据的标识起始位,这样通过解析ADTS头信息,可以获取到音频帧数据的采样率、通道数以及数据长度。
在一些示例中,对所述视频流数据进行解析,可以包括:
如果当前流数据的起始数据是h264起始标志,则解析当前流数据中的h264类型,并解析该流数据长度,记录当前流数据的起始位置。
具体地,该过程可以包括:
如果当前流数据的起始数据是h264起始标志,则确定该当前流数据是视频流;
读取NALU标志以获取到视频流,解析NALU中的类型信息,并确定当前流数据的帧类型是否为:SPS(sequence parameter set,序列参数集)、PPS(picture parameter set,图像参数集)、不分区、非关键帧或关键帧图像;
当所述当前流数据的帧类型为SPS数据类型时,对SPS中的信息采用哥伦布熵编码,计算出视频的宽高、帧率等信息,并记录该视频流在文件中的起始位置。
当所述当前流数据的帧类型为PPS数据类型时,记录PPS数据;
当所述当前流数据的帧类型为关键流数据时,记录该流数据是第几个视频流;
如果当前起始数据不是h264起始标志,则该流不是视频流。
在一些示例中,字幕流数据的解析可以是:通过自定义的数据可定长和加特定字段,解析特定字段和长度后,记录该字幕流在文件中的起始位置。
对所述字幕流数据进行解析,可以包括:
如果当前流数据的起始数据是字幕流的起始标志,则确定当前流数据是字幕流,将数据位往后偏移一位读取字幕流的数据长度;
如果当前流数据的长度满足字幕固定长度,则返回字幕流的数据长度,并记录该字幕流在流媒体文件中的起始位置,否则返回错误,以指示该数据不是字幕流。
在一些示例中,对所述缩略图流数据进行解析,可以包括:
判断MJPEG的SOI(start of image,标记码开头)标志,解析其数据长度,并记录该缩略图流在流媒体文件中的起始位置。
示例性地,如果当前数据位满足SOI(start of image,标记码开头)标志,则解析该流的数据长度,记录起始位置、流长度,否则返回错误,指示该数据不是缩略图流。
本实施例中,通过对所述媒体数据包中的各类型流数据进行解析,这样可以利用解析结果,生成moov信息,从而补齐流媒体文件中损坏的内容,最终修复成一个完整的流媒体文件。
在一个实施例中,如图5所示,上述步骤303中,所述根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息,包括:
501:根据各所述流数据的解析信息,确定各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序;
502:根据各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序,获取各所述流数据在所述流媒体文件中的样本位置信息。
本实施例中,针对流媒体文件中的音频流数据进行AAC类型的检测处理,确定所述AAC类型的音频流数据;并对AAC类型的音频流数据的ADTS头信息进行解析,可以获得音频流的通道数、采样率以及流数据的长度等信息。
针对流媒体文件中的视频流数据进行解析,可以获得该视频流数据的长度大小、该视频流数据对应的帧类型(如,关键帧、非关键帧、sps或pps)以及该视频流数据的排序(即,该视频流数据是第几个流数据)。
在得到每个流数据的长度大小以及每个流数据在所述流媒体文件中的排序后,可以根据每个流数据的长度大小和排序,获得每个流数据在流媒体文件中的样本位置信息。
例如,流媒体文件的开始位置(例如,开始位置标记为0)处的流数据为音频数据,解析音频数据的ADTS头信息,计算出音频流的长度大小为257字节,则0~256的位置范围即为该音频流在流媒体文件中的位置范围,那么该音频流的开始位置为0,结尾位置为256。若下一组数据是视频流数据,解析得到该视频流的长度大小为2321字节,则257~2577的位置范围为该视频流在流媒体文件中的位置范围,那么该视频流的开始位置为257,结束位置为2577,以此类推,可以解析得到每一个流数据对应的位置范围。
在一个实施例中,如图6所示,上述步骤304中,所述根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的moov模板,生成moov信息,可以包括:
601:根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息,更新所述moov模板中的内容;
602:根据更新后的所述moov模板中的内容,生成所述moov信息;其中,所述moov模板中的内容包括:轨道的头部包、媒体信息的头部包、样本时间包、样本块包、样本大小包、块偏移量包和样本描述包。
轨道的头部包(track header box,tkhd),是 track(该容器用于存放相关媒体流的内容)的子一级容器的内容,可用于描述特定track的相关属性和内容。
媒体信息的头部包(media header box,mdhd),用于描述特定媒体(media)的相关属性和内容。
样本时间包(time to sample box,stts),用于存储refSampleDelta(即,相邻两帧间隔的时间)。
样本块包(sample to chunk box,stsc),用于定义一个流媒体文件中数据块(chunk)的数量,每个数据块有样本(sample)的数量。
样本大小包(sample size box,stsz),用于存储每个sample的大小。
块偏移量包(chunk offset box,stco),用于确定每个sample在mdat中的具体位置。
样本描述包(sample description box,stsd),用于存储音频相关的信息,比如采样率、通道数等。
在一些示例中,所述根据更新后的moov模板中的内容,生成moov信息,可以包括:
根据更新后的moov模板中的内容,分别在moov容器及其所包含的各子容器内写入相应内容,得到moov信息。
接下来,结合具体实施例对本公开提供的技术方案做进一步说明。
本公开实施例提供一种音频数据处理方法,参照图7所示,该方法可以包括:
S11:针对包含ADTS头信息的原始音频数据,对原始音频数据跳过比特流滤波器的处理。
如此,可以使原始音频数据是包含ADTS头信息的音频数据,即,不执行针对ADTS头信息的剔除处理。
S12:对原始音频数据跳过针对AAC编码格式的检测判断处理。
S13:移动音频流在取样器中的偏移位置,并更新原始音频数据中的数据包的数据量大小。
S14:对原始音频数据执行封装流程,形成流媒体文件。
在一些示例中,可以基于FFmpeg等多媒体框架实现上述步骤S11至步骤S14。
在一些示例中,对原始音频数据跳过比特流滤波器的处理,可以包括:
如果数据包的编解码类型是AAC类型,按照PCM(Pulse Code Modulation,脉冲调制编码)类型的数据包的写入方式写入AAC类型的数据包,否则,对数据包经过比特流滤波器处理后,再执行写数据包的后续操作。
在一些示例中,所述方法还可以包括:
如果数据包的编解码类型不是 AAC类型,当数据包的数据量大小大于预设值,且包数据包含ADTS头固定信息,确定该数据包是否为第一个数据包;
当所述数据包为第一个数据包,返回错误信息,所述错误信息,用于指示不允许进行数据包的写入操作。
在一些示例中,移动音频数据在取样器中的偏移位置,并更新原始结构中的数据包的数据量大小,可以包括:
如果数据包为AAC类型的音频数据包,则允许将数据包写入数据块中;其中,数据包的数据量大小为:AAC类型的音频数据的数据量大小减去ADTS头信息位数,即数据包的数据量大小虚拟为:裸音频数据的数据量大小 。
将数据包的数据量大小更新为:裸音频数据的数据量大小与ADTS头信息的数据量大小之和。
移动音频数据在取样器中的偏移位置为:裸音频数据包的偏移位置加上ADTS头信息的数据量大小。
在一些示例中,如果数据包不是AAC类型的音频数据包,则直接执行进行数据包的写入操作。
本实施例提供的音频数据处理方法,能够解决AAC类型的封装无法获取音频数据的大小及相关的标志起始位的问题,在封装AAC类型的音频数据上,能够采用在不增加其它lib库的情况下,将ADTS头信息数据封装到流媒体文件中,使流媒体文件可以对解封装后的裸音频数据进行直接播放,可以实时播放,并且可以解析每一帧音频数据的具体长度。
本实施例中,在流媒体文件发生损坏的情况下,可以针对损坏的流媒体文件,进行数据剥离、重组,并补齐流媒体文件损坏的部分,能够最终修复成一个完整的流媒体文件。
其中,可以针对损坏的流媒体文件中不存在的moov信息,重新计算得到新moov信息,并补全到损坏的流媒体文件中。
如图8所示,针对损坏的流媒体文件,可以执行以下操作步骤:
S21:解析文件头信息,获取文件类型。
可以通过读取损坏的流媒体文件中的指定数据位以获取文件类型,其中,流媒体文件中的32位至35位或者44位至47位为mdat(Media Data Box,媒体数据包)的十六进制数。
S22:解析媒体数据包中的各流数据信息。
可以从音视频数据中解析出视频的帧率、宽高度、音频的通道数、采样率等信息。
对流媒体文件进行解析流类型和相关信息,流类型包括:视频流、音频流、缩略图流、字幕流等。
视频流的编码格式可以是h264,每个视频流由NALU(Network Abstract LayerUnit,网络抽象层单元)构成。
在一些示例中,视频流的解析过程,可以包括:
读取NALU标志获取到视频流;解析NALU中的类型信息以确定当前帧类型是否为SPS(sequence parameter set,序列参数集)、PPS(picture parameter set,图像参数集)、不分区、非关键帧、或者关键帧图像;
根据SPS(sequence parameter se,序列参数集)中的信息,采用哥伦布熵编码,计算出视频的宽高、帧率等信息,并记录该视频流在文件中的起始位置。
示例性地,如果当前起始数据是h264起始标志,则解析流中的h264类型,并解析该流的长度,记录该流的起始位置。
如果帧类型为SPS(sequence parameter set,序列参数集)类型,则使用哥伦布熵编码推导出视频的宽高、帧率等信息,并记录SPS数据;
如果帧类型为PPS(picture parameter set,图像参数集)数据类型,则记录PPS数据;
如果帧类型为关键流数据,则记录该流数据是第几个视频流;
如果当前起始数据不是h264起始标志,则确定该流不是视频流。
在一些示例中,音频流的解析过程,可以包括:
当为PCM(Pulse-Code Modulation,脉冲调制编码)的裸流数据时,可根据跳固定长度倍数字节后的数据是否为视频流或字幕流的方法来确定该音频流在文件中的起始位置。
当为AAC(Advanced Audio Coding,高级音频编码)的裸流数据时,需要判断ADTS的固定头信息部分,再将其中的数据解析出来,解析信息可以包括:采样率、通道数、数据长度,并记录该音频流在文件中的起始位置。
具体地,音频流的解析过程,可以包括:
如果当前音频封装类型为AAC类型,则确定当前起始数据是否为ADTS固定头信息;
如果当前起始数据为ADTS固定头信息,则解析ADTS头信息得到采样率、通道数等信息,解析该流长度,记录流起始位置。
如果当前PCM(Pulse-Code Modulation,脉冲调制编码)数据固定长度的整数n倍之后的数据为字幕流或者视频流的数据,则解析该流长度为固定长度*n,并记录流起始位置。
在一些示例中,字幕流的解析过程,可以包括:字幕流数据主要是通过自定义的数据可定长和加特定字段,解析特定字段和长度后,记录该字幕流在文件中的起始位置。
具体地,如果当前的起始数据是字幕流的起始标志,则确定该数据是字幕流,将数据位往后偏移一位读取字幕流的数据长度;如果数据长度满足字幕固定长度,则返回字幕流的长度,并记录在文件中的起始位置,否则返回错误,指示该数据不是字幕流。
缩略图流可以是MJPEG(Motion Joint Photographic Experts Group,技能即运动静止图画(或逐帧)紧缩技能),是一种视频压缩格式,一个文件中只存在一张缩略图。
在一些示例中,缩略图流的解析过程,可以包括:
判断MJPEG的SOI(start of image,标记码开头)标志,并解析其长度并记录该缩略图流在文件中的起始位置。
具体地,如果当前数据位满足SOI(start of image,标记码开头)标志,则解析该流的长度,记录起始位置、流长度,否则返回错误,指示该数据不是缩略图流。
S23:根据解析信息和moov模板,计算moov信息。
这里,可以根据mdat(Media Data Box,媒体数据包)中的音视频等流数据的解析信息和预设moov模板,重新计算moov容器内的信息,生成新的moov信息。
moov容器,用于记录流媒体文件中的音视频等流信息及各流在流媒体文件中的样本位置信息。
根据步骤S22中解析各流得到的信息,重新计算,更新正常的moov模板中的tkhd(track header box,轨道的头部包)、mdhd(media header box,媒体信息的头部包)、stts(time to sample box,样本时间包)、stsc(sample to chunk box,样本块包)、stsz(sample size box,样本大小包)、stco(chunk offset box,块偏移量包)、stsd(sampledescription box,样本描述包)等内容,得到新的moov信息。
S24:更新moov信息到流媒体文件中。
将新生成的moov信息放到损坏的流媒体文件中的尾部。
例如,如图9所示,正常的流媒体文件中包含ftyp、free、mdat、moov,异常的流媒体文件中包含ftyp、free、mdat,缺少moov,导致流媒体文件无法正常播放。通过执行上述步骤S21至步骤S24,对异常的流媒体文件中的mdat进行解析;根据解析结果,重新计算,更新正常的moov模板得到新的moov信息,并将新的moov信息补全到损坏的流媒体文件中,从而修复成一个完整的流媒体文件。
本实施例中,针对异常流媒体文件的修复,可以支持所有类型的音视频封装文件的修复,避免了不同类型的流媒体文件采用不同的技术;而且,只要流媒体文件存储介质不损坏,就能够把已存的数据全部修复出来,使损坏的流媒体文件修复成一个完整的流媒体文件,使得流媒体文件能够正常播放;另外,也能够使车祸、爆炸等关键监控资料得以保存。
图10示出了本公开实施例提供的一种音频数据处理装置的结构示意图,如图10所示,所述音频数据处理装置100包括:
获取模块110,用于获取高级音频编码AAC类型的原始音频数据,其中,所述原始音频数据中的数据包包含:ADTS头信息和音频帧数据;
第一处理模块120,用于在将所述数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,所述第一长度为:所述数据包中的音频帧数据的长度;
第二处理模块130,用于针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;所述第二长度为:所述数据包中的ADTS头信息的长度与所述第一长度之和;
封装模块140,用于根据所述数据包的偏移位置以及所述数据包的第二长度,将跳过所述预设处理的所述数据包封装到流媒体文件中。
在一个实施例中,所述第一处理模块120,用于:
跳过针对所述数据包中的ADTS头信息的剔除处理;
在跳过针对所述ADTS头信息的剔除处理后,跳过针对所述数据包进行的所述AAC类型的检测处理。
在一个实施例中,所述第一处理模块120,用于:
跳过使用比特流滤波器对所述数据包的处理,其中,所述使用比特流滤波器对所述数据包的处理包括:使用所述比特流滤波器对所述数据包中的ADTS头信息的剔除处理。
在一个实施例中,所述第二处理模块130,用于:
根据跳过所述预设处理的所述数据包的偏移位置以及所述数据包的第二长度,调整所述数据包的后一个数据包的偏移位置。
在一个实施例中,如图11所示,所述装置还包括修复模块210,所述修复模块210,包括:
第一获取单元211,用于在所述流媒体文件出现异常的情况下,从异常的所述流媒体文件中获取媒体数据包;
解析单元212,用于对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息;
第二获取单元213,用于根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息;
生成单元214,用于根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的moov模板,生成moov信息;
更新单元215,用于将所述moov信息更新到异常的所述流媒体文件中,得到修复后的所述流媒体文件。
在一个实施例中,所述解析单元212用于:
对所述媒体数据包中的AAC类型的音频流数据进行ADTS头信息的解析,得到所述音频流数据的解析信息;
当所述媒体数据包中包含视频流数据时,对所述视频流数据进行解析,获得所述视频流数据的解析信息;
当所述媒体数据包中包含字幕流数据时,对所述字幕流数据进行解析,获得所述字幕流数据的解析信息;
当所述媒体数据包中包含缩略图流数据时,对所述缩略图流数据进行解析,获得所述缩略图流数据的解析信息。
在一个实施例中,所述第二获取单元213用于:
根据各所述流数据的解析信息,确定各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序;
根据各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序,获取各所述流数据在所述流媒体文件中的样本位置信息。
在一个实施例中,所述生成单元214用于:
根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息,更新所述moov模板中的内容;
根据更新后的所述moov模板中的内容,生成所述moov信息;
其中,所述moov模板中的内容包括:轨道的头部包、媒体信息的头部包、样本时间包、样本块包、样本大小包、块偏移量包和样本描述包。
关于上述实施例中的音频数据处理装置,其中各个模块执行操作的具体方式已经在音频数据处理方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图12是根据一示例性实施例示出的一种电子设备800的框图。例如,电子设备800可以是移动电话,计算机,平板设备,个人数字助理等支持音频数据处理功能的设备。
参照图12,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)接口812,传感器组件814,以及通信组件816。
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在电子设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到电子设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800的一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如WiFi,4G或5G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执行以完成上述音频数据处理方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其它顺序或者同时进行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (18)

1.一种音频数据处理方法,其特征在于,所述方法包括:
获取高级音频编码AAC类型的原始音频数据,其中,所述原始音频数据中的数据包包含:音频数据传输流ADTS头信息和音频帧数据;
在将所述数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,所述第一长度为:所述数据包中的音频帧数据的长度;所述预设处理包括:剔除所述数据包中包含的ADTS头信息,和/或在检测到所述数据包中包含ADTS头信息的情况下,不允许执行针对所述数据包的封装;
针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;所述第二长度为:所述数据包中的ADTS头信息的长度与所述第一长度之和;
根据所述数据包的偏移位置以及所述数据包的第二长度,将跳过所述预设处理的所述数据包封装到流媒体文件中。
2.根据权利要求1所述的方法,其特征在于,所述跳过针对所述数据包的预设处理,包括:
跳过针对所述数据包中的ADTS头信息的剔除处理;
在跳过针对所述ADTS头信息的剔除处理后,跳过针对所述数据包进行的所述AAC类型的检测处理。
3.根据权利要求2所述的方法,其特征在于,所述跳过针对所述数据包中的ADTS头信息的剔除处理,包括:
跳过使用比特流滤波器对所述数据包的处理,其中,所述使用比特流滤波器对所述数据包的处理包括:使用所述比特流滤波器对所述数据包中的ADTS头信息的剔除处理。
4.根据权利要求1所述的方法,其特征在于,所述根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置,包括:
根据跳过所述预设处理的所述数据包的偏移位置以及所述数据包的第二长度,调整所述数据包的后一个数据包的偏移位置。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在所述流媒体文件出现异常的情况下,从异常的所述流媒体文件中获取媒体数据包;
对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息;
根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息;
根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的元数据容器moov模板,生成moov信息;
将所述moov信息更新到异常的所述流媒体文件中,得到修复后的所述流媒体文件。
6.根据权利要求5所述的方法,其特征在于,所述对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息,包括:
对所述媒体数据包中的AAC类型的音频流数据进行ADTS头信息的解析,得到所述音频流数据的解析信息;
当所述媒体数据包中包含视频流数据时,对所述视频流数据进行解析,获得所述视频流数据的解析信息;
当所述媒体数据包中包含字幕流数据时,对所述字幕流数据进行解析,获得所述字幕流数据的解析信息;
当所述媒体数据包中包含缩略图流数据时,对所述缩略图流数据进行解析,获得所述缩略图流数据的解析信息。
7.根据权利要求5所述的方法,其特征在于,所述根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息,包括:
根据各所述流数据的解析信息,确定各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序;
根据各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序,获取各所述流数据在所述流媒体文件中的样本位置信息。
8.根据权利要求5所述的方法,其特征在于,所述根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的元数据容器moov模板,生成moov信息,包括:
根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息,更新所述moov模板中的内容;
根据更新后的所述moov模板中的内容,生成所述moov信息;
其中,所述moov模板中的内容包括:轨道的头部包、媒体信息的头部包、样本时间包、样本块包、样本大小包、块偏移量包和样本描述包。
9.一种音频数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取高级音频编码AAC类型的原始音频数据,其中,所述原始音频数据中的数据包包含:音频数据传输流ADTS头信息和音频帧数据;
第一处理模块,用于在将所述数据包的长度记录为第一长度的情况下,跳过针对所述数据包的预设处理,其中,所述第一长度为:所述数据包中的音频帧数据的长度;所述预设处理包括:剔除所述数据包中包含的ADTS头信息,和/或在检测到所述数据包中包含ADTS头信息的情况下,不允许执行针对所述数据包的封装;
第二处理模块,用于针对跳过所述预设处理的所述数据包,将所述数据包的第一长度更新为第二长度,并根据所述数据包的偏移位置调整所述数据包的后一个数据包的偏移位置;所述第二长度为:所述数据包中的ADTS头信息的长度与所述第一长度之和;
封装模块,用于根据所述数据包的偏移位置以及所述数据包的第二长度,将跳过所述预设处理的所述数据包封装到流媒体文件中。
10.根据权利要求9所述的装置,其特征在于,所述第一处理模块,用于:
跳过针对所述数据包中的ADTS头信息的剔除处理;
在跳过针对所述ADTS头信息的剔除处理后,跳过针对所述数据包进行的所述AAC类型的检测处理。
11.根据权利要求10所述的装置,其特征在于,所述第一处理模块,用于:
跳过使用比特流滤波器对所述数据包的处理,其中,所述使用比特流滤波器对所述数据包的处理包括:使用所述比特流滤波器对所述数据包中的ADTS头信息的剔除处理。
12.根据权利要求9所述的装置,其特征在于,所述第二处理模块,用于:
根据跳过所述预设处理的所述数据包的偏移位置以及所述数据包的第二长度,调整所述数据包的后一个数据包的偏移位置。
13.根据权利要求9至12任一项所述的装置,其特征在于,所述装置还包括修复模块,所述修复模块,包括:
第一获取单元,用于在所述流媒体文件出现异常的情况下,从异常的所述流媒体文件中获取媒体数据包;
解析单元,用于对所述媒体数据包中的所有流数据进行解析,得到各所述流数据的解析信息;
第二获取单元,用于根据各所述流数据的解析信息,获取各所述流数据在所述流媒体文件中的样本位置信息;
生成单元,用于根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息以及预设的moov模板,生成moov信息;
更新单元,用于将所述moov信息更新到异常的所述流媒体文件中,得到修复后的所述流媒体文件。
14.根据权利要求13所述的装置,其特征在于,所述解析单元用于:
对所述媒体数据包中的AAC类型的音频流数据进行ADTS头信息的解析,得到所述音频流数据的解析信息;
当所述媒体数据包中包含视频流数据时,对所述视频流数据进行解析,获得所述视频流数据的解析信息;
当所述媒体数据包中包含字幕流数据时,对所述字幕流数据进行解析,获得所述字幕流数据的解析信息;
当所述媒体数据包中包含缩略图流数据时,对所述缩略图流数据进行解析,获得所述缩略图流数据的解析信息。
15.根据权利要求13所述的装置,其特征在于,所述第二获取单元用于:
根据各所述流数据的解析信息,确定各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序;
根据各所述流数据的数据长度以及各所述流数据在所述流媒体文件中的排序,获取各所述流数据在所述流媒体文件中的样本位置信息。
16.根据权利要求13所述的装置,其特征在于,所述生成单元用于:
根据各所述流数据的解析信息、各所述流数据在所述流媒体文件中的样本位置信息,更新所述moov模板中的内容;
根据更新后的所述moov模板中的内容,生成所述moov信息;
其中,所述moov模板中的内容包括:轨道的头部包、媒体信息的头部包、样本时间包、样本块包、样本大小包、块偏移量包和样本描述包。
17.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至8任一项所述的音频数据处理方法。
18.一种非临时性计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至8任一项所述的音频数据处理方法。
CN202310397945.0A 2023-04-14 2023-04-14 音频数据处理方法、装置、电子设备和存储介质 Active CN116110410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310397945.0A CN116110410B (zh) 2023-04-14 2023-04-14 音频数据处理方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310397945.0A CN116110410B (zh) 2023-04-14 2023-04-14 音频数据处理方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN116110410A CN116110410A (zh) 2023-05-12
CN116110410B true CN116110410B (zh) 2023-06-30

Family

ID=86267606

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310397945.0A Active CN116110410B (zh) 2023-04-14 2023-04-14 音频数据处理方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116110410B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006050387A (ja) * 2004-08-06 2006-02-16 Matsushita Electric Ind Co Ltd データ再生方法、およびデータ再生装置
CN112562638A (zh) * 2020-11-26 2021-03-26 北京达佳互联信息技术有限公司 语音预览的方法、装置及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543230B2 (en) * 2008-05-30 2013-09-24 Nokia Corporation Optimizing seek functionality in media content
CN103037211B (zh) * 2011-09-29 2017-04-19 展讯通信(上海)有限公司 流媒体文件的解码处理方法与装置、播放设备
CN110545490B (zh) * 2018-05-29 2021-03-16 北京字节跳动网络技术有限公司 媒体文件转换方法、装置及存储介质
US20200013426A1 (en) * 2018-07-03 2020-01-09 Qualcomm Incorporated Synchronizing enhanced audio transports with backward compatible audio transports

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006050387A (ja) * 2004-08-06 2006-02-16 Matsushita Electric Ind Co Ltd データ再生方法、およびデータ再生装置
CN112562638A (zh) * 2020-11-26 2021-03-26 北京达佳互联信息技术有限公司 语音预览的方法、装置及电子设备

Also Published As

Publication number Publication date
CN116110410A (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
EP3523982B1 (en) Systems and methods for signaling missing or corrupted video data
JP4481889B2 (ja) データ記録装置及びその方法、プログラム、記録媒体
KR101107815B1 (ko) 멀티미디어 컨테이너 파일의 수신 힌트 트랙으로의 미디어 스트림 기록 방법 및 장치, 컴퓨터 판독가능 매체
KR101885852B1 (ko) 컨텐트 전송 및 수신 방법 및 장치
CN109348252B (zh) 视频播放方法、视频传输方法、装置、设备及存储介质
AU2018205481B2 (en) Improved restricted scheme design for video
JP5587779B2 (ja) メディアデータコンテナとメタデータコンテナとを有するファイルを格納し読み取るための装置及び方法
JP2005229587A (ja) 多重化方式変換装置
TWI501609B (zh) 用以儲存多重來源多媒體呈現內容之系統與方法
US10009643B2 (en) Apparatus and method for processing media content
WO2017092434A1 (zh) 音视频实时传输方法及装置、音视频实时播放方法及装置
CN111669645B (zh) 视频的播放方法、装置、电子设备及存储介质
EP2974323A1 (en) Method for decreasing the bit rate needed to transmit videos over a network by dropping video frames
CN109040818B (zh) 直播时的音视频同步方法、存储介质、电子设备及系统
CN116110410B (zh) 音频数据处理方法、装置、电子设备和存储介质
US20150189365A1 (en) Method and apparatus for generating a recording index
KR20080064399A (ko) Mp4 역다중화 장치 및 그의 동작 방법
KR20140070896A (ko) 비디오 스트리밍 방법 및 그 전자 장치
CN110753259A (zh) 视频数据的处理方法、装置、电子设备及计算机可读介质
CN109743627B (zh) 基于avs+视频编码数字电影包的播放方法
CN102723104A (zh) 基于mp4文件封装格式的多媒体录播系统
CN109492408B (zh) 一种加密数据的方法及装置
US10484725B2 (en) Information processing apparatus and information processing method for reproducing media based on edit file
WO2017092435A1 (zh) 音视频实时传输方法及装置、传输流打包方法及复用器
CN102231804B (zh) 一种支持ps流媒体文件的容错方法

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
GR01 Patent grant
GR01 Patent grant