音频数据读取方法及处理系统技术方案

技术编号:20428595 阅读:32 留言:0更新日期:2019-02-23 09:43
本发明专利技术公开一种音频数据读取方法,包括:获取缓冲音频数据量m;获取欲读取音频数据量n;获取允许缓冲音频数据量p;判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m‑(s+n)≤p。本发明专利技术通过读取音频缓冲区剩余数据量的大小,再根据预设的欲将读取音频数据量大小与音频缓冲区剩余数据量的大小之间的关系判断是否丢弃数据,判据简单,数据处理效率高,可以满足音频低延迟的需要。

【技术实现步骤摘要】
音频数据读取方法及处理系统
本专利技术涉及音频数据处理领域,具体涉及一种音频数据读取方法及处理系统。
技术介绍
人类能够听到的所有声音都称之为音频,它可能包括噪音,声音被录制下来以后,无论是说话声、歌声、乐器都可以通过数字音乐软件处理,然后将音频储存在计算机里,实际上,如果有计算机,再加上相应的音频卡(就是我们经常说的声卡),我们就可以把所有的声音录制下来,声音的声学特性(比如声音的高低等)都可以用计算机硬盘文件的方式储存。在目前这样一个数码时代,优良的音质和良好的音频通话体验是我们所追求的,现有的很多操作系统(比如安卓)都可以支持麦克风等音频输入,为了解决网络传输不稳定造成的音频延迟、卡顿等问题,在读取音频数据时可以进行音频数据缓冲丢包,目前的缓冲丢包处理方法比较复杂,效率低,因此,在满足需求的情况下,如何采用简单而又可以实现音频低延迟的方法进行音频数据读取处理具有非常重要的意义。
技术实现思路
有鉴于此,本申请提供一种音频数据处理方法,通过读取音频缓冲区剩余数据量的大小,再根据预设的欲将读取音频数据量大小与音频缓冲区剩余数据量的大小之间的关系判断是否丢弃数据,判据简单,数据处理效率高,可以满足音频低延迟的需要。为解决以上技术问题,本专利技术提供的技术方案如下:音频数据读取方法,包括:获取缓冲音频数据量m;获取欲读取音频数据量n;获取允许缓冲音频数据量p;判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m-(s+n)≤p。进一步地,所述方法还包括:如果n≤m≤n+p,直接读取n个缓冲音频数据。进一步地,所述方法还包括:如果m<n,直接读取m个缓冲音频数据,或继续等待直到缓冲音频数据量达到n个后,读取n个音频数据。进一步地,所述获取缓冲音频数据量m这一步骤包括:接收音频数据读取命令;根据所述音频数据读取命令查找到缓冲数据节点;通过所述缓冲数据节点获取缓冲音频数据量m。进一步地,p=n,所述丢弃s个缓冲音频数据这一动作包括:根据公式(1)丢弃s个缓冲音频数据:s=(INT(m/n)-1)*n(1),其中,INT表示取整函数。音频数据处理系统,包括:缓冲音频数据量获取模块:用于获取缓冲音频数据量m;欲读取音频数据量获取模块:用于获取欲读取音频数据量n;允许缓冲音频数据量获取模块:用于获取允许缓冲音频数据量p;判断处理模块:用于判断m与n的关系并根据判断结果选择读取音频数据的方式。进一步地,所述判断处理模块还包括音频数据等待单元:用于在m<n时,使判断处理模块继续等待直到缓冲音频数据量达到n个后读取n个音频数据。进一步地,还包括:音频数据读取命令接收模块:用于接收音频数据读取命令;缓冲数据节点查找模块:用于根据音频数据读取命令查找缓冲数据节点。进一步地,所述判断处理模块包括音频数据丢弃函数储存单元:用于储存音频数据丢弃函数,所述音频数据处理模块根据所述音频数据丢弃函数丢弃缓冲音频数据。本专利技术提供的音频数据处理方法,通过读取音频缓冲区剩余数据量的大小,再根据预设的欲将读取的音频数据量大小与音频缓冲区剩余数据量的大小之间的关系判断是否丢弃数据或是直接读取音频数据,判据简单,数据处理效率高,可以满足音频低延迟的需要。附图说明图1为实施例1提供的方法流程图。图2为实施例2提供的音频数据处理系统结构示意框图。具体实施方式为了使本领域的技术人员更好地理解本专利技术的技术方案,下面结合附图和具体实施例对本专利技术作进一步的详细说明。实施例1如图1所示,本实施例提供一种音频数据读取方法,包括:S1:获取缓冲音频数据量m;S2:获取欲读取音频数据量n;S3:获取允许缓冲音频数据量p;S4:判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m-(s+n)≤p。这里需要说明的是,本实施例可以应用于安卓系统或其它操作系统,以安卓系统为例,系统内核里有一个音频驱动,在音频驱动中设有缓冲区,音频数据存放在缓冲区中,在步骤S1中,可以通过公式period_size*period_count来计算剩余音频数据量m,其中,period_size是指从音频驱动中缓冲区内每一次读取的最小数据量,period_count是指缓冲区中有多少个period_size,具体实施本实施例时,period_size是事先设定好的,每次读取音频数据前,只读取一次剩余音频数据量m,音频数据读取完成后,如果需要再次读取音频数据,由于音频驱动中缓冲区内的剩余音频数据量是动态变化的,则需要再次读取新的剩余音频数据量m。还需要说明的是,欲读取音频数据量n是指系统想要读取的音频数据量,这个取值可以是动态变化的,之所以判断m与n的大小,一方面是由于当剩余数据量m超过需要的数据n时,说明音频会有延迟,如果要降低延迟,则需要丢弃部分数据,本实施例中,丢弃的数据量根据需要灵活选择,只要保证丢弃一部分数据后,从缓冲区内读取的n个数据后剩余的数据量不大于允许剩余音频数据量就行,这个预设值可以为n,也可以为其他数值,如果p=0,则只有m大于n,就需要数据丢包动作。还需要说明的是,步骤S4中,为了提高效率,可以随意丢弃缓冲区内的s个音频数据,如果需要精确丢弃相关数据,可以采用VAD算法进行丢弃处理。作为优选,本实施例提供的方法还包括:如果n≤m≤n+p,直接读取n个缓冲音频数据。这里需要说明的是,虽然缓冲区内的剩余数据量会导致音频延迟,但是丢弃数据这一动作也会占用系统资源和浪费处理时间,因此,如果读取音频数据后,所剩余的数据量不大于p,系统的音频延迟就可以接受,因此,设置允许剩余音频数据可以平衡音频延迟与系统效率之间的关系,当然,如果需要,p值可以设置得比较小,甚至为0,这样在数据丢包后,音频延迟会非常小甚至零延迟,可以有效提高用户体验。作为优选,所述方法还包括:如果m<n,直接读取m个缓冲音频数据,或继续等待直到缓冲音频数据量达到n个后,读取n个音频数据。这里需要说明的是,当m<n时,可以有两种方式读取音频数据,一种是直接将缓冲区内的剩余音频数据全部读取,另一种是等到缓冲区内的音频数据达到n个后再读取,具体实施时,可以设置等待时间,如果在设置的等待时间内缓冲区的音频数据量还是没有达到n,则放弃等待直接读取。优选地,所述获取缓冲音频数据量m这一步骤,即步骤S1包括:接收音频数据读取命令;根据所述音频数据读取命令查找到缓冲数据节点;通过所述缓冲数据节点获取缓冲音频数据量m。这里需要说明的是,所述缓冲数据节点是系统内核的音频驱动做的一个接口,用户可以通过这个节点获取或者写入一些数据,达到用户层面和内核空间的一个交互,通过所述缓冲数据节点获取缓冲音频数据量m,就是对查找到的缓冲数据节点进行解析,把节点打开,然后读取字符串到一个地方,然后解析读取到的字符串后面的数值,从而获取到缓冲音频数据量m。作为优选,步骤S4中,p=n,所述丢弃s个缓冲音频数据这一动作包括:根据公式(1)丢弃所述缓冲区内的s个数据:s=(INT(m/n)-1)*n(1),其中,INT表示取整函数。实施例2如图2所示,本实施例提供一种音频数据处理系统,包括:缓冲音频数据量获取模块:用于获取缓冲音频数据量m;欲读取音频数据量获取模块:用于获取欲读取本文档来自技高网...

【技术保护点】
1.音频数据读取方法,其特征在于,包括:获取缓冲音频数据量m;获取欲读取音频数据量n;获取允许缓冲音频数据量p;判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m‑(s+n)≤p。

【技术特征摘要】
1.音频数据读取方法,其特征在于,包括:获取缓冲音频数据量m;获取欲读取音频数据量n;获取允许缓冲音频数据量p;判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m-(s+n)≤p。2.根据权利要求1所述的音频数据读取方法,其特征在于,所述方法还包括:如果n≤m≤n+p,直接读取n个缓冲音频数据。3.根据权利要求1所述的音频数据读取方法,其特征在于,所述方法还包括:如果m<n,直接读取m个缓冲音频数据,或继续等待直到缓冲音频数据量达到n个后,读取n个音频数据。4.根据权利要求1所述的音频数据读取方法,其特征在于,所述获取缓冲音频数据量m这一步骤包括:接收音频数据读取命令;根据所述音频数据读取命令查找到缓冲数据节点;通过所述缓冲数据节点获取缓冲音频数据量m。5.根据权利要求1所述的音频数据读取方法,其特征在于,p=n,所述丢弃s个缓冲音频数据这一动作包括:根据公式(1)丢弃s个缓冲音频数据:s=(INT(m/n...

【专利技术属性】
技术研发人员:钟波肖适刘志明姜彦兮
申请(专利权)人:成都市极米科技有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1