一种音频播放方法、装置、终端设备及存储介质与流程

文档序号:32602999发布日期:2022-12-17 17:39阅读:45来源:国知局
一种音频播放方法、装置、终端设备及存储介质与流程

1.本技术涉及音频处理的领域,尤其是涉及一种音频播放方法、装置、终端设备及存储介质。


背景技术:

2.在ios系统与mac osx系统中,当播放一段连续的音频时,终端设备通常会将该音频对应的每个音频帧数据按照播放顺序依次放置在缓存队列内,之后按照先入先出的原则,从缓存队列中调取音频帧数据以播放音频。
3.在相关技术中,当缓存队列内当前暂存的所有音频帧数据全部被播放完后,也即此时缓存队列内暂存的音频帧数据为0,若后续再有音频帧数据暂存至该缓存队列内,此时不再播放这些音频帧数据,从而可能导致在播放过程中出现声音消失的情况,进而可能导致用户体验较差。


技术实现要素:

4.为了解决以上至少一项技术问题,本技术实施例提供一种音频播放方法、装置、终端设备及存储介质。
5.第一方面,本技术提供一种音频播放方法,采用如下的技术方案:一种音频播放方法,包括:若满足第一预设条件,则创建新的音频队列;获取待缓存至所述新的音频队列中的音频帧数据,并将所述音频帧数据缓存至所述新的音频队列中;从所述新的音频队列中调取待输出的音频帧数据,并输出所述待输出的音频帧数据;其中,所述第一预设条件包括以下任一项:从当前音频队列中未调取到音频帧数据;当前音频队列中剩余的音频帧数据的数量小于第一预设阈值。
6.通过采用上述技术方案,当从当前音频队列中未调取到音频帧数据,又或者当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,表征即使再往当前音频队列中缓存音频帧数据,也无法播放这些音频帧数据,因此当满足上述条件时,创建新的音频队列,并将待缓存的音频帧数据暂存到新的音频队列中,从而可以从新的音频队列中调取音频帧数据,以继续进行播放,进而可以使得剩余的或其他的音频帧数据能够正常播放,减小了声音消失的情况出现,进一步提高了用户的使用体验。
7.在一种可能的实现方式中,所述获取待缓存至所述新的音频队列中的音频帧数据,包括以下任一项:若所述当前音频队列中存在剩余的音频帧数据,则获取所述剩余的音频帧数据和/或待写入音频队列的音频帧数据,作为所述待缓存至所述新的音频队列中的音频帧数
据;获取待写入音频队列的音频帧数据,作为所述待缓存至所述新的音频队列中的音频帧数据。
8.通过采用上述技术方案,一方面,当当前音频队列中存在剩余的音频帧数据,则将剩余的音频帧数据作为待缓存至新的音频队列的音频帧数据,或者将剩余的音频帧数据以及待写入音频队列中的音频帧数据作为待缓存至新的音频队列的音频帧数据,从而可以使得播放连续且完整的音频,以提升用户体验;另一方面,无论当前音频队列中是否存在剩余的音频帧数据,均可以仅将待写入音频队列的音频帧数据作为待缓存至新的音频队列,从而可以节省从当前队列至新的音频队列调取音频帧数据的开销,以及可以避免在播放过程中出现声音消失的情况,进而可以提升用户体验。
9.在另一种可能的实现方式中,所述方法还包括以下至少一项:清除所述当前音频队列的队列创建数据;清除所述当前音频队列中缓存的音频帧数据。
10.由于当前音频队列已经无法执行音频播放工作,一方面当前音频队列中可能暂存有未被调取的音频帧数据,仍旧占据部分缓存空间,另一方面当前音频队列的队列创建数据也占用了部分资源,故而,通过采用上述技术方案,可以将当前音频队列的队列创建数据清除,或者将当前音频队列中缓存的音频帧数据清除,还可以同时将两者清除,以节约内存空间,减小不必要的内存资源浪费。
11.在另一种可能的实现方式中,若不满足所述第一预设条件,则所述方法还包括:从所述当前音频队列中调取目标音频帧数据;输出所述目标音频帧数据;若不满足第一预设条件且满足第二预设条件,则循环执行从所述当前音频队列中调取目标音频帧数据,输出所述目标音频帧数据,直至不满足第二预设条件或者满足第一预设条件;其中,所述第二预设条件包括:当前已被调取的音频帧数据的总数量小于接收到的音频帧数据的总数量。
12.通过采用上述技术方案,在不满足第一预设条件也即在能够正常从当前音频队列中调取音频帧数据以播放音频时,可以从当前队列中正常调取目标音频帧数据,并输出目标音频帧数据,直至当前已被调取的音频帧数据的总数量等于接收到的音频帧数据的总数量,以实现在正常情况下对音频帧数据的调取与输出。
13.在另一种可能的实现方式中,所述创建新的音频队列,包括:确定所述新的音频队列的队列长度,所述队列长度用于表征所述新的队列缓存音频帧数据的最大数量;基于所述队列长度,创建新的音频队列。
14.通过采用上述技术方案,音频队列的队列长度决定了新的音频队列能够容纳的音频帧数据的数量,当音频队列的利用率低时,将产生不必要的空间浪费,为此根据确定出的新的音频队列的队列长度,创建新的音频队列,有利于提高音频队列的利用率。
15.在另一种可能的实现方式中,所述确定所述新的音频队列的队列长度,包括以下任一项:
确定所述新的音频队列的队列长度为预设长度;根据所述当前音频队列的队列长度,确定所述新的音频队列的队列长度;根据接收到的音频帧数据的总数量,确定所述新的音频队列的队列长度;根据待缓存至音频队列的音频帧数据的总数量,确定所述新的音频队列的队列长度,所述音频队列为所述新的音频队列。
16.通过采用上述技术方案,在确定新的音频队列的队列长度时,一方面,可以直接采用预设长度,作为新的音频队列的队列长度;另一方面,根据接收到的音频帧数据的总数量,确定新的音频队列的队列长度,再一方面,根据待缓存至音频队列的音频帧数据的总数量,确定新的音频队列的队列长度,音频队列为新的音频队列,也即提供了三种可能的实现方式以确定出新的音频队列的队列长度,再者,根据接收到的音频帧数据的总数量或者待缓存至音频队列的音频帧数据的总数量,确定新的音频队列的队列长度,从而可以提升新的音频队列的利用率,也可以提升创建的新的音频队列长度的准确度。
17.在另一种可能的实现方式中,所述从所述新的音频队列中调取待输出的音频帧数据,包括:当所述新的音频队列中缓存的音频帧数据的数量大于第二预设阈值时,从所述新的音频队列中调取待输出的音频帧数据。
18.通过采用上述技术方案,也即当新的音频队列中缓存的音频帧数据的数量大于一定数量时,才从新的音频队列中进行音频帧数据的调取和输出,以降低在刚开始从新的音频队列中调取音频帧数据后出现由于新的音频帧队列中暂存的音频帧数据为0导致音频播放间断的情况,从而可以进一步提升用户体验。
19.第二方面,本技术提供一种音频播放装置,采用如下的技术方案:一种音频播放装置,包括:队列创建模块,用于当满足第一预设条件时,创建新的音频队列;数据获取模块,用于获取待缓存至所述新的音频队列中的音频帧数据,并将所述音频帧数据缓存至所述新的音频队列中;数据调取模块,用于从所述新的音频队列中调取待输出的音频帧数据,并输出所述待输出的音频帧数据;其中,所述第一预设条件包括以下任一项:从当前音频队列中未调取到音频帧数据;当前音频队列中剩余的音频帧数据的数量小于第一预设阈值。
20.通过采用上述技术方案,当从当前音频队列中未调取到音频帧数据,又或者当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,表征即使再往当前音频队列中缓存音频帧数据,也无法播放这些音频帧数据,因此当满足上述条件时,队列创建模块将创建新的音频队列,并由数据获取模块将待缓存的音频帧数据暂存到新的音频队列中,从而可以使得数据调取模块从新的音频队列中调取音频帧数据,以继续进行播放,进而可以使得剩余的或其他的音频帧数据能够正常播放,减小了声音消失的情况出现,进一步提高了用户的使用体验。
21.在一种可能的实现方式中,所述数据获取模块在获取待缓存至所述新的音频队列中的音频帧数据时,具体用于:
若所述当前音频队列中存在剩余的音频帧数据,则获取所述剩余的音频帧数据和/或待写入音频队列的音频帧数据,作为所述待缓存至所述新的音频队列中的音频帧数据;或者,获取待写入音频队列的音频帧数据,作为所述待缓存至所述新的音频队列中的音频帧数据。
22.在另一种可能的实现方式中,所述装置还包括第一清除模块和/或第二清除模块,其中:第一清除模块,用于清除所述当前音频队列的队列创建数据;第二清除模块,用于清除所述当前音频队列中缓存的音频帧数据。
23.在另一种可能的实现方式中,当不满足所述第一预设条件时,所述装置还包括:正常调取模块,用于从所述当前音频队列中调取目标音频帧数据;正常数据模块,用于输出所述目标音频帧数据;正常数据模块,用于当不满足第一预设条件且满足第二预设条件时,循环执行从所述当前音频队列中调取目标音频帧数据,输出所述目标音频帧数据,直至不满足第二预设条件或者满足第一预设条件;其中,所述第二预设条件包括:当前已被调取的音频帧数据的总数量小于接收到的音频帧数据的总数量。
24.在另一种可能的实现方式中,所述队列创建模块在创建新的音频队列时,具体用于:确定所述新的音频队列的队列长度,所述队列长度用于表征所述新的音频队列缓存音频帧数据的最大数量;基于所述队列长度,创建新的音频队列。
25.在另一种可能的实现方式中,所述队列创建模块在确定所述新的音频队列的队列长度时,具体用于:确定所述新的音频队列的队列长度为预设长度;或者,根据所述当前音频队列的队列长度,确定所述新的音频队列的队列长度;或者,根据接收到的音频帧数据的总数量,确定所述新的音频队列的队列长度;或者,根据待缓存至音频队列的音频帧数据的总数量,确定所述新的音频队列的队列长度,所述音频队列为所述新的音频队列。
26.在另一种可能的实现方式中,所述数据调取模块在从所述新的音频队列中调取待输出的音频帧数据时,具体用于:当所述新的音频队列中缓存的音频帧数据的数量大于第二预设阈值时,从所述新的音频队列中调取待输出的音频帧数据。
27.第三方面,本技术提供一种终端设备,采用如下的技术方案:一种终端设备,该终端设备包括:至少一个处理器;存储器;至少一个应用程序,其中至少一个应用程序被存储在存储器中并被配置为由至少一个处理器执行,所述至少一个应用程序配置用于:执行上述音频播放方法。
28.第四方面,本技术提供一种计算机可读存储介质,采用如下的技术方案:一种计算机可读存储介质,包括:存储有能够被处理器加载并执行上述音频播放方法的计算机程序。
29.综上所述,本技术包括以下有益技术效果:1.当从当前音频队列中未调取到音频帧数据,又或者当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,表征即使再往当前音频队列中缓存音频帧数据,也无法播放这些音频帧数据,因此当满足上述条件时,将创建新的音频队列,并将待缓存的音频帧数据暂存到新的音频队列中,从而可以从新的音频队列中调取音频帧数据,以继续进行播放,进而可以使得剩余的或其他的音频帧数据能够正常播放,减小了声音消失的情况出现,进一步提高了用户的使用体验。
30.2.当当前音频队列中存在剩余的音频帧数据,则将剩余的音频帧数据作为待缓存至新的音频队列的音频帧数据,或者将剩余的音频帧数据以及待写入音频队列中的音频帧数据作为待缓存至新的音频队列的音频帧数据,从而可以使得播放连续且完整的音频,以提升用户体验;另外,无论当前音频队列中是否存在剩余的音频帧数据,均可以仅将待写入音频队列的音频帧数据作为待缓存至新的音频队列,从而可以节省从当前队列至新的音频队列调取音频帧数据的开销,以及可以避免在播放过程中出现声音消失的情况,进而可以提升用户体验。
附图说明
31.图1是本技术实施例音频播放方法的流程示意图;图2是本技术实施例音频播放实例的示意图;图3是本技术实施例音频播放装置的方框示意图;图4是本技术实施例终端设备的示意图。
具体实施方式
32.以下结合附图1-4对本技术作进一步详细说明。
33.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。在用户使用终端设备的过程中,经常需要播放音频,该音频可能是游戏的背景音乐,还可能是特定音效的音频,还可能是歌曲等音频,还可能是录音产生的预先存储在终端设备内的音频等,其中,一个音频包括至少一个音频帧数据。
34.在需要播放一段音频时,终端设备将依次把接收到的音频帧数据写入音频队列中,以用户的游戏过程为例进行说明,若需要播放游戏中的场景a的背景音乐,该背景音乐包括多个音频帧数据,服务端则将该背景音乐对应的各个音频帧数据依次发送至终端设备中,该终端设备接收到音频帧数据时,将该音频帧数据写入至音频队列中。该音频队列可以是在接收到音频帧数据之前预先创建好的,还可以是在接收到第一个音频帧数据时创建的,在本技术实施例中并不限定。
35.在音频队列中将形成以时间先后顺序排列的各个音频帧数据,在不断写入音频帧数据的过程中,终端设备也将从该音频队列中依次调取音频帧数据,以播放音频,直至在向音频队列调取音频帧数据时,未调取到音频帧数据,停止音频播放。
36.但是,在播放该音频的过程中,由于音频帧数据的写入产生延迟或者由于接收音频帧数据时造成延时,而可能会造成短时未向音频队列写入音频帧数据的情况,在这种情况下,终端设备从音频队列中调取音频帧数据时,可能会出现调取不到音频帧数据的情况,也即此时该音频队列中暂存的音频帧数据为0,导致音频播放因异常而停止,并且当有音频帧数据再写入该音频队列后,也将不再播放音频,造成部分声音消失,进一步地使得用户体验感较差。
37.为了解决上述情况下产生的声音消失的问题,相关技术方案中,在每次从音频队列中调取出音频帧数据时,当判断出若将该音频帧数据调取,则会出现音频队列中暂存的音频帧数据的数量为0的情况发生时,将向该音频队列中插入预设数量的替代音频帧数据,以使得再次从音频队列中调取音频帧数据时,能够成功调取到音频帧数据,以解决声音消失的问题,但是该替代音频帧数据通常为空白音频帧数据,即在调取到该替代音频帧数据时,将存在一段时间用户听不到任何声音的情况,直至再调取到非空白帧的音频帧数据时用户才可以听到声音,因此可能也会导致用户的体验较差。
38.故而,为了能够在异常时,减小声音中断甚至消失的几率,以进一步提高用户的体验,本技术实施例提供了一种音频播放方法,由终端设备执行,参照图1,该方法可以包括:步骤s101、若满足第一预设条件,则创建新的音频队列。
39.具体地,在由当前音频队列调取一次音频帧数据后,判断是否满足第一预设条件,当满足第一预设条件时,此时将不再利用当前音频队列以播放音频,而是创建一个新的音频队列,由新的音频队列缓存音频帧数据并调取播放。
40.其中,第一预设条件包括:从当前音频队列中未调取到音频帧数据;或者,当前音频队列中剩余的音频帧数据的数量小于第一预设阈值。
41.本技术实施例的一种可能的实现方式,当第一预设条件包括:从当前音频队列中未调取到音频帧数据时,也即在上一次从当前音频队列中调取出音频帧数据并完成播放后,将再次从当前音频队列中调取音频帧数据,若未调取到音频帧数据,即确定为满足第一预设条件。例如:游戏的服务端向终端设备发送一段音频长度为45帧的音频,终端设备中由当前音频队列中调取了一次音频帧数据后,共调取播放了30帧音频帧数据,当前共缓存至当前音频队列中的音频帧数据的数量为30,当前音频队列中存在0帧音频帧数据,将当前调取的音频帧数据播放完成后,第31帧音频帧数据延迟入队,再次调取音频帧数据时,因当前音频队列为空,将调取不到音频帧数据,此时即判断出满足第一预设条件。
42.本技术实施例的另一种可能的实现方式中,第一预设条件还可以包括当前音频队列中剩余的音频帧数据的数量小于第一预设阈值。在本技术实施例中,剩余的音频帧数据为当前音频队列中存在的还未调取的音频帧数据,例如当前音频队列中存在10帧音频帧数据,还未被调取,其中10帧音频帧数据均为剩余的音频帧数据,且数量为10。具体地,在当前音频队列第一次调取音频帧数据后,开始实时判断当前音频队列中的剩余的音频帧数据的数量,当剩余的音频帧数据的数量小于第一预设阈值时,表征当前音频队列无法提供足量的音频帧数据,以供正常调取,也即表征当前音频队列存在无法调取音频帧数据的可能性
较大,也即表征满足第一预设条件。
43.需要说明的是,在本技术实施例中,第一预设阈值不小于1,当第一预设阈值为1时,也即第一预设条件可以包括:当前音频队列中不包含剩余的音频帧数据。也即此时无法从当前音频队列调取音频帧数据。
44.进一步地,第一预设阈值还可以根据每次调取的音频帧数据的数量确定,该第一预设阈值可以等于每次调取音频帧数据的数量,例如每次调取时,均调取一帧音频帧数据,也即第一预设阈值可以为1;再例如,每次调取时,调取的音频帧数据的数量为2,则第一预设阈值可以设置为2。在剩余的音频帧数据的数量不足以提供一次调取的音频数据的数量时,即当前音频队列中无足量的音频帧数据以供调取,此时将创建新的音频队列。
45.在任意时刻下检测到当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,或者,从当前音频队列中未调取到音频帧数据时,将创建新的音频队列,之后将根据新的音频队列进行音频帧数据的缓存、调取与播放。
46.步骤s102、获取待缓存至新的音频队列中的音频帧数据,并将音频帧数据缓存至新的音频队列中。
47.需要说明的是,若满足第一预设条件,可以先创建新的音频队列,然后再获取待缓存至新的音频队列中的音频帧数据,然后将音频帧数据缓存至新的音频队列中;若满足第一预设条件,也可以先获取待缓存至新的音频队列中的音频帧数据,然后创建新的音频队列,然后将待缓存至新的音频队列中的音频帧数据缓存至新的音频队列中,还可以同时创建新的音频队列以及获取待缓存至新的音频队列中的音频帧数据,然后将音频帧数据缓存至新的音频队列中,其中图1仅是一种示例,并不作为本技术实施例的限定。
48.其中,待缓存至新的音频队列中的音频帧数据,用于表征需要继续播放的音频帧数据。例如,待缓存至新的音频队列中的音频帧数据可以包括:还未缓存至任何音频队列的音频帧数据。以步骤s101中的示例为例进行说明,共接收到了45帧音频帧数据,已缓存并调取了30帧音频帧数据,剩余15帧音频帧数据还未缓存至当前音频队列,剩余的该15帧的音频帧数据,即为待缓存至新的音频队列中的音频帧数据。
49.具体地,在创建新的音频队列后,如果仍将该待缓存至新的音频队列中的音频帧数据,继续缓存在原音频队列中,而此时原音频队列将无法实现正常播放的功能,则会造成该音频帧数据不再播放的情况,故而此时直接将该音频帧数据缓存至新的音频队列中,不再向原音频队列中缓存音频帧数据,以减小接收到音频帧数据无法播放而产生声音消失的发生几率。
50.步骤s103、从新的音频队列中调取待输出的音频帧数据,并输出待输出的音频帧数据。
51.具体地,将音频帧数据缓存至新的音频队列后,将从新的音频队列中调取音频帧数据,将调取到的音频帧数据输出,以实现对调取到的音频帧数据的播放。而不再从原音频队列中调取音频帧数据,也不再将音频帧数据保存至原音频队列,也就不会存在从原音频队列中调取音频帧数据后,但无声音播放的情况出现,而通过更换一个新的音频队列,此时新的音频队列还未开始工作,当缓存有音频帧数据时,才开始正常工作,以此剩余的音频帧数据就可正常播放。
52.本技术实施例提供的一种音频播放方法,在本技术实施例中,当从当前音频队列
中未调取到音频帧数据,又或者当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,表征即使再往当前音频队列中缓存音频帧数据,也无法播放这些音频帧数据,因此当满足上述条件时,创建新的音频队列,并将待缓存的音频帧数据暂存到新的音频队列中,从而可以从新的音频队列中调取音频帧数据,以继续进行播放,进而可以使得剩余的或其他的音频帧数据能够正常播放,减小了声音消失的情况出现,进一步提高了用户的使用体验。
53.值的说明的是,在本技术实施例中,该新的音频队列可以是在检测到满足第一预设条件之前预先创建的,在判断出满足第一预设条件时,直接将该预先建立好的音频队列作为新的音频队列,进行音频帧数据的缓存、调取以及播放。例如,在终端设备内预先创建有音频队列a与音频队列b,音频队列a为当前音频队列,音频队列b还未启用,在判断出满足第一预设条件时,可以直接将音频队列b作为新的音频队列,减小了创建新的音频队列时所耗费的时间,进而减小了音频中断的时长,有利于进一步提高用户的使用体验。
54.进一步地,当从新的音频队列中调取音频帧数据时,若再次判断出满足第一预设条件,则将再重新创建一个新的音频队列或者重新从已创建的新的音频队列中确定一个音频队列,然后获取待缓存至该音频队列的音频帧数据,将该音频帧数据缓存至该音频队列中,并从该音频队列中调取音频帧数据进行输出。
55.进一步地,获取待缓存至新的音频队列中的音频帧数据,可以包括方式一或方式二,其中,方式一:若当前音频队列中存在剩余的音频帧数据,则获取剩余的音频帧数据和/或待写入音频队列的音频帧数据,作为待缓存至新的音频队列中的音频帧数据。
56.其中,待写入音频队列的音频帧数据为还未缓存至任何音频队列的数据;剩余的音频帧数据用于表征在满足第一预设条件时,当前音频队列中剩余的音频帧数据。例如,在检测到满足第一预设条件时,未缓存的音频帧数据为15帧,已缓存的音频帧数据为30帧,已调取的音频帧数据为29帧,在当前音频队列中还存在1帧音频帧数据等待调取,则未缓存的15帧的音频帧数据,即对应为待写入的音频帧数据;当前音频队列中剩余的1帧音频帧数据,即对应为剩余的音频帧数据。
57.具体地,在一种可能的实现方式中,仅将待写入音频队列的音频帧数据作为待缓存至新的音频队列中的音频帧数据,而不获取剩余的音频帧数据,当前音频队列剩余的音频帧数据的数量为第一预设阈值,数量较少,缺少一帧或几帧的音频帧数据不进行播放,对人耳而言,几帧的音频帧数据的差距难以造成影响,故而可以仅将待写入音频队列的音频帧数据作为待缓存至新的音频队列中的音频帧数据,即,将在建立新的音频队列后接收到的音频帧数据作为待缓存至新的音频队列中的音频帧数据。
58.在另一种可能的实现方式中,将待写入音频队列的音频帧数据与当前音频队列中剩余的音频帧数据,均作为待缓存至新的音频队列中的音频帧数据。在本技术实施例中,当获取当前音频队列中剩余的音频帧数据,将剩余的音频帧数据作为待缓存至新的音频队列中的音频帧数据,并缓存至新的音频队列中,之后在接收到待写入的音频帧数据时,将该待写入的音频帧数据也作为待缓存至新的音频队列的音频帧数据。例如,接收到的音频帧数据的数量为10,在满足第一预设条件时,已经调取并输出了3帧音频帧数据,判断出在当前音频队列中还剩余一帧音频帧数据,从当前音频队列中获取到了该帧音频帧数据,作为待缓存至新的音频队列的音频帧数据;剩余的6帧音频帧数据,即对应为待写入音频队列的音
频帧数据,也作为待缓存至新的音频队列的音频帧数据,此时将当前音频帧队列中的音频帧数据以及待写入音频队列中的音频帧数据。
59.方式二:获取待写入音频队列的音频帧数据,作为待缓存至新的音频队列中的音频帧数据。
60.在一种可能的实现方式中,当当前音频队列中不存在剩余的音频帧数据时,直接将待写入音频队列的音频帧数据作为待缓存至新的音频队列中的音频帧数据。例如,当前音频队列中的剩余的音频帧数据的数量为0,此时仅将待写入音频队列的音频帧数据作为待缓存至新的音频队列中的音频帧数据。
61.在另一种可能的实现方式中,无论当前音频队列中存在或不存在剩余的音频帧数据,都直接在创建新的音频队列后,不执行判断当前音频队列中是否存在剩余的音频帧数据的步骤,而直接将待写入音频队列的音频帧数据作为待缓存至新的音频队列中的音频帧数据。在本技术实施例中,通过直接将待写入音频队列中的音频帧数据作为待缓存至新的音频队列中的音频帧数据,不需要执行判断当前音频队列是否存在剩余的音频帧的步骤,可以提高继续播放音频的速度,降低音频消失的时间,提升用户体验。
62.进一步地,在创建新的音频队列时,新的音频队列的长度可以与原音频队列的长度相同,也可以不同,其中,创建新的音频队列的方式,具体可以包括步骤s1011(图中未示出)以及步骤s1012(图中未示出),其中:步骤s1011、确定新的音频队列的队列长度。
63.其中,队列长度用于表征新的音频队列缓存音频帧数据的最大数量。
64.具体地,音频队列的队列长度决定了该音频队列能够容纳的音频帧数据的最大量,例如设定音频队列的队列长度为45,则表征该音频队列在不被调取任何音频帧数据时,仅能缓存45个音频帧数据。
65.在确定了新的音频队列的队列长度后,将根据该队列长度,创建新的音频队列。
66.步骤s1012、基于队列长度,创建新的音频队列。
67.具体地,在缓存音频帧数据的过程中,也将不断从音频队列中调取音频帧数据,写入与调取的过程是并行的,因此可能会出现在一个周期内写入的音频帧数据的数量,多于调取出的音频帧数据的数量的现象,也可能出现一个周期内写入的数量等于调取的数量,也可能出现一个周期内写入的数量小于调取的数量;故而音频队列的长度决定了能够缓存的最大数量,进一步决定了循环播放音频帧数据时的流畅度,因为当音频队列的队列长度过小时,写入的速度受到制约,在网络较差的情况下,极易产生没有声音的情况。
68.在建立新的音频队列之前,确定新的音频队列的队列长度的方式包括方式一、方式二、方式三以及方式四中的任意一种,其中:方式一:确定新的音频队列的队列长度为预设长度。
69.其中,预设长度为预先设定的队列长度。例如设定该队列长度为45。在确定该音频队列的队列长度时,直接将该预先设定的队列长度作为新的音频队列的队列长度,以创建该新的音频队列。
70.方式二:根据当前音频队列的队列长度,确定新的音频队列的队列长度。
71.具体地,在确定新的音频队列的队列长度时,还可以根据当前音频队列的队列长度而确定。在本技术实施例中,可以在当前音频队列的队列长度的基础上,减去缓存队列未
使用过的队列对应的长度,以作为新的音频队列的队列长度;又或者,在当前音频队列的队列长度较小,难以实现流畅缓存时,在当前音频队列的队列长度的基础上,增加部分队列长度,作为新的音频队列的队列长度,以提高音频播放的流畅度;又或者直接将新的音频队列的队列长度确定为新的音频队列的队列长度。
72.例如,当前音频队列队列长度口可以为45,缓存队列中未使用的队列对应的长度为10,则新的音频队列对应的长度可以为45,也可以为35,再者,假如待增加的队列长度可以为15,也即新的音频队列的长度也可以为60。
73.方式三:根据接收到的音频帧数据的总数量,确定新的音频队列的队列长度。
74.具体地,接收到的音频帧数据的总数量为外界设备向终端设备发送的音频对应的音频帧数据的总数量,例如服务端向终端设备发送了一段音频长度为45帧的音频,则接收到的音频帧数据的总数量为45,此时确定新的音频队列的队列长度为45。
75.具体地,在本技术实施例中,该接收到的音频帧数据的总数量是外界设备发送至终端设备的,其中,该接收到的音频帧数据的总数量可以是被携带在音频帧数据中,随着音频帧数据而发送至终端设备的,还可以是外界设备单独发送至终端设备的,在本技术实施例中不做限定。
76.当接收到的音频帧数据的总数量较少时,若创建的新的音频队列的队列长度过长,在创建该新的音频队列时,会出现多余的部分占用了较多的创建时间的情况,进而影响中断与恢复音频之间的间隔时长,例如接收到的音频帧数据的总数量为5,若新的音频队列的队列长度设置为45,则剩余的40对应的部分音频队列将会占用较长的创建时长。
77.当接收到的音频帧数据的总数量较多时,若音频队列的队列长度较小,则极易受到网络等其他影响而使得音频播放中断。为此在建立音频队列时,需要考虑当前接收到的音频帧数据的总数量的影响。
78.具体地,每个接收到的音频帧数据的总数量对应有一个第一预设长度,不同的总数量对应的预设队列长度可能相同,可能不同。例如,接收到的音频帧数据的总数量为35,对应的第一预设长度为50,接收到的音频帧数据的总数量为40,对应的第一预设长度为50,接收到的音频帧数据的总数量为10,对应的第一预设长度为20。
79.在确定新的音频队列的队列长度时,将接收到的音频帧数据的总数量对应的第一预设长度,作为新的音频队列的队列长度,例如,对应的第一预设长度为50,则确定新的音频队列的第一预设长度为50。
80.进一步地,由于当前音频队列已经将部分音频帧数据进行了调取与输出,新的音频队列仅需要将还未被调取的音频帧数据进行缓存、调取以及输出,为此,在考虑新的音频队列的队列长度时,可以根据还未被调取的音频帧数据的总数量进行确定,具体确定方式详见方式四。
81.方式四:根据待缓存至音频队列中的音频帧数据的总数量,确定新的音频队列的队列长度。
82.其中,音频队列为新的音频队列。
83.具体地,待缓存至新的音频队列的音频帧数据包括还未写入至任何音频队列的音频帧数据和/或当前音频队列中剩余的音频帧数据,例如,未写入至任何音频队列的音频帧数据的数量为10,当前音频队列中剩余的音频帧数据的数量为1,已输出的音频帧数据的数
量为9,待写入新的音频队列的音频帧数据的数量可以为10(仅包括未写入至任何音频队列的音频帧数据的数量),还可以为11(包括未写入至任何音频队列的音频帧数据的数量以及当前音频队列中剩余的音频帧数据的数量)。
84.确定待缓存至新的音频队列中的音频帧数据的总数量,之后还可以包括:根据该总数量与队列长度之间的对应关系,确定新的音频队列的队列长度;其中,每个待缓存至新的音频队列中的音频帧数据的总数量,均对应有一个第二预设长度,将该总数量对应的第二预设长度,作为新的音频队列的队列长度。例如,确定出的待写入的新的音频队列的音频帧的总数量为10,对应的预设的队列长度为15,则创建的新的音频队列的队列长度为15。
85.在根据队列长度,创建新的音频队列之后,将基于新的音频队列,对待缓存至新的音频队列中的音频帧数据进行缓存以及调取输出。在本技术实施例中,步骤s103中从新的音频队列中调取待输出的音频帧数据,具体可以包括:当新的音频队列中缓存的音频帧数据的数量大于第二预设阈值时,从新的音频队列中调取待输出的音频帧数据。
86.其中,第二预设阈值为预先设定的值,例如设定第二预设阈值为5。
87.具体地,在创建新的音频队列之后,若在一个音频帧数据缓存至该音频队列后,就开始进行音频帧数据的调取与播放,则极易出现将该音频帧数据调取后,再次调取不到音频帧数据的情况,将需要再次重新建立新的音频队列。因此会产生很大的资源浪费以及不稳定的现象,故而在创建新的音频队列后,当新的音频队列内缓存的音频帧数据的数量大于第二预设阈值时,再从新的音频队列中调取待输出的音频帧数据,进行音频播放。例如,在创建新的音频队列后,从当前音频队列中获取了2个音频帧数据,缓存至了新的音频队列,当再累计接收到4个音频帧数据时,该4个音频帧数据均缓存至新的音频队列,新的音频队列内存在6个音频帧数据,大于第二预设阈值,此时,才从新的音频队列中调取待输出的音频帧数据,继续开始播放音频。
88.进一步地,为了在创建新的音频队列后,能够尽快开始调取与播放音频帧数据,以减小音频出现中断的时长,进一步地提高用户的使用体验,在当新的音频队列中缓存的音频帧数据的数量大于第二预设阈值时,从新的音频队列中调取待输出的音频帧数据,之前还包括:根据当前音频队列中剩余的音频帧数据,确定等待复制的音频帧数据。
89.具体地,等待复制的音频帧数据为从剩余的音频帧数据中,按照各个音频帧数据的排列顺序确定的。在剩余的音频帧数据中,依次选择预设数量的音频帧数据,预设数量大于等于1,例如预设数量为1,则剩余的音频帧数据中,位于第一个的音频帧数据即为等待复制的音频帧数据。
90.在将当前音频队列中剩余的音频帧数据缓存至新的音频队列中之后,若新的音频队列中的音频帧数据的数量低于第二预设阈值,则将该等待复制的音频帧数据进行复制,并将复制得到的音频帧数据缓存至新的音频队列。
91.具体地,在将当前音频队列中剩余的音频帧数据缓存至新的音频队列中之后,若新的音频队列中的音频帧数据的数量低于第二预设阈值,表征此时新的音频队列需要等待下一个音频帧数据缓存至新的音频队列中,直至在数量达到第二预设阈值时,才可以进行音频帧数据的调取与播放。
92.为了节约等待的时间,减小音频中断的时间间隔,以提高音频播放的流畅度,在将
剩余的音频帧数据缓存至新的音频队列之后,若新的音频队列中的音频帧数据低于第二预设阈值,则将等待复制的音频帧数据进行复制,将复制后的音频帧数据也缓存至新的音频队列中,以减小等待播放的时长,进而有利于提高用户的使用体验。
93.在按照上述方式,从新的音频队列中调取待输出的音频帧数据,并输出播放音频时,原音频队列中可能还缓存有部分剩余的音频帧数据,也可能未缓存有音频帧数据,但是原音频队列在创建时而产生的队列创建数据也还未被清除,为了节省无关数据占用的终端设备的内存空间,以释放资源,在步骤s102中,获取待缓存至新的音频队列中的音频数据后,还包括步骤sa1(图中未示出)和/或步骤sa2(图中未示出),其中:步骤sa1、清除当前音频队列的队列创建数据。
94.其中,队列创建数据为创建音频队列时生成的数据。将该队列创建数据从终端设备中删除,即可将对应的音频队列进行清除,由于此时不再基于当前音频队列进行音频帧数据的缓存与输出,为此当前音频队列存在的必要性较低,将当前音频队列删除,可以节约终端设备的内存空间占用。
95.步骤sa2、清除当前音频队列中缓存的音频帧数据。
96.具体地,在满足第一预设条件时,可能当前音频队列中还缓存有之前的音频帧数据未被调取,而当前音频队列中缓存的音频帧数据,一方面占用了当前音频队列的队列空间资源,另一方面该数据已经被缓存至新的音频队列或者不需要再调取播放,故而该数据相当于无关数据但也占用了终端设备的内存空间,因此,将当前音频队列中缓存的音频帧数据进行清除,有利于节省终端设备的内存空间。
97.其中,若待缓存至新的音频队列中的音频帧数据不包括该当前音频队列中缓存的音频帧数据,则在创建新的音频队列之后,即可清除该当前音频队列中缓存的音频帧数据;若待缓存至新的音频队列中的音频帧数据包括该当前音频队列中缓存的音频帧数据,则获取待缓存至新的音频队列中的音频帧数据后,再清除当前音频队列中缓存的音频帧数据。
98.值的说明的是,在同时包括步骤sa1与步骤sa2时,步骤sa2可以在步骤sa1之前执行,也可以与步骤sa1同时执行,在本技术实施例中不做限定。将原音频队列对应的队列创建数据,以及原音频队列中缓存的音频帧数据均进行消除,能够较大限度的节省内存空间。
99.上述实施例为在检测到满足第一预设条件时,即在判断出即将出现音频消失时,如何播放剩余音频的过程,而在不满足第一预设条件时,即当基于当前音频队列以正常播放音频时,该方法还可以包括步骤sb1(图中未示出)、步骤sb2(图中未示出)以及步骤sb3(图中未示出),其中:步骤sb1、从当前音频队列中调取目标音频帧数据。
100.具体地,在正常播放音频时,每次均将从当前音频队列中调取出预设数量的音频帧数据,将预设数量的音频帧数据进行播放,预设数量可以是一个,也可以是至少两个。在调取后判断是否满足第一预设条件,若满足第一预设条件,则将继续由当前音频队列中调取音频帧数据,此时调取的音频帧数据即为目标音频帧数据。例如,预设数量为1,由当前音频队列中调取并输出了第30个音频帧数据,判断出不满足第一预设条件,继续从当前音频队列中调取第31个音频帧数据,该第31个音频帧数据即为当前调取过程的目标音频帧数据;再次调取时,第32个音频帧数据即更新为目标音频帧数据。
101.步骤sb2、输出目标音频帧数据。
102.具体地,从当前音频队列中调取出目标音频帧数据后,将该目标音频帧数据输出,以播放目标音频帧数据对应的音频。
103.步骤sb3、若不满足第一预设条件且满足第二预设条件,则循环执行从当前音频队列中调取目标音频帧数据,输出目标音频帧数据,直至不满足第二预设条件或者满足第一预设条件。
104.其中,第二预设条件包括:当前已被调取的音频帧数据的总数量小于接收到的音频帧数据的总数量。
105.在将目标音频帧数据被调取后,判断该段音频是否已经全部被调取,即判断是否满足第二预设条件。
106.具体地,在获取到第一个音频帧数据时,该段音频对应的音频帧数据的总数量将被携带至终端设备中,被终端设备获取,该总数量即表征该段待播放音频的音频帧数据的总数。例如服务端发送了一段音频长度为45帧的音频帧数据,45帧即为接收到的音频帧数据的总数量。
107.在将该目标音频帧数据进行调取与输出后,若判断出当前已被调取的音频帧数据的总数量小于接收到的音频帧数据的总数量,即满足第二预设条件时,则表征输出该目标音频帧数据后,仍有部分音频帧数据未完成调取与播放。若当前已被调取的音频帧数据的数量等于接收到的音频帧数据的总数量,则表征输出该目标音频帧数据后,接收到的所有的音频帧数据全部播放完成。例如:共接收到45帧音频帧数据,在调取第44个音频帧数据后,已被调取的音频帧数据的数量为44,小于45,即表征满足第二预设条件;在调取并播放完成第44个音频帧数据后,再次由当前音频队列中调取第45个音频帧数据,调取后,已被调取的音频帧数据的数量为45,等于45,即此时不满足第二预设条件。
108.若检测到不满足第一预设条件且满足第二预设条件,即表征还未播放完成,并且正处于正常播放的过程中,则继续循环执行从当前音频队列中调取目标音频帧数据,例如,接收到音频帧数据的总数量为45,调取了第30个音频帧数据后,当前音频队列中还存在1个音频帧数据(第31个音频帧数据),则继续由当前音频队列中调取并输出第31个音频帧数据,不断循环。直至检测到满足第一预设条件时,此时将重新建立新的音频队列,从新的音频队列中缓存以及调取音频帧数据,例如调取第31个音频帧数据后,发现当前音频队列中不存在音频帧数据,即满足第一预设条件,建立新的音频队列,或者直至不满足第二预设条件,即音频帧数据全部播放完成,结束循环,例如,调取了第45个音频帧数据后,已被调取的音频帧数据的总数量等于45,满足第二预设条件,完成本段音频的播放,结束循环,不再从当前音频队列中调取音频帧数据。
109.进一步地,在当前音频队列中的剩余的音频帧数据的数量小于第一预设阈值,但大于零时,为了减小创建新的音频队列的次数,以减小中断对用户产生的不良影响,还可以在判断出当前音频队列中剩余的音频帧数据的数量小于第二预设阈值时,根据当前音频队列中的剩余的音频帧数据,确定当前待复制的音频帧数据,将该当前待复制的音频帧数据进行复制,并缓存至当前音频队列中。
110.其中,当前待复制的音频帧数据可以是根据每个剩余的音频帧数据的排列顺序,确定得到的;在一种具体的方式中,可以将剩余的音频帧数据中排列在第一个的音频帧数据作为当前待复制的音频帧数据。在另一种具体的方式中,还可以按照排列顺序,依次确定
出预设数量的音频帧数据,将每个确定出的音频帧数据均作为当前待复制的音频帧数据。例如,剩余的音频帧数据的数量为2,预设数量为1,将剩余的音频帧数据中的排在第一个音频帧数据作为当前待复制的音频帧数据。
111.另外,当前待复制的音频帧数据还可以是将每个剩余的音频帧数据均作为当前待复制的音频帧数据。例如,剩余的音频帧数据的数量为2,具体包括音频帧数据a1以及音频帧数据a2,音频帧数据a1以及音频帧数据a2均为当前待复制的音频帧数据。
112.进一步地,在每次由终端设备中调取预设数量的音频帧数据,预设数量大于等于二,且设置的第一预设阈值等于预设数量时,终端设备在判断出当前音频队列中的音频帧数据的数量不大于预设数量时,此时可以不执行创建新的音频队列的步骤,则重新确定预设数量,即重新确定每次调取的音频帧数据的数量,以减小创建新的音频队列的次数;例如,预设数量为2,当前音频队列中剩余2帧音频帧数据未输出,等于第一预设阈值(预设为2),此时将重新确定每次调取的音频帧数据的数量,而不创建新的音频队列。
113.在确定每次调取的音频帧数据的数量时,将基于当前音频队列中剩余的音频帧数据的数量确定,例如剩余的音频帧数据的数量为2,则预设数量可以设定为1;剩余的音频帧数据的数量为4,预设数量可以重新确定为2。
114.基于上述实施例,本技术实施例通过一个具体的应用场景说明音频播放的过程,参照图2,服务端开始向安装有客户端的终端设备发送一段音频长度为45的音频,并发送至终端设备中,终端设备接收的音频帧数据的总数量为45,终端设备预先创建有音频队列1,在向音频队列1中缓存了5个音频帧数据时,终端设备也完成了5个音频帧数据的调取,此时音频队列1中剩余的音频帧数据为0个,将第五个音频帧数据调取并输出后,判断出音频队列1中缓存的音频帧数据的数量为0时,即判断出满足第一预设条件,此时将重新创建一个新的音频队列,即音频队列2,并将音频队列1删除,在接收到第六个音频帧数据时,将第六个音频帧数据缓存至音频队列2中,在音频队列2中的音频帧数据的数量达到第二预设阈值后,开始从音频队列2中调取音频帧数据进行播放,当判断出音频队列2中缓存的音频帧数据的数量为0时,将再次重新创建一个音频队列3,将剩余的音频帧数据缓存在该音频队列3中,依次循环,直至将45个音频帧数据全部调取并输出完成,并将该音频对应的创建的所有音频队列的数据全部清除,以此使得音频可以正常播放完成,在声音播放完成之前,不会产生声音消失的现象。
115.上述实施例从方法流程的角度介绍一种音频播放的方法,下述实施例从虚拟模块或者虚拟单元的角度介绍了一种音频播放的装置,具体详见下述实施例。
116.参照图3,一种音频播放装置300,包括:队列创建模块301,用于当满足第一预设条件时,创建新的音频队列;数据获取模块302,用于获取待缓存至新的音频队列中的音频帧数据,并将音频帧数据缓存至新的音频队列中;数据调取模块303,用于从新的音频队列中调取待输出的音频帧数据,并输出待输出的音频帧数据;其中,第一预设条件包括以下任一项:从当前音频队列中未调取到音频帧数据;当前音频队列中剩余的音频帧数据的数量小于第一预设阈值。
117.通过采用上述技术方案,当从当前音频队列中未调取到音频帧数据,又或者当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,表征即使再往当前音频队列中缓存音频帧数据,也无法播放这些音频帧数据,因此当满足上述条件时,队列创建模块301将创建新的音频队列,并由数据获取模块302将待缓存的音频帧数据暂存到新的音频队列中,从而可以使得数据调取模块303从新的音频队列中调取音频帧数据,以继续进行播放,进而可以使得剩余的或其他的音频帧数据能够正常播放,减小了声音消失的情况出现,进一步提高了用户的使用体验。
118.本技术实施例一种可能的实现方式,数据获取模块302在获取待缓存至新的音频队列中的音频帧数据时,具体用于:若当前音频队列中存在剩余的音频帧数据,则获取剩余的音频帧数据和/或待写入音频队列的音频帧数据,作为待缓存至新的音频队列中的音频帧数据;或者,获取待写入音频队列的音频帧数据,作为待缓存至新的音频队列中的音频帧数据。
119.本技术实施例一种可能的实现方式,装置300还包括第一清除模块和/或第二清除模块,其中:第一清除模块,用于清除当前音频队列的队列创建数据;第二清除模块,用于清除当前音频队列中缓存的音频帧数据。
120.本技术实施例一种可能的实现方式,当不满足第一预设条件时,装置300还包括:正常调取模块,用于从当前音频队列中调取目标音频帧数据;正常数据模块,用于输出目标音频帧数据;正常数据模块,用于当不满足第一预设条件且满足第二预设条件时,循环执行从当前音频队列中调取目标音频帧数据,输出目标音频帧数据,直至不满足第二预设条件或者满足第一预设条件;其中,第二预设条件包括:当前已被调取的音频帧数据的总数量小于接收到的音频帧数据的总数量。
121.本技术实施例一种可能的实现方式,队列创建模块301在创建新的音频队列时,具体用于:确定新的音频队列的队列长度,队列长度用于表征新的音频队列缓存音频帧数据的最大数量;基于队列长度,创建新的音频队列。
122.本技术实施例一种可能的实现方式,队列创建模块301在确定新的音频队列的队列长度时,具体用于:确定新的音频队列的队列长度为预设长度;或者,根据当前音频队列的队列长度,确定新的音频队列的队列长度;或者,根据接收到的音频帧数据的总数量,确定新的音频队列的队列长度;或者,根据待缓存至音频队列的音频帧数据的总数量,确定新的音频队列的队列长度,音频队列为新的音频队列。
123.本技术实施例一种可能的实现方式,数据调取模块303在从新的音频队列中调取待输出的音频帧数据时,具体用于:
当新的音频队列中缓存的音频帧数据的数量大于第二预设阈值时,从新的音频队列中调取待输出的音频帧数据。
124.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
125.本技术实施例还从实体装置的角度介绍了一种终端设备,如图4所示,图4所示的终端设备400包括:处理器401和存储器403。其中,处理器401和存储器403相连,如通过总线402相连。可选地,终端设备400还可以包括收发器404。需要说明的是,实际应用中收发器404不限于一个,该终端设备400的结构并不构成对本技术实施例的限定。
126.处理器401可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器401也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
127.总线402可包括一通路,在上述组件之间传送信息。总线402可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
128.存储器403可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
129.存储器403用于存储执行本技术方案的应用程序代码,并由处理器401来控制执行。处理器401用于执行存储器403中存储的应用程序代码,以实现前述方法实施例所示的内容。
130.其中,终端设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端等。图4示出的终端设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
131.本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。在本技术实施例中,当从当前音频队列中未调取到音频帧数据,又或者当前音频队列中剩余的音频帧数据的数量小于第一预设阈值时,表征即使再往当前音频队列中缓存音频帧数
据,也无法播放这些音频帧数据,因此当满足上述条件时,创建新的音频队列,并将待缓存的音频帧数据暂存到新的音频队列中,从而可以从新的音频队列中调取音频帧数据,以继续进行播放,进而可以使得剩余的或其他的音频帧数据能够正常播放,减小了声音消失的情况出现,进一步提高了用户的使用体验。
132.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
133.以上仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1