一种音频数据处理的方法、装置、电子设备及存储介质转让专利

申请号 : CN202010624224.5

文献号 : CN111508456B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄裔

申请人 : 北京美摄网络科技有限公司

摘要 :

本发明公开了一种音频数据处理的方法、装置、电子设备及存储介质。所述方法包括:首先,服务器端获取将原始音频数据转换为格式统一的音频数据,并根据预设的每秒音频组数量对音频数据进行分组,获取每个音频组的最大值和最小值,再根据所有音频组的最大值和最小值,生成新的波形数据,并将新的波形数据发送给Web端;然后,Web端对新的波形数据进行归一化处理,得到多组展示候选数据对,再根据时间线缩放比例,从多组展示候选数据对中获取多组展示数据对,接着根据多组展示数据对,绘制音频波形并展示绘制的音频波形。采用本发明技术方案可以在提高显示波形的实时性同时,降低网络带宽的使用。

权利要求 :

1.一种生成音频波形的方法,其特征在于,所述方法包括:在对待处理音频文件转码的同时,生成多个原始音频数据;

服务器端获取多个所述原始音频数据,并将所述原始音频数据转换为格式统一的音频数据;

所述服务器端根据预设的每秒音频组数量,对所述音频数据进行分组,得到多个音频组,每个所述音频组包含多个音频数据;

针对所述每个音频组,所述服务器端从所述多个音频数据中,获取所述每个音频组的最大值和最小值;

所述服务器端根据多个音频组对应的多组所述最大值和最小值,生成新的波形数据;

web端获取所述新的波形数据;

所述web端对所述新的波形数据中的多组所述最大值和最小值进行归一化处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值;

所述web端根据时间线缩放比例,从多组所述展示候选数据对中获取多组展示数据对;

所述web端根据所述多组展示数据对,绘制音频波形,并展示所述绘制的音频波形。

2.根据权利要求1所述方法,其特征在于,所述服务器端从所述多个音频数据中,获取所述每个音频组的最大值和最小值,包括:针对所述每个音频组,所述服务器端对所述每个音频组中的各个音频数据进行遍历,得到每个音频组中的初始最大值和初始最小值;

所述服务器端将每个所述初始最大值和初始最小值,变换成8比特的最大值和最小值;

所述服务器端根据所述8比特的最大值和最小值,得到所述每个音频组的最大值和最小值。

3.根据权利要求1所述的方法,其特征在于,所述每个音频组的最大值和最小值都携带有声道种类的类别,所述生成新的波形数据,包括:所述服务器端根据所述类别,对多组所述最大值和最小值进行分类存储,得到多个不同种类声道的子波形数据;

所述服务器端根据每个所述子波形数据,生成一个所述新的波形数据。

4.根据权利要求1所述方法,其特征在于,所述新的波形数据携带有下载接口和下载标签,在所述web端获取所述新的波形数据之前,所述方法还包括:所述服务器端将所述下载接口和所述下载标签发送给所述web端。

5.根据权利要求4所述方法,其特征在于,所述web端包括FS和IndexDB,所述web端获取所述新的波形数据,包括:所述web端根据所述下载标签检测所述FS中,是否存储有所述新的波形数据;

若检测到所述FS中存储有所述新的波形数据,则从所述FS中获取所述新的波形数据;

若检测到所述FS中未存储有所述新的波形数据,则检测所述IndexDB中,是否存储有所述新的波形数据;

若检测到所述IndexDB存储有所述新的波形数据,则将所述IndexDB中的所述新的波形数据读取到所述FS中,并从所述FS中获取所述新的波形数据;

若检测到所述IndexDB未存储有所述新的波形数据,则通过所述下载接口,从所述服务器端获取所述新的波形数据;

其中,所述FS是指:一种对数据资源进行二级临时缓存的存储空间,其中存储的数据依靠操作系统提供的文件系统进行存储;

所述IndexDB是指:一种数据库类型的永久存储的存储空间,用于对数据资源进行永久存储。

6.根据权利要求5所述方法,其特征在于,所述通过所述下载接口,从所述服务器端获取所述新的波形数据,包括:所述web端通过所述下载接口,从所述服务器端将所述新的波形数据下载至所述FS中;

所述web端从所述FS中,获取所述新的波形数据;和所述FS将所述新的波形数据存储至所述IndexDB中。

7.根据权利要求1所述方法,其特征在于,所述web端根据时间线缩放比例,从多组所述展示候选数据对中获取多组展示数据对,包括:在所述web端的工程线程中,所述web端根据时间线的缩放比例,获取展示的波形数据对的数量;

所述web端根据所述波形数据对的数量,对所述多组展示候选数据对进行数据重采样,得到多组展示数据对;

其中,所述数据重采样至少包括以下一种:

所述web端根据所述波形数据对的数量,对所述多组展示候选数据进行复制,得到多组展示数据对;

所述web端根据所述波形数据对的数量,从所述多组展示候选数据中抽取多组展示数据对。

8.根据权利要求1所述方法,其特征在于,所述web端根据所述多组所述展示数据对,绘制音频波形,包括:所述web端根据每组所述展示数据对中的最大值和最小值,绘制音频波形;

其中,所述绘制方法为:将每组展示数据中的最大值相连绘制曲线,将每组展示数据中的最小值相连绘制曲线,得到音频波形。

9.一种生成音频波形的装置,其特征在于,所述装置包括:生成原始音频数据模块,用于在对待处理音频文件转码的同时,生成多个原始音频数据;

第一获取模块,用于服务器端获取多个所述原始音频数据,并将所述原始音频数据转换为格式统一的音频数据;

分组模块,用于所述服务器端根据预设的每秒音频组数量,对所述音频数据进行分组,得到多个音频组,每个所述音频组包含多个音频数据;

第二获取模块,用于针对所述每个音频组,所述服务器端从所述多个音频数据中,获取所述每个音频组的最大值和最小值;

生成模块,用于所述服务器端根据多个音频组对应的多组所述最大值和最小值,生成新的波形数据;

第三获取模块,用于web端获取所述新生成的波形数据;

处理模块,用于所述web端对所述新的波形数据中的多组所述最大值和最小值进行归一化处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值;

第四获取模块,用于所述web端根据时间线缩放比例,从多组所述展示候选数据对中获取多组展示数据对;

展示模块,用于所述web端根据所述多组展示数据对,绘制音频波形,并展示所述绘制的音频波形。

10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任意一项所述的生成音频波形的方法。

11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至8任意一项所述的生成音频波形的方法。

说明书 :

一种音频数据处理的方法、装置、电子设备及存储介质

技术领域

[0001] 本发明涉及信息处理技术领域,特别是涉及一种音频数据处理的方法、装置、电子设备及存储介质。

背景技术

[0002] 在web端的非线性编辑软件中,传统的音频波形生成方法是:直接使用音频数据解析得到的波形数据,画出波形。该方法,是将所有波形数据都用于波形绘制,因而具有数据详细完整的特点。但是,在实际应用中,音频数据的数据量都很大,若直接将该方法应用于web端的非线性编辑中,存在很大局限性,例如:对于两个小时的音频,浮点数的数据类型,双声道,或者可能是5.1声道时,该音频的数据量则是很大的,数据量过大时,不仅导致网络带宽的要求很高,而且在时间线缩放时,需要对全部波形数据进行重采样再展示,从而导致展示波形时耗时过长。
[0003] 因此,传统的音频波形生成方法,由于数据量过大,因而存在实时性过低、网络要求过高等问题。

发明内容

[0004] 鉴于上述问题,本发明实施例提供一种音频数据处理的方法、装置、电子设备及存储介质,旨在解决相关技术中存在的实时性过低和网络要求过高的问题。
[0005] 为了解决上述技术问题,本发明采取以下方案实现:
[0006] 第一方面,提供了一种音频数据处理的方法,所述方法包括:
[0007] 服务器端获取多个原始音频数据,并将所述原始音频数据转换为格式统一的音频数据;
[0008] 所述服务器端根据预设的每秒音频组数量,对所述音频数据进行分组,得到多个音频组,每个所述音频组包含多个音频数据;
[0009] 针对所述每个音频组,所述服务器端从所述多个音频数据中,获取所述每个音频组的最大值和最小值;
[0010] 所述服务器端根据多个音频组对应的多组所述最大值和最小值,生成新的波形数据;
[0011] 所述web端获取所述新的波形数据;
[0012] 所述web端对所述新的波形数据中的多组所述最大值和最小值进行归一化处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值;
[0013] 所述web端根据时间线缩放比例,从多组所述展示候选数据对中获取多组展示数据对;
[0014] 所述web端根据所述多组展示数据对,绘制音频波形,并展示所述绘制的音频波形。
[0015] 本发明实施例的第二方面,提供了一种音频数据处理的装置,所述装置包括:
[0016] 第一获取模块,用于服务器端获取多个原始音频数据,并将所述原始音频数据转换为格式统一的音频数据;
[0017] 分组模块,用于所述服务器端根据预设的每秒音频组数量,对所述音频数据进行分组,得到多个音频组,每个所述音频组包含多个音频数据;
[0018] 第二获取模块,用于针对所述每个音频组,所述服务器端从所述多个音频数据中,获取所述每个音频组的最大值和最小值;
[0019] 生成模块,用于所述服务器端根据多个音频组对应的多组所述最大值和最小值,生成新的波形数据;
[0020] 第三获取模块,用于所述web端获取所述新生成的波形数据;
[0021] 处理模块,用于所述web端对所述新的波形数据中的多组所述最大值和最小值进行归一化处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值;
[0022] 第四获取模块,用于所述web端根据时间线缩放比例,从多组所述展示候选数据对中获取多组展示数据对;
[0023] 展示模块,用于所述web端根据所述多组展示数据对,绘制音频波形,并展示所述绘制的音频波形。
[0024] 本发明实施例的第三方面,提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的音频数据处理的方法。
[0025] 本发明实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面所述的音频数据处理的方法的步骤。
[0026] 本发明实施例中,首先,服务器端获取将原始音频数据转换为格式统一的音频数据,并根据预设的每秒音频组数量对音频数据进行分组,获取每个音频组的最大值和最小值,再根据所有音频组的最大值和最小值,生成新的波形数据,并将新的波形数据发送给web端;然后,web端对新的波形数据进行归一化处理,得到多组展示候选数据对,再根据时间线缩放比例,从多组展示候选数据对中获取多组展示数据对,接着根据多组展示数据对,绘制音频波形并展示绘制的音频波形。
[0027] 由于本发明实施例中,将整个原始音频数据分成多个音频组,只保留每个音频组中的最大值和最小值,因而经过筛选过后得到的新的波形数据,相较于原始音频数据,具有数据量小的特点。在传输波形数据和展示波形时,小数据量的波形数据,可以大幅度地降低网络带宽的使用和提高显示波形的实时性。
[0028] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

[0029] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1是本发明实施例中的一种音频数据处理的方法的通信环境示意图;
[0031] 图2是本发明实施例中的一种音频数据处理的方法的步骤流程图;
[0032] 图3是本发明实施例中抽取音频M的初始最大值和初始最小值的流程图;
[0033] 图4是本发明实施例中的一种web端获取新的波形数据的方法的步骤流程图;
[0034] 图5是本发明实施例中展示的时间线正常比例时的音频波形的示意图;
[0035] 图6是本发明实施例中展示的时间线放大到最大比例时的音频波形的示意图;
[0036] 图7是本发明实施例中的一种音频数据处理的装置的结构示意图。

具体实施方式

[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 本发明的核心构思为:由服务器端生成小数据量波形数据,web端再进行抽取展示,以达到大幅提高显示波形的实时性和降低网络带宽的使用的目的。基于该技术构思,提出了本发明的音频数据处理的方法,下面,对本发明的音频数据处理的方法进行清楚、完整地描述。
[0039] 图1是本发明实施例中的一种音频数据处理的方法的通信环境示意图。参照图1,本发明的实施环境包括:服务器端100和web端200。其中,服务器端100用于根据原始音频数据,生成新的波形数据,并将新的波形数据发送给web端200;web端200用于接收新的波形数据,并从接收的波形数据中抽取展示波形时所需的展示数据,并根据抽取的展示数据绘制波形和展示波形。
[0040] 服务器端100与web端200通信连接,其中,连接方式可以是有线连接,或者是无线连接。并且,服务器100可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
[0041] 本发明实施例中,FS是指:一种对数据资源进行二级临时缓存的存储空间,其中存储的数据依靠操作系统提供的文件系统进行存储;IndexDB是指:一种数据库类型的永久存储的存储空间,用于对数据资源进行永久存储。
[0042] 本发明实施例第一方面,提供了一种音频数据处理的方法。参照图2,图2是本发明实施例中的一种音频数据处理的方法的步骤流程图。如图2所示,该方法,具体可以包括以下步骤:
[0043] 步骤S11:服务器端获取多个原始音频数据,并将所述原始音频数据转换为格式统一的音频数据。
[0044] 具体实施时,当服务器端接收到音视频数据文件时,服务器端在对音视频数据文件转码的过程中,同时对转码得到的音频文件进行解码,生成音频无压缩数据(即多个原始音频数据),服务器端获取多个原始波形数据。然后,服务器端对多个原始音频数据进行格式转换,统一转换成一种格式的音频数据。其中,格式包括:采样率(采样频率)、位深度(采样位数)以及码率等一系列的参数格式。例如,采样率都转换成44.1kHz的采样率(就是指1个通道1秒钟有44.1k个数据,且该数据的采样精度可以是16位,也可以是24或者其他)。
[0045] 其中,统一转换音频的数据格式,有助于后续的每组波形需要的音频数据的计算,也有助于后面的转换及精度控制。
[0046] 步骤S12:所述服务器端根据预设的每秒音频组数量,对所述音频数据进行分组,得到多个音频组,每个所述音频组包含多个音频数据。
[0047] 本实施例中,根据设置的音频组数量,计算每个音频组里面需要采样的音频数据的数量。
[0048] 具体实施时,设置音频组数量可以理解为:根据实际需求,设置预设音频组的时间段以及该时间段内音频组的数量。例如,设置预设音频组的时间段为1秒钟,然后,设置每一秒中音频组的数量为150组(其中,每一组中含有多个波形数据)。
[0049] 其中,设置的依据可以是:根据web端显示的实际要求进行设置,例如,可以参考web端显示时的比例尺的大小(根据比例尺够不够用,设置每个音频组中的数量)。若设置的数量太多,则导致最后的生成的波形总数据较大,则数据在传输过程(由服务器端传输给web端)中,对网络环境的要求较高,因此,可以根据web端的展示比例尺,进行设置,既满足展示的波形没有间断,又保证总数据较小,降低对网络环境的要求。
[0050] 具体实施时,计算每个音频组里面需要采样的音频数据的数量的计算公式可以如下:
[0051] 每组波形数据需要采样的音频数据的数量=音频采样率/每秒音频组数量。其中,说要说明的是,一个音频组对应一组波形数据。例如,以上述步骤S11中统一的音频采样率为例,格式统一后的音频采样率为44.1kHz,设置每秒音频组数量为150组,则每一组需要采样的音频数据的数量为:44100/150=294个。
[0052] 步骤S13:针对所述每个音频组,所述服务器端从所述多个音频数据中,获取所述每个音频组的最大值和最小值。
[0053] 本实施例中,针对每个音频组,服务器端对每个音频组中的各个音频数据进行遍历,得到每个音频组中的初始最大值和初始最小值,即本领域中的波峰和波谷的对应值;服务器端将每个初始最大值和初始最小值,变换成8比特的最大值和最小值;服务器端根据8比特的最大值和最小值,得到每个音频组的最大值和最小值。
[0054] 具体实施时,可参考上述步骤S12中所举实例为例,对于每秒设置150组音频组的音频M,由于每组中都294个音频数据作为该组的采样数据量,因而对每组中的294个音频数据进行遍历,遍历出每组中的初始最大值和初始最小值。例如,先比较数据A和B两个值,若A>B,则将A设为初始最大值,B设为初始最小值;再比较数据C,将C与A和B进行比较,如C>A,则将C设为初始最大值,若C
[0055] 图3图3是本发明实施例中抽取音频M的初始最大值和初始最小值的流程图。如图3所示,假设上述音频M的总时长为10分钟,其中音频数据的个数为26460000(44.1×1000×60×10),则设置每秒的音频组为150组,10分钟则有90000(150组×60秒×10分钟)组音频组,每组的采样数据量为294个,在抽取初始最大值和初始最小值时,首先,从第1个音频数据开始遍历到第294个数据时,为第一组遍历完成,从这组中抽出初始最大值和初始最小值,然后,再从第295个开始遍历到第588个,为第二组遍历完成,从这组中抽出初始最大值和初始最小值,以此类推,遍历出每一组的初始最大值和初始最小值,最终得到该音频M的
90000对的初始最大值和初始最小值。由此可知,通过本发明的方法,将音频M的26460000个数据,缩减成90000对数据,缩小147倍。
[0056] 具体实施时,为了降低数据量的传输,再将上述抽出的最大值和最小值进行变换到8比特的数据空间存储,得到8比特的最大值和最小值;并将每个音频组的8比特的最大值和最小值,作为每个音频组的最大值和最小值。
[0057] 步骤S14:所述服务器端根据多个音频组对应的多组所述最大值和最小值,生成新的波形数据。
[0058] 本发明中,针对每个音频组,都将最大值与最小值之间的音频数据过滤掉,只获取该音频组中的初始最大值音频数据和初始最小值音频数据,进而获取与每个值对应的8比特的数据存储空间。因而对于整个音频M,相当于将筛选掉该音频M中的部分音频数据,将具有表征该音频M波形的最大值音频数据和最小值音频数据,作为该音频M的新的波形数据。
[0059] 实际中,音频数据包含多种声道,当需要展示某个声道的音频波形时,往往需要在web端中,对存储的所有波形数据(数据量较大)进行重采样,抽取出该声道的待展示波形数据,然后才能进行展示。而该方法中,由于重采样时,数据量较多,直接在web端处理,不仅占用web端的资源,而且会增加编辑者的工作量。
[0060] 因而,在本发明的一种实施方式中,每个音频组的最大值和最小值都携带有声道种类的类别,例如单声道、双声道等,具体实施时,步骤S14中的生成新的波形数据,还可以为:服务器端根据每个音频组的最大值和最小值的类别,对所有获取的最大值和最小值进行分类,得到多个不同种类声道的子波形数据,并针对不同声道的子波形数据进行分类存储,得到不同声道的存储文件;然后,服务器端根据这些不同声道的存储文件,生成一个总的波形数据存储文件,即为新的波形数据的存储文件。单独存储的目的:在web端显示时,若只想显示左声道的数据,则可以只调用左声道的数据,不需要对混合数据进行解析,分离出左声道和右声道的数据,才能再只展示左声道的数据。以此,在节约web端资源的同时,降低编辑者的工作量,使得操作更简单。
[0061] 其中,最终生成的新的波形数据的大小为:
[0062] 新的波形数据的大小(B)=音频时长(s)× 每秒音频组数量 × 2 ×声道数。
[0063] 该波形数据大小,就可以表示传输到web端时,所需的宽带要求较低。例如,一个3分钟的mp3音乐,可能有10M左右吧,小的可能5M或6M;采用本发明的计算方法,得到的波形数据大小为:3×60×150×2×2=108K,由此可知,通过本发明提供的方法,计算得到的最终波形大小,与原始波形数据大小差了几十甚至上百倍。
[0064] 通过上述步骤S11-S14,生成的波形数据,不仅比原始数据小了数十或数百倍,还可以根据web端的不同要求灵活显示不同声道的数据,不需要再做声道数据分离处理。
[0065] 步骤S15:所述Web端获取所述新的波形数据。
[0066] 具体实施时,当需要绘制波形时,web端需要从服务器端获取服务器端生成的新的波形数据。获取时,可以从服务器端下载全部的新的波形数据,如直接下载总的波形数据存储文件,也可以下载部分新的波形数据,如下载右声道的波形数据或下载左声道的波形数据,又或下载右声道和左声道两个声道的波形数据。
[0067] 步骤S16:所述Web端对所述新的波形数据中的多组所述最大值和最小值进行归一化处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值。
[0068] 实际中,音频数据都是浮点数,而本发明中为了降低数据量的传输,通过上述步骤S13,将获取的初始最大值和初始最小值进行变换到8比特的波形数据空间存储,得到的是8比特的最大值和最小值。然而,8比特的波形数据粒度较小,精确度低于浮点数,因而在绘制波形时,为了使展示的更精确,需要对8比特的波形数据进行归一化处理,转换成浮点数,且归一化后得到的比例尺区间为-1 1(即被本领域技术人员认为的一个正常的要被显示的合~理的比例尺区间)。
[0069] 具体实施时,针对新的波形数据中的所有波形数据(由多个音频组的最大值和最小值组成),Web端对这些波形数据进行归一化处理,得到归一化后的波形数据。其中,作归一化处理时,可以按照音频组,对多组最大值和最小值进行处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值,需要说明的是,一个音频组对应一个展示候选数据对。
[0070] 步骤S17:所述web端根据时间线缩放比例,从多组所述展示候选数据对中获取多组展示数据对。
[0071] 本实施例中,在web端的工程线程中,根据时间线缩放比例,对多组展示候选数据对重采样。具体实施时,web端根据时间线的缩放比例以及音频片段长度,计算展示的波形数据对的数量;然后web端根据波形数据对的数量,从多组展示候选数据对中,按照就近原则的算法,对多组展示候选数据对进行数据对抽取(即,进行数据重采样),得到多组展示数据对。其中,数据重采样至少包括以下一种:web端根据波形数据对的数量,对多组展示候选数据进行复制,得到多组展示数据对;web端根据波形数据对的数量,从多组展示候选数据中抽取多组展示数据对。
[0072] 本发明中,由于时间线会不断的放大和缩小,也就是说,一个像素所表示的波形数据是不一样的,若时间线放大了,一个像素可能会表示2个采样点,缩小了就表示比例尺变小了,一个像素可能会表示4个、8个或16个采样点;这样由于时间线的放大或缩小,会导致展示的波形数据量发生变化,因此在显示的时候,还会对多组展示候选数据对进行数据对抽取(即再次重采样),例如,从已经生成的每秒150个,再根据计算的展示时所要求的波形数据对的数量,进行抽取,如计算的数量为1秒50个,则需从这150个里再均匀的抽取50个(150/50=3,从每三个中抽一个),如计算的数量为300个,则将生成的150个全部展示或重复展示(再对这150个数据复制一遍,变成300个进行展示)。
[0073] 其中,就近原则的算法,是指:波形需要计算在时间比例尺上显示哪一块,比如现在要显示第1秒内的波形,然后在显示第1秒内的波形时,可能显示的起始位置刚好不在第1秒的起始位置,如在前一点,然后就需要找这附近的波形数据,或者说包括放大了之后,可能第1秒到第1.2秒之间只有10个数据,但是要求是显示20个,那么就可能就近地将这10个数据复制一遍,变成20个数据进行显示。即就近原则可以理解为,缩小的时候从这附近的数据中进行抽取,放大的时候也将这附近的数据进行重复/增加。
[0074] 本发明中,上述计算和抽取的过程都放在web端的工作线程中处理,避免耗时过长而阻塞主线程造成卡顿。
[0075] 步骤S18:所述web端根据所述多组展示数据对,绘制音频波形,并展示所述绘制的音频波形。
[0076] 本发明中,web端根据每组展示数据对中的最大值和最小值,绘制音频波形;其中,绘制方法为:将每组展示数据对中的最大值相连绘制曲线,将每组展示数据对中的最小值相连绘制曲线,得到音频波形。具体实施时,在绘制波形时,本发明采用连续性画法,以0为分界线,大于0的波形数据(即展示数据对)绘制在片段的中心轴上方,小于0的波形数据绘制在片段中心轴下方,每个波形数据的波峰相连绘制曲线,每个波形数据的波谷数据相连绘制曲线,就绘制出了一条连续的波形,不会因为时间线放大过大,数据量的限制造成离散的感觉。
[0077] 图5是本发明实施例中展示的时间线正常比例时的音频波形的示意图,图6是本发明实施例中展示的时间线放大到最大比例时的音频波形的示意图;如图5和图6所示,采用本发明的处理音频波形的方法,最后展示的波形皆是连续的,即使将时间线放大到最大比例,所展示的音频波形也是连续的,未出现间断或缝隙等效果不好的问题。
[0078] 本发明实施例中,首先,服务器端获取将原始音频数据转换为格式统一的音频数据,并根据预设的每秒音频组数量对音频数据进行分组,获取每个音频组的最大值和最小值,再根据所有音频组的最大值和最小值,生成新的波形数据,并将新的波形数据发送给Web端;然后,Web端对新的波形数据进行归一化处理,得到多组展示候选数据对,再根据时间线缩放比例,从多组展示候选数据对中获取多组展示数据对,接着根据多组展示数据对,绘制音频波形并展示绘制的音频波形。
[0079] 由于本发明实施例中,将整个原始音频数据分成多个音频组,只保留每个音频组中的最大值和最小值,因而经过筛选过后得到的新的波形数据,相较于原始音频数据,具有数据量小的特点。在传输波形数据和展示波形时,小数据量的波形数据,可以大幅度地降低网络带宽的使用和提高显示波形的实时性(该实时性是指显示波形的速度)。
[0080] 图4是本发明实施例中的一种Web端获取新的波形数据的方法的步骤流程图,参照图4,在本实施例中,web端获取新的波形数据的方法,具体可以包括以下步骤:
[0081] 步骤S21:所述服务器端将所述下载接口和所述下载标签发送给所述web端。
[0082] 具体实施时,服务器端在生成新的波形数据时,针对每个新的波形数据都会携带有下载接口和下载标签。其中,下载接口可以理解为网络连接接口,以供web端通过该接口下载与该接口相对应的波形数据;下载标签可以理解为区别每个新的波形数据的标识,例如,左声道波形数据的标识用于快速查找和识别左声道的音频数据。需要说明的是,下载标签也可以是在生成新的波形数据时,提前设置的区别声道种类的标识,用于将不同声道种类的子波形数据存储到对应下载标签的文件中。
[0083] 步骤S22:所述Web端根据所述下载标签检测所述FS中,是否存储有所述所述新的波形数据。
[0084] 具体实施时,Web端包括FS和IndexDB,绘制音频片段波形时,首先Web端根据待展示的新的波形数据的下载标签检测FS中,是否缓存有该新的波形数据。
[0085] 步骤S23:若检测到所述FS中存储有所述新的波形数据,则从所述FS中获取所述新的波形数据。具体实施时,若检测到FS中存储有新的波形数据,则从FS中加载新的波形数据。
[0086] 步骤S24:若检测到所述FS中未存储有所述新的波形数据,则检测所述IndexDB中,是否存储有所述新的波形数据。具体实施时,若检测到FS中没有缓存有新的波形数据,则继续检测IndexDB中,是否存储有新的波形数据。
[0087] 步骤S25:若检测到所述IndexDB存储有所述新的波形数据,则将所述IndexDB中的所述新的波形数据读取到所述FS中,并从所述FS中获取所述新的波形数据。具体实施时,若检测到IndexDB存储有新的波形数据,则将IndexDB中的新的波形数据读取到FS中,并从FS中加载新的波形数据。
[0088] 步骤S26:若检测到所述IndexDB未存储有所述新的波形数据,则通过所述下载接口,从所述服务器端获取所述新的波形数据。具体实施时,若检测到IndexDB未存储有新的波形数据,则Web端通过与新的波形数据对应的下载接口,从服务器端将新的波形数据下载至FS中,然后Web端从FS中,加载新的波形数据,并且FS将下载新的波形数据存储至IndexDB中,进行永久存储,以供下次使用时,直接加载,而不需要依赖网络从服务器端下载。
[0089] 本发明实施例中,通过将波形数据缓存在web端的方法,即使网络出现问题,缓存过波形数据同样可以进行波形绘制和展示,用户的体验有明显改善。其中,将波形数据保存在IndexDB中,IndexDB作为数据库类型的永久存储,可以快速的异步增加、插入、修改和删除,便于数据的管理,容量相对于LocalStorge也大得多,能够轻松容纳缓存的波形数据。但是,由于web端的编辑界面无法直接从IndexDB中获取缓存的波形数据,所以需要把IndexDB中的数据读取到FS存储空间作为二级临时缓存,以供web端的编辑界面直接读取使用。
[0090] 本发明实施例,还提供了一种音频数据处理的装置,参考图7,图7是本发明实施例中的一种音频数据处理的装置的结构示意图,如图7所示,所述装置包括:
[0091] 第一获取模块71,用于服务器端获取多个原始音频数据,并将原始音频数据转换为格式统一的音频数据;
[0092] 分组模块72,用于服务器端根据预设的每秒音频组数量,对音频数据进行分组,得到多个音频组,每个音频组包含多个音频数据;
[0093] 第二获取模块73,用于针对每个音频组,服务器端从多个音频数据中,获取每个音频组的最大值和最小值;
[0094] 生成模块74,用于服务器端根据多个音频组对应的多组最大值和最小值,生成新的波形数据;
[0095] 第三获取模块75,用于Web端获取新生成的波形数据;
[0096] 处理模块76,用于所述Web端对新的波形数据中的多组最大值和最小值进行归一化处理,得到多组展示候选数据对,每组展示候选数据对包括归一化后的最大值和最小值;
[0097] 第四获取模块77,用于web端根据时间线缩放比例,从多组展示候选数据对中获取多组展示数据对;
[0098] 展示模块78,用于web端根据多组展示数据对,绘制音频波形,并展示绘制的音频波形。
[0099] 优选地,第一获取模块71包括:
[0100] 第一生成子模块,用于在对待处理音频文件转码的同时,生成多个原始音频数据;
[0101] 第一获取子模块,用于服务器端获取多个原始音频数据。
[0102] 优选地,第二获取模块73包括:
[0103] 遍历子模块,用于针对每个音频组,服务器端对每个音频组中的各个音频数据进行遍历,得到每个音频组中的初始最大值和初始最小值;
[0104] 变换子模块,用于服务器端将每个初始最大值和初始最小值,变换成8比特的最大值和最小值;
[0105] 第二获取子模块,用于服务器端根据8比特的最大值和最小值,得到每个音频组的最大值和最小值。
[0106] 优选地,生成模块74包括:
[0107] 第一存储子模块,用于服务器端根据类别,对多组最大值和最小值进行分类存储,得到多个不同种类声道的子波形数据;
[0108] 生成子模块,用于服务器端根据每个子波形数据,生成一个新的波形数据。
[0109] 优选地,本发明的装置还包括:
[0110] 发送模块,用于服务器端将下载接口和下载标签发送给web端。
[0111] 优选地,第三获取模块75包括:
[0112] 第一检测子模块,用于Web端根据下载标签检测所述FS中,是否存储有新的波形数据;
[0113] 第三获取子模块,用于若检测到FS中存储有新的波形数据,则从FS中获取新的波形数据;
[0114] 第二检测子模块,用于若检测到FS中未存储有新的波形数据,则检测IndexDB中,是否存储有新的波形数据;
[0115] 第四获取子模块,用于若检测到IndexDB存储有新的波形数据,则将IndexDB中的新的波形数据读取到FS中,并从FS中获取新的波形数据;
[0116] 下载子模块,用于若检测到IndexDB未存储有所述新的波形数据,则通过下载接口,从服务器端获取新的波形数据。
[0117] 优选地,下载子模块包括:
[0118] 第一下载子模块,用于Web端通过下载接口,从服务器端将新的波形数据下载至FS中;
[0119] 第五获取子模块,用于Web端从FS中,获取新的波形数据;和
[0120] 第二存储子模块,用于FS将新的波形数据存储至IndexDB中。
[0121] 优选地,第四获取模块77包括:
[0122] 第六获取子模块,用于在web端的工程线程中,web端根据时间线的缩放比例,获取展示的波形数据对的数量;
[0123] 采样子模块,用于web端根据波形数据对的数量,对多组展示候选数据对进行数据重采样,得到多组展示数据对;
[0124] 其中,数据重采样至少包括以下一种:
[0125] web端根据波形数据对的数量,对多组展示候选数据进行复制,得到多组展示数据对;
[0126] web端根据波形数据对的数量,从多组展示候选数据中抽取多组展示数据对。
[0127] 优选地,展示模块78包括:
[0128] 绘制子模块,用于web端根据每组展示数据对中的最大值和最小值,绘制音频波形;
[0129] 其中,绘制方法为:将每组展示数据中的最大值相连绘制曲线,将每组展示数据中的最小值相连绘制曲线,得到音频波形。
[0130] 本公开实施例,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行所述计算机程序时实现上述音频数据处理的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0131] 本公开实施例,还提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述音频数据处理的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
[0132] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0133] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0134] 上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
[0135] 本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0136] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0137] 在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0138] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0139] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0140] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0141] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。