本发明涉及广播,尤其涉及一种音频同步方法、音频播放系统和存储介质。
背景技术:
1、在现有技术中,在同一项目当中所有终端播放同一个音频,通常能够实现人耳无法辨别是否存在声音的差异与延时;但是倘若在该项目中需要接入其他项目/型号的终端,不同终端之间的执行规则不同,则会有可能导致所有终端播放同一个音频的时候,产生播放声音延迟的问题。
技术实现思路
1、本发明提供了一种音频同步方法、音频播放系统和存储介质,以实现降低不同执行规则的终端播放同一个音频的播放声音延迟。
2、本发明提供了一种音频同步方法,应用于音频播放系统,所述音频播放系统包括至少两个音频终端;
3、所述方法包括:
4、响应于将播放任务下发到各所述音频终端的操作,根据播放任务信息,获得任务启动的初始时间、所述播放任务的音频播放总时长和播放音频,计算各所述音频终端的延时数据;对比各所述音频终端的延时数据,将播放延时最大的音频终端作为第一音频终端;计算其他音频终端与所述第一音频终端的延时差值作为各所述音频终端的延时发送时长;
5、根据所述播放任务信息,计算所述播放任务的每帧音频时长;根据所述播放任务的每帧音频时长和各所述音频终端的延时发送时长,将所述播放音频的预设帧发送到对应音频终端进行播放。
6、进一步地,所述根据播放任务信息,计算各所述音频终端的延时数据之前,还包括:
7、读取播放任务的音频文件信息,获得所述播放任务的音频数据和音频格式;
8、将播放任务启动的初始时间记录为初始时间,将所述音频数据、所述音频格式和所述初始时间记录在播放任务信息中。
9、进一步地,所述计算各所述音频终端的延时数据,具体为:
10、根据播放任务的音频数据和音频格式,计算所述播放任务的每秒音频的数据大小;
11、根据各所述音频终端的音频缓冲区大小和所述播放任务的每秒音频的数据大小,得到各所述音频终端所需的延时;所述延时为各所述音频终端从初始时间到开始播放时间的距离;
12、所述延时的表达式为:
13、
14、其中,tms为第二音频终端所需的延时,audbuff为所述第二音频终端的音频缓冲区大小,mediasize为所述播放任务的每秒音频的数据大小。
15、进一步地,所述计算所述播放任务的每秒音频的数据大小,具体为:
16、若播放任务的音频格式为wav,则计算所述播放任务的每秒音频的数据大小的表达式为:
17、
18、其中,samplerate为音频数据的采样率,bitdeep为音频数据的音频采样精度;numchannel为音频数据的音频声道;
19、若播放任务的音频格式为mp3或者aac,则计算所述播放任务的每秒音频的数据大小的表达式为:
20、
21、其中,bitrate为音频数据的比特率。
22、进一步地,所述计算其他音频终端与所述第一音频终端的延时差值作为各所述音频终端的延时发送时长,具体为:
23、各所述音频终端的延时发送时长的表达式为:
24、delayi=t1-ti;
25、delayi为第i个音频终端的延时发送时长,t1为第一音频终端的延时,ti为第i个音频终端的延时;
26、进一步地,所述根据所述播放任务信息,计算所述播放任务的每帧音频时长,具体为:
27、若播放任务的音频格式为mp3或者aac,则所述播放任务的每帧音频时长的表达式为:
28、
29、若播放任务的音频格式为wav,则所述播放任务的每帧音频时长的表达式为:
30、
31、其中,frameduration为每帧音频时长,framesize为每帧音频大小,mediasize为每秒音频的数据大小,bitrate为播放任务的比特率。
32、进一步地,根据所述播放任务的每帧音频时长和各所述音频终端的延时发送时长,将所述播放音频的预设帧发送到对应音频终端进行播放,具体为:
33、将每帧播放音频依次放进内存队列中;
34、从初始时间开始计时,从初始时间开始逐帧向第一音频终端发送播放音频帧;从各所述音频终端的延时发送时长开始逐帧向对应的音频终端发送播放音频帧;
35、当各所述音频终端的已播放时长满足预设条件,则从所述内存队列中获取下一帧播放音频帧发送到对应的音频终端中,并将已发送帧从内存队列中移除。
36、进一步地,当各所述音频终端的已播放时长满足预设条件,则从所述内存队列中获取下一帧播放音频帧发送到对应的音频终端中,并将已发送帧从内存队列中移除,具体为:
37、若当前时间大于初始时间、各所述音频终端的已播放时长和延时发送时长之和,则将下一帧播放音频帧发送到对应的音频终端中,并将已发送帧从内存队列中移除;所述当前时间从所述初始时间开始计时。
38、由于音频存在采样率、位深、声道、码率等因素影响每帧音频数据大小,因此对于同一时长的音频数据,其数据大小差异可能非常之大,因此若终端间存在其音频缓冲大小差异,无法简单的通过增加固定延时以达到所有音频所有终端同步播放的目的。
39、作为优选方案,本发明考虑到在各类终端当中其设置的音频缓冲大小与播放延时的差异,通过在调度音频流时根据终端缓冲和播放延时规则计算出相应的处理时间,将播放音频按照对应的处理时间分别发送到对应的音频终端中进行播放,以到达各类终端音频同步播放,降低不同执行规则的终端播放同一个音频的播放声音延迟。
40、本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
41、相应地,本发明还提供一种音频播放系统,包括:控制模块和音频终端模块;所述音频终端模块包括至少两个音频终端;所述控制模块包括读取单元和调度单元;
42、所述读取单元用于响应于将播放任务下发到各所述音频终端的操作,根据播放任务信息,获得任务启动的初始时间、所述播放任务的音频播放总时长和播放音频,计算各所述音频终端的延时数据;对比各所述音频终端的延时数据,将播放延时最大的音频终端作为第一音频终端;计算其他音频终端与所述第一音频终端的延时差值作为各所述音频终端的延时发送时长;
43、所述调度单元用于根据所述播放任务信息,计算所述播放任务的每帧音频时长;根据所述播放任务的每帧音频时长和各所述音频终端的延时发送时长,将所述播放音频的预设帧发送到对应音频终端进行播放。
44、相应地,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如本
技术实现要素:
所述的一种音频同步方法。
1.一种音频同步方法,其特征在于,应用于音频播放系统,所述音频播放系统包括至少两个音频终端;
2.如权利要求1所述的一种音频同步方法,其特征在于,所述根据播放任务信息,计算各所述音频终端的延时数据之前,还包括:
3.如权利要求2所述的一种音频同步方法,其特征在于,所述计算各所述音频终端的延时数据,具体为:
4.如权利要求3所述的一种音频同步方法,其特征在于,所述计算所述播放任务的每秒音频的数据大小,具体为:
5.如权利要求1所述的一种音频同步方法,其特征在于,所述计算其他音频终端与所述第一音频终端的延时差值作为各所述音频终端的延时发送时长,具体为:
6.如权利要求1所述的一种音频同步方法,其特征在于,所述根据所述播放任务信息,计算所述播放任务的每帧音频时长,具体为:
7.如权利要求6所述的一种音频同步方法,其特征在于,根据所述播放任务的每帧音频时长和各所述音频终端的延时发送时长,将所述播放音频的预设帧发送到对应音频终端进行播放,具体为:
8.如权利要求7所述的一种音频同步方法,其特征在于,所述当各所述音频终端的已播放时长满足预设条件,则从所述内存队列中获取下一帧播放音频帧发送到对应的音频终端中,并将已发送帧从内存队列中移除,具体为:
9.一种音频播放系统,其特征在于,包括:控制模块和音频终端模块;所述音频终端模块包括至少两个音频终端;所述控制模块包括读取单元和调度单元;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1至8中任意一项所述的一种音频同步方法。