掌桥专利:专业的专利平台
掌桥专利
首页

一种音频播放方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:49:09


一种音频播放方法、装置、电子设备及存储介质

技术领域

本发明涉及音频处理领域,特别涉及一种音频播放方法、装置、电子设备及存储介质。

背景技术

随着串流技术及云电脑技术的不断发展,云游戏能够在远程终端上运行游戏,并通过串流技术在本地终端进行游戏操作,以实现在较低配置的本地终端上游玩高配置游戏的效果。相关技术中,云游戏的音频数据需由远程终端生成并发送至本地终端的音频软件,并由本地终端的声卡播放,然而受到网络阻塞的影响,本地终端存在无法接收音频数据包或是接收到过量的音频数据包的情况,进而导致声卡无音频数据可供播放,或是声卡需要处理大量的音频数据包,导致播放延迟,影响云游戏的用户体验。

发明内容

本发明的目的是提供一种音频播放方法、装置、电子设备及存储介质,可有效控制总音频数量,缓解音频播放延迟,并可确保声卡缓存存有足量的、可供播放的音频帧,最终可有效提升云游戏音频播放体验。

为解决上述技术问题,本发明提供一种音频播放方法,包括:

当开始音频处理时,确定声卡缓存的第一音频帧数量以及音频源设备发送至音频软件缓存的第二音频帧数量;

利用所述第一音频帧数量与所述第二音频帧数量计算得到总音频帧数量,并在所述总音频帧数量大于第一阈值时,对所述音频软件缓存中的音频帧进行丢帧操作;

当完成所述丢帧操作且所述第一音频帧数量小于第二阈值时,进行将所述音频软件缓存中的音频帧发送至所述声卡缓存的发送操作;

当完成所述发送操作后,结束所述音频处理,并利用所述声卡缓存中的音频帧进行播放。

可选地,所述对所述音频软件缓存中的音频帧进行丢帧操作,包括:

根据所述音频软件缓存中的音频帧的接收顺序,将所述音频软件缓存中最晚接收的音频帧进行丢帧,并更新所述第二音频帧数量及所述总音频帧数量;

判断所述第二音频帧数量是否到达音频帧保留值;

若是,则判定完成所述丢帧操作;

若否,则继续执行所述根据所述音频软件缓存中的音频帧的接收顺序,将所述音频软件缓存中最晚接收的音频帧进行丢帧的步骤,直至所述总音频帧数量小于等于所述第一阈值时,判定完成所述丢帧操作。

可选地,所述进行将所述音频软件缓存中的音频帧发送至所述声卡缓存的发送操作,包括:

根据所述接收顺序,将所述音频软件缓存中最早接收的音频帧进行发送,并更新所述第二音频帧数量及音频帧发送数量;

判断所述第二音频帧数量是否到达所述音频帧保留值;

若是,则判定完成所述发送操作;

若否,则继续执行所述根据所述接收顺序,将所述音频软件缓存中最早接收的音频帧进行发送的步骤,直至所述音频帧发送数量等于第三阈值时,判定完成所述发送操作。

可选地,所述结束所述音频处理,包括:

记录结束时刻,并将所述声卡缓存中的第一音频帧数量设置为历史音频帧数量;

相应的,所述当开始音频处理时,确定声卡缓存的第一音频帧数量,包括:

确定开始时刻,并利用利用预存的音频帧格式数据计算所述结束时刻至所述开始时刻的音频帧播放数量;

利用所述历史音频帧数量与所述音频帧播放数量计算得到所述第一音频帧数量。

可选地,在开始音频处理之前,还包括:

当与所述音频源设备建立连接时,向所述音频源设备获取所述音频帧格式数据。

本发明还提供一种音频播放装置,包括:

数量确定模块,用于当开始音频处理时,确定声卡缓存的第一音频帧数量以及音频源设备发送至音频软件缓存的第二音频帧数量;

丢帧模块,用于利用所述第一音频帧数量与所述第二音频帧数量计算得到总音频帧数量,并在所述总音频帧数量大于第一阈值时,对所述音频软件缓存中的音频帧进行丢帧操作;

发送模块,用于当完成所述丢帧操作且所述第一音频帧数量小于第二阈值时,进行将所述音频软件缓存中的音频帧发送至所述声卡缓存的发送操作;

播放模块,用于当完成所述发送操作后,结束所述音频处理,并利用所述声卡缓存中的音频帧进行播放。

可选地,所述丢帧模块,包括:

丢帧子模块,用于根据所述音频软件缓存中的音频帧的接收顺序,将所述音频软件缓存中最晚接收的音频帧进行丢帧,并更新所述第二音频帧数量及所述总音频帧数量;

第一判断模块,用于判断所述第二音频帧数量是否到达音频帧保留值;

第一处理模块,用于若是,则判定完成所述丢帧操作;

第二处理模块,用于若否,则继续执行所述根据所述音频软件缓存中的音频帧的接收顺序,将所述音频软件缓存中最晚接收的音频帧进行丢帧的步骤,直至所述总音频帧数量小于等于所述第一阈值时,判定完成所述丢帧操作。

可选地,所述发送模块,包括:

发送子模块,用于根据所述接收顺序,将所述音频软件缓存中最早接收的音频帧进行发送,并更新所述第二音频帧数量及音频帧发送数量;

第二判断子模块,用于判断所述第二音频帧数量是否到达所述音频帧保留值;

第三处理模块,用于若是,则判定完成所述发送操作;

第四处理模块,用于若否,则继续执行所述根据所述接收顺序,将所述音频软件缓存中最早接收的音频帧进行发送的步骤,直至所述音频帧发送数量等于第三阈值时,判定完成所述发送操作。

本发明还提供一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述的音频播放方法。

本发明还提供一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上述所述的音频播放方法。

本发明提供一种音频播放方法,包括:当开始音频处理时,确定声卡缓存的第一音频帧数量以及音频源设备发送至音频软件缓存的第二音频帧数量;利用所述第一音频帧数量与所述第二音频帧数量计算得到总音频帧数量,并在所述总音频帧数量大于第一阈值时,对所述音频软件缓存中的音频帧进行丢帧操作;当完成所述丢帧操作且所述第一音频帧数量小于第二阈值时,进行将所述音频软件缓存中的音频帧发送至所述声卡缓存的发送操作;当完成所述发送操作后,结束所述音频处理,并利用所述声卡缓存中的音频帧进行播放。

可见,本方法首先确定了声卡缓存及音频软件缓存中的总音频数量,并在总音频数量大于第一阈值时,对音频缓存中的音频帧进行丢帧操作,可有效控制声卡缓存及音频软件缓存中的总音频数量,进而确保声卡能够高效处理音频帧的播放,避免接收到过量的音频数据包对音频播放的干扰;同时,本方法在完成丢帧操作后,还对声卡缓存的第一音频帧数量进行判定,并在第一音频帧数量小于第二阈值时,将音频软件缓存中的音频帧发送至声卡缓存,可有效确保声卡缓存中始终存有足量的音频帧,最终不仅有效缓解网络阻塞对音频播放的延迟影响,也可有效缓解声卡缓存中无音频数据对音频播放的影响,可有效提升游戏音频播放体验。本发明还提供一种音频播放装置、电子设备及存储介质,具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种音频播放方法的流程图;

图2为本发明实施例所提供的音频处理对应时刻的示意图;

图3为本发明实施例所提供的一种音频播放装置的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

相关技术中,云游戏的音频数据需由远程终端生成并发送至本地终端的音频软件,并由本地终端的声卡播放,然而受到网络阻塞的影响,本地终端存在无法接收音频数据包或是接收到过量的音频数据包的情况,进而导致声卡无音频数据可供播放,或是声卡需要处理大量的音频数据包,导致播放延迟,影响云游戏的用户体验。有鉴于此,本发明提供一种音频播放方法,可有效控制总音频数量,缓解音频播放延迟,并可确保声卡缓存存有足量的、可供播放的音频帧,最终可有效提升云游戏音频播放体验。请参考图1,图1为本发明实施例所提供的一种音频播放方法的流程图,该方法可以包括:

S101、当开始音频处理时,确定声卡缓存的第一音频帧数量以及音频源设备发送至音频软件缓存的第二音频帧数量。

需要说明的是,本发明实施例并不限定确定声卡缓存中的第一音频帧数量或音频软件缓存的第二音频帧数量的具体方式,例如可对声卡缓存和音频软件缓存中的音频帧进行统计,得到对应的音频帧数量,也可以维护一个单独的计数器,并在音频帧数量发生变化时(例如丢帧、发送、播放等),对该计数器进行实时更新。考虑第一种确定音频帧数量的方式需要在每次进行音频处理时都进行统计,将会降低音频统计的效率,而维护计数器的方式将能够高效确定音频帧数量,因此在本发明实施例中可通过维护计数器的方式确定音频帧数量。进一步,考虑到音频软件缓存用于存放由音频源设备发送的音频帧数据,而在进行音频帧数据传输时,受到网络因素的影响,无法确保音频帧数据稳定传输,即无法确定音频帧数据的传输速率。在此情况中,利用维护计数器的方式确定音频软件缓存的音频帧数量并不准确,因此对于音频软件缓存而言可通过向音频软件缓存发送查询指令,或是直接在音频软件缓存中进行统计确定第二音频帧数量。而对于声卡缓存而言,由于将音频软件缓存中的音频帧发送至声卡缓存的发送动作在本发明实施例中为可控动作,即可具体控制发送的音频帧数量,因此利用维护计数器的方式可快速且准确地确定声卡缓存中的第一音频帧数量,进而对于声卡缓存而言,可通过维护计数器的方式确定第一音频帧数量。

进一步,需要说明的是,在开始音频处理时,音频软件缓存中的音频帧已为完成解码操作的音频帧。本发明实施例并不限定具体的解码方式,具体可参考解码的相关技术。本发明实施例也不限定音频源设备发送音频帧数据的具体方式及接收方式,具体可参考云电脑、音频串流等相关技术。

S102、利用第一音频帧数量与第二音频帧数量计算得到总音频帧数量,并在总音频帧数量大于第一阈值时,对音频软件缓存中的音频帧进行丢帧操作。

在本发明实施例中,为了确保声卡能够高效处理音频帧的播放,利用第一音频帧数量及第二音频帧数量进行求和计算得到了总音频帧数量,并在音频帧数量大于第一阈值时,对音频软件缓存中的音频帧进行丢帧操作,可有效控制声卡缓存及音频软件缓存中的音频帧总数量,进而确保两缓存中均不出现过量的、会对播放造成延迟影响的音频帧,可有效缓解由于网路阻塞导致音频软件接收到过量的音频帧数据对播放的延迟影响。需要说明的是,本发明实施例并不限定第一阈值的具体数值,可根据实际应用需求进行设定。

进一步,本发明实施例并不限定具体的丢帧操作,例如可首先确定丢帧数量,并直接将该丢帧数量的音频帧进行丢弃,当然也可循环丢弃单帧音频帧,并在每个循环中不断更新第二音频帧数量及总音频帧数量,直至总音频帧数量小于等于第一阈值时判定完成丢帧操作。为了更加准确地进行丢帧操作,在本发明实施例中,可采用循环丢弃单帧音频帧进行丢帧操作。可以理解的是,可根据音频帧的接收顺序,将音频软件缓存中最晚接收的音频帧进行丢帧。进一步,考虑到循环丢弃单帧音频帧具体丢弃的音频帧来自音频软件缓存,而退出条件为总音频帧数量小于等于第一阈值,然而存在音频软件缓存中的音频帧较少而声卡缓存中的音频帧较多的情况,即,即便音频软件缓存的所有音频帧全部丢弃,也无法确定总音频帧数量小于等于第一阈值,此时也可在每一循环中,对音频软件缓存的第二音频帧数量进行判断,当第二音频帧数量为0时判定完成丢帧操作。当然,为了确保音频能够有效拼接,也可设置一个音频帧保留值,以保证音频软件缓存中至少能够保留数量为音频帧保留值的音频帧,换句话说,可在每一循环中,对音频软件缓存的第二音频帧数量进行判断,当第二音频帧数量到达该音频保留值时判定完成丢帧操作。需要说明的是,本发明实施例并不限定具体的音频保留值,可根据实际应用需求进行设置,在一种情况中,可将音频保留值设为1,即音频软件缓存中至少存有一帧音频帧。

在一种可能的情况中,对音频软件缓存中的音频帧进行丢帧操作,包括:

步骤11:根据音频软件缓存中的音频帧的接收顺序,将音频软件缓存中最晚接收的音频帧进行丢帧,并更新第二音频帧数量及总音频帧数量;

步骤12:判断第二音频帧数量是否到达音频帧保留值;若是,则进入步骤13;若否,则进入步骤14;

步骤13:判定完成丢帧操作;

步骤14:则继续执行根据音频软件缓存中的音频帧的接收顺序,将音频软件缓存中最晚接收的音频帧进行丢帧的步骤,直至总音频帧数量小于等于第一阈值时,判定完成丢帧操作。

可以理解的是,在将音频软件缓存中最晚接收的音频帧进行丢帧后,便可对第二音频帧数量及总音频帧数量均减一,以完成数量更新。

S103、当完成丢帧操作且第一音频帧数量小于第二阈值时,进行将音频软件缓存中的音频帧发送至声卡缓存的发送操作。

在本发明实施例中,为了确保声卡缓存中存有足量的、可供播放的音频帧,在完成丢帧操作后,还对第一音频帧的数量进行判定,并在第一音频帧数量小于表示播放最低限额的第二阈值时,将音频软件缓存中的音频帧发送至声卡缓存。需要说明的是,本发明实施例并不限定第二阈值的具体数值,用户可根据实际应用需求进行设定。

进一步,本发明实施例并不限定具体的发送操作,例如可首先确定发送数量,并直接将该发送数量的音频帧进行发送,当然也可循环发送单帧音频帧。为了更加准确地进行发送操作,在本发明实施例中,可采用循环发送单帧音频帧进行发送操作。可以理解的是,可根据音频帧的接收顺序,将音频软件缓存中最早接收的音频帧进行发送。进一步,本发明实施例并不限定退出单帧音频帧发送循环的退出条件,例如可实时更新第二音频帧数量,并在第二音频帧数量到达上述音频保留值或是为空时退出循环;当然,也可以统计音频帧发送数量,并在音频帧发送数量达到表示音频播放上限的第三阈值时退出循环。为了确保声卡缓存中的音频帧适量,同时确保音频软件缓存中保留必要的音频帧,在本发明实施例中,退出单帧音频帧发送循环的退出条件可以为第二音频帧数量到达音频保留值或音频帧发送数量达到表示音频播放上限的第三阈值。需要说明的是,本发明实施例并不限定第三阈值的具体数值,可根据实际应用需求进行设置。进一步,可以理解的是,可根据音频帧的接收顺序,将音频软件缓存中最早接收的音频帧进行发送。

在一种可能的情况中,进行将音频软件缓存中的音频帧发送至声卡缓存的发送操作,包括:

步骤21:根据接收顺序,将音频软件缓存中最早接收的音频帧进行发送,并更新第二音频帧数量及音频帧发送数量;

步骤22:判断第二音频帧数量是否到达音频帧保留值;若是,则进入步骤23;若否,则进入步骤24;

步骤23:则判定完成发送操作;

步骤24:则继续执行根据接收顺序,将音频软件缓存中最早接收的音频帧进行发送的步骤,直至音频帧发送数量等于第三阈值时,判定完成发送操作。

S104、当完成发送操作后,结束音频处理,并利用声卡缓存中的音频帧进行播放。

需要说明的是,在每次结束音频处理并在开始下一次音频处理之间存在时间间隔,而在该时间间隔中声卡利用声卡缓存中的音频帧进行了播放,即声卡缓存的第一音频帧数量发生了减少。当采用维护计数器的方式确定第一音频帧数量时,为了确保第一音频帧数量准确,需要计算该时间间隔之间的音频播放数量。

在一种可能的情况中,结束音频处理,包括:

步骤31:记录结束时刻,并将声卡缓存中的第一音频帧数量设置为历史音频帧数量。

相应的,当开始音频处理时,确定声卡缓存的第一音频帧数量,包括:

步骤41:确定开始时刻,并利用利用预存的音频帧格式数据计算结束时刻至开始时刻的音频帧播放数量;

步骤42:利用历史音频帧数量与音频帧播放数量计算得到第一音频帧数量。

需要说明的是,本发明实施例并不限定具体的音频帧格式数据,只要该音频帧格式数据可计算得到单位时间内的音频帧播放数量,进而可确定结束时刻值开始时刻的音频帧播放数量即可。在一种可能的情况中,音频帧格式数据可包括音频声道数、音频位深、音频采样率计算,而单位时间内的音频帧播放数量L=音频声道数*音频位深*音频采样率*单位时间。

进一步,需要说明的是,本发明实施例并不限定音频帧格式数据的设置方式,例如可人工设置并保存于本地,也可以向音频源设备获取。考虑到不同音频源设备可能带有不同的音频帧格式数据,因此音频帧格式数据可通过向音频源设备获取的方式设置。

在一种可能的情况中,在开始音频处理之前,还包括:

步骤51:当与音频源设备建立连接时,向音频源设备获取音频帧格式数据。

基于上述实施例,本方法首先确定了声卡缓存及音频软件缓存中的总音频数量,并在总音频数量大于第一阈值时,对音频缓存中的音频帧进行丢帧操作,可有效控制声卡缓存及音频软件缓存中的总音频数量,进而确保声卡能够高效处理音频帧的播放,避免接收到过量的音频数据包对音频播放的干扰;同时,本方法在完成丢帧操作后,还对声卡缓存的第一音频帧数量进行判定,并在第一音频帧数量小于第二阈值时,将音频软件缓存中的音频帧发送至声卡缓存,可有效确保声卡缓存中始终存有足量的音频帧,最终不仅有效缓解网络阻塞对音频播放的延迟影响,也可有效缓解声卡缓存中无音频数据对音频播放的影响,可有效提升游戏音频播放体验。

下面基于具体的时间轴示意图,对上述音频播放方法进行具体描述。请参考图2,图2为本发明实施例所提供的音频处理对应时刻的示意图。对于第i次音频处理,具体的流程如下:

1、在第i个处理循环中,主机端开始丢帧操作的时刻记为

2、设定音频缓存的丢帧阈值为T1(第一阈值),音频播放的较低阈值为T2(第二阈值),音频播放的较高阈值为T3(第三阈值)。

3、本系统中的音频软件缓存设为缓存A,声卡缓存设为缓存B。缓存A中数据记为DA,缓存B中数据记为DB。第i个处理循环中,开始丢帧时缓存B中的数据量记为

4、获取丢帧完毕后的缓存A中帧数,记为

5、若

6、在第i个处理循环结束后,根据接收到的声卡里的音频数据进行播放。

下面对本发明实施例提供的一种音频播放装置、电子设备及存储介质进行介绍,下文描述的音频播放装置、电子设备及存储介质与上文描述的音频播放方法可相互对应参照。

请参考图3,图3为本发明实施例所提供的一种音频播放装置的结构框图,该装置包括:

数量确定模块301,用于当开始音频处理时,确定声卡缓存的第一音频帧数量以及音频源设备发送至音频软件缓存的第二音频帧数量;

丢帧模块302,用于利用第一音频帧数量与第二音频帧数量计算得到总音频帧数量,并在总音频帧数量大于第一阈值时,对音频软件缓存中的音频帧进行丢帧操作;

发送模块303,用于当完成丢帧操作且第一音频帧数量小于第二阈值时,进行将音频软件缓存中的音频帧发送至声卡缓存的发送操作;

播放模块304,用于当完成发送操作后,结束音频处理,并利用声卡缓存中的音频帧进行播放。

可选地,丢帧模块302,可以包括:

丢帧子模块,用于根据音频软件缓存中的音频帧的接收顺序,将音频软件缓存中最晚接收的音频帧进行丢帧,并更新第二音频帧数量及总音频帧数量;

第一判断模块,用于判断第二音频帧数量是否到达音频帧保留值;

第一处理模块,用于若是,则判定完成丢帧操作;

第二处理模块,用于若否,则继续执行根据音频软件缓存中的音频帧的接收顺序,将音频软件缓存中最晚接收的音频帧进行丢帧的步骤,直至总音频帧数量小于等于第一阈值时,判定完成丢帧操作。

可选地,发送模块303,可以包括:

发送子模块,用于根据接收顺序,将音频软件缓存中最早接收的音频帧进行发送,并更新第二音频帧数量及音频帧发送数量;

第二判断子模块,用于判断第二音频帧数量是否到达音频帧保留值;

第三处理模块,用于若是,则判定完成发送操作;

第四处理模块,用于若否,则继续执行根据接收顺序,将音频软件缓存中最早接收的音频帧进行发送的步骤,直至音频帧发送数量等于第三阈值时,判定完成发送操作。

可选地,播放模块304,可以包括:

结束时刻设置子模块,用于记录结束时刻,并将声卡缓存中的第一音频帧数量设置为历史音频帧数量;

相应的,数量确定模块301,可以包括:

开始时刻设置子模块,用于确定开始时刻,并利用利用预存的音频帧格式数据计算结束时刻至开始时刻的音频帧播放数量;

数量确定子模块,用于利用历史音频帧数量与音频帧播放数量计算得到第一音频帧数量。

可选地,该装置还可以包括:

获取模块,用于当与音频源设备建立连接时,向音频源设备获取音频帧格式数据。

本发明实施例还提供一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上述的音频播放方法的步骤。

由于电子设备部分的实施例与音频播放方法部分的实施例相互对应,因此电子设备部分的实施例请参见音频播放方法部分的实施例的描述,这里暂不赘述。

本发明实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的音频播放方法的步骤。

由于存储介质部分的实施例与音频播放方法部分的实施例相互对应,因此存储介质部分的实施例请参见音频播放方法部分的实施例的描述,这里暂不赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种音频播放方法、装置、电子设备及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

相关技术
  • 音频播放方法、音频播放装置、电子设备和可读存储介质
  • 一种音频播放方法、装置、电子设备及存储介质
技术分类

06120113059313