一种多路音频混音方法及装置与流程

文档序号:13983675阅读:1476来源:国知局
一种多路音频混音方法及装置与流程

本发明实施例涉及音视频混音技术领域,尤其涉及一种多路音频混音方法及装置。



背景技术:

随着教育、医疗等行业的发展,实时音视频交互得到越来越广泛的应用,多路音频混音的需求越来越多,同时对音频混音的实时性和同步性要求也越来越高。

对于单纯使用软件混音来说,由于网络传输延时及设备软件编解码处理性能差异,多路解码音频数据输出会有一定的时间差,因此,存在音频数据先后抵达混音模块的情况,即需要混音的各路音频数据不是同时到达混音模块的。此时,如果混音模块不等待延时到达的音频数据,而直接进行混音,则本该当前时间输出的声音可能推迟到下一秒才输出,即导致音频数据出现延迟、临时卡顿,进而导致混音不同步问题;如果混音模块等待所有音频数据到达后再进行混音,那么就会存在1秒输出音频数据帧数不够的情况,即会导致掉帧、帧累积现象,达不到实时的效果。上述混音不同步、不实时导致的最终结果,一方面是音频接收端回放的音频模糊不清或断断续续,严重影响多方间的音频对话;另一方面是,由于音频帧率输出不稳定,且与音频采样实际采样率(或帧率)不一致,致使后续音视频录像出现音视频不同步问题,无法记录音视频交互过程的真实情况。因此,如何实现音频混音的同步性和实时性至关重要。



技术实现要素:

本发明实施例提供了一种多路音频混音方法及装置,提高了多路音频混音的实时性和同步性。

第一方面,本发明实施例提供了一种多路音频混音方法,所述方法包括:

基于初始取帧频率获取多路待混音音频数据,并记录当前时刻;

当到达预设混音时刻时,检查待混音音频数据是否齐全;

若待混音的音频数据已经齐全,则对待混音音频数据进行混音操作,否则,开始等待;

当等待的时间达到设定时间时,进行混音操作,并对当前已完成混音的音频数据帧数进行记录;

根据记录的当前已完成混音的音频数据帧数、开始等待的时刻以及预设时间内需要完成混音的音频数据帧数调整取帧频率;

在预设时刻之前,基于调整后的取帧频率获取多路待混音音频数据且当到达预设混音时刻时直接进行混音操作。

进一步地,当到达预设时刻时,将取帧频率调整回初始取帧频率。

进一步地,开始等待时还包括:

置位等待标志位。

进一步地,所述方法还包括:

当到达预设时刻时,清零所述等待标志位以及记录的当前已完成混音的音频数据帧数。

进一步地,对待混音音频数据进行混音操作,包括:

通过线性叠加混音算法对所述待混音音频数据进行混音操作。

第二方面,本发明实施例还提供了一种多路音频混音装置,所述装置包括:

第一获取模块,用于基于初始取帧频率获取多路待混音音频数据,并记录当前时刻;

检查模块,用于当到达预设混音时刻时,检查待混音音频数据是否齐全;

混音模块,用于若待混音的音频数据已经齐全,则对待混音音频数据进行混音操作,或者当等待的时间达到设定时间时,进行混音操作,或者对基于调整后的取帧频率获取的多路待混音音频数据进行混音操作;

等待模块,用于若待混音的音频数据不齐全,开始等待;

记录模块,进行混音操作的同时用于对当前已完成混音的音频数据帧数进行记录;

调整模块,用于根据记录的当前已完成混音的音频数据帧数、开始等待的时刻以及预设时间内需要完成混音的音频数据帧数调整取帧频率;

第二获取模块,用于在预设时刻之前,基于调整后的取帧频率获取多路待混音音频数据。

进一步地,所述调整模块还用于当到达预设时刻时,将取帧频率调整回初始取帧频率。

进一步地,所述装置还包括:

置位模块,用于开始等待时置位等待标志位。

进一步地,所述装置还包括:

清零模块,用于当到达预设时刻时,清零所述等待标志位以及记录的当前已完成混音的音频数据帧数。

进一步地,所述混音模块具体用于通过线性叠加混音算法对所述待混音音频数据进行混音操作。

本发明实施例提供的一种多路音频混音方法及装置,通过基于初始取帧频率获取多路待混音音频数据,并记录当前时刻;当到达预设混音时刻时,检查待混音音频数据是否齐全;若待混音的音频数据已经齐全,则对待混音音频数据进行混音操作,否则,开始等待;当等待的时间达到设定时间时,进行混音操作,并对当前已完成混音的音频数据帧数进行记录;根据记录的当前已完成混音的音频数据帧数、开始等待的时刻以及预设时间内需要完成混音的音频数据帧数调整取帧频率;在预设时刻之前,基于调整后的取帧频率获取多路待混音音频数据且当到达预设混音时刻时直接进行混音操作的技术手段,提高了多路音频混音的实时性和同步性。

附图说明

图1是本发明实施例一提供的一种多路音频混音方法流程示意图;

图2是本发明实施例一提供的一种多路音频混音方法流程示意图;

图3是本发明实施例二提供的一种多路音频混音装置结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各项步骤的顺序可以被重新安排。当其步骤完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1为本发明实施例一提供的一种多路音频混音方法流程示意图,该方法可以适用于对多路音频进行混音的情况,可通过软件和/或硬件的方式实现。具体参见图1所示,所述方法具体包括如下步骤:

步骤110、基于初始取帧频率获取多路待混音音频数据,并记录当前时刻。

在混音系统中,通常通过采集卡获取多路的音频数据,获取的音频数据通常有两种形式,一种是原始音频数据,另一种是编码后的音频数据,对于原始音频数据则可以直接由混音模块进行混音操作,对于编码后的音频数据需要进行一次解码操作,然后混音模块再对解码后的音频数据进行混音操作。

初始取帧频率=采样频率/采样点数,根据设定的采样频率和采样点数计算得到。所述记录当前时刻可以是记录当前的物理时间,或者直接将当前时刻作为0进行第一次记录,用于表示所述混音方法程序开始执行的初始时间。

步骤120、当到达预设混音时刻时,检查待混音音频数据是否齐全。

所述预设混音时刻具体是:根据采集卡对音频数据的采样频率和采样点数计算出1秒钟采集的音频数据帧数即帧率,进而计算出每帧音频数据之间的时间间隔,混音模块按照相邻两帧音频数据之间的时间间隔定时获取各路音频数据并进行混音操作,因此所述预设混音时刻具体为音频数据帧间隔时间。

帧率=采样频率/采样点数,例如帧率为5帧/秒,则帧间隔时间为1/5秒,若开始时间设定为0,则混音模块在1/5秒的时候取一次音频数据并进行一次混音操作,即预设混音时刻为1/5秒、2/5秒、3/5秒……。

每个预设混音时刻具体有多少路音频数据需要进行混音操作,可以通过消息获取到,每路音频数据都有对应的固定编号,因此可以通过编号统计当前预设混音时刻需要进行混音的数据是否已经齐全。

步骤130a、若待混音的音频数据已经齐全,则对待混音音频数据进行混音操作。

示例性地,对待混音音频数据进行混音操作,包括:

通过线性叠加混音算法对所述待混音音频数据进行混音操作,在线性叠加前,先将各个需要参与叠加的音频数据的幅值降低,经过线性叠加和平滑处理后,再将混音后的音频数据的幅值升高至初始值。当然还可以利用其它的性能更优的混音算法进行混音操作。

步骤130b、若待混音的音频数据不齐全,则开始等待。

对于单纯使用软件混音来说,由于网络传输延时及设备软件编解码处理性能差异,多路解码音频数据输出会有一定的时间差,因此,存在各路音频数据先后抵达混音模块的情况,即需要混音的各路音频数据不是同时到达混音模块的,因此,为了保证音频数据的同步性,在混音操作开始前检查各路音频数据是否已经齐全,若已经齐全,则对待混音音频数据进行混音操作,否则,开始等待,以等待那些后抵达混音模块的音频数据,确保混音后的音频数据具有同步性。

步骤140、当等待的时间达到设定时间时,进行混音操作,并对当前已完成混音的音频数据帧数进行记录。

具体的,所述设定时间可以为一个帧间隔时间,若等待的时间过长有可能会导致某1秒输出音频数据帧数不够的情况,出现掉帧、帧累积的现象,如此则达不到实时的效果。因此等待的时间不能过长,优选的,可以等待一个帧间隔时间,等待时间到达后不管各路待混音的音频数据是否已经齐全,则不再等待,直接进行混音操作,同时对当前已完成混音的音频数据帧数进行记录,所述当前已完成混音的音频数据帧数是从步骤110中记录当前时刻时开始计算的。

步骤150、根据记录的当前已完成混音的音频数据帧数、开始等待的时刻以及预设时间内需要完成混音的音频数据帧数调整取帧频率。

所述预设时间具体可以为1秒,音频数据的帧率通常是按1秒来计算的,例如,预设1秒内需要完成混音的音频数据为50帧即初始取帧频率(具体的帧率是通过计算得出的,上文已经给出计算公式),则每帧音频数据之间的间隔时间为1000/50=20毫秒,即每20毫秒取一次待混音音频数据进行一次混音操作。若记录的当前已完成混音的音频数据帧数为25帧,开始等待的时刻是相对该混音方法程序开始执行的初始时间计算的,若初始时间从0开始算,假如开始等待的时刻为第600毫秒,即统计到600毫秒的时候完成了25帧音频数据的混音,预设1秒的时间还剩下了400毫秒,而预设1秒内完成混音的音频数据帧数还差50-25=25帧,因此,将取帧频率调整为400/25=16毫秒,由初始的20毫秒调整为了16毫秒。调整取帧频率的目的是为了提高取帧频率,弥补已经等待过的一次帧间隔时间,以保证每秒钟的帧数,避免出现掉帧、帧累积的现象。

步骤160、在预设时刻之前,基于调整后的取帧频率获取多路待混音音频数据且当到达预设混音时刻时直接进行混音操作。

进一步地,当到达预设时刻时,将取帧频率调整回初始取帧频率。

所述预设时刻是相对步骤110中的当前时刻计算的,即该混音方法程序开始执行的初始时间,可以是物理时间,还可以是从0开始算;若步骤110中记录的当前时刻为0,则该预设时刻为1秒,若步骤110中记录的当前时刻为上午10点整,则该预设时刻为同一上午10.001,即十点零1秒。

其实质是,以1秒为一个周期,若1秒的时间未到,则以调整后的帧率获取各路待混音音频进行混音操作,若1秒的时间到,则将帧率调整回初始帧率,继续取帧-混音操作。进一步地,若待混音的音频数据不齐全,则开始等待时还包括:置位等待标志位,用于表示已经等待过一个帧间隔时间,预设时刻之前,不再进行等待;对应地,所述方法还包括:当到达预设时刻时,清零所述等待标志位以及记录的当前已完成混音的音频数据帧数,以不影响下个周期即下一个1秒的混音方法的执行。

具体的,可以参见图2所示的另一种多路音频混音方法流程示意图,方法开始后首先检查等待标志位是否被置位,若被置位则说明已经等待过一个帧间隔时间,则进一步检查预设时刻是否到,即1秒的时间是否到,若未到,则根据当前时刻、已经完成混音的音频数据帧数以及预设1秒内需要完成混音的音频数据帧数调整取帧频率,若1秒的时间到,则清零等待标志位以及记录的已经完成混音的音频帧数,并将取帧频率调整回初始频率。继续判断预设混音时刻是否到,即帧间隔时间是否到,若没到返回继续判断,若帧间隔时间到,则检查需要混音的待混音音频数据是否齐全,若齐全,则记录当前已经完成混音的音频数据帧数并进行混音操作,若不齐全,则检查是否已经等待过一个帧间隔时间,若已经等待过,则记录当前已经完成混音的音频数据帧数并进行混音操作,若没有等待过,则开始等待,并置位等待标志位。

本实施例提供的一种多路音频混音方法,当到达预设混音时刻时,若待混音音频数据不齐全,通过等待一次帧间隔时间,确保了待混音音频数据的完整性,提高了混音的同步性,同时,在1秒钟剩余的时间内,通过调整取帧频率,弥补已经等待过的一次帧间隔时间,以保证每秒钟的帧数,避免出现掉帧、帧累积的现象,提高了混音的实时性。

实施例二

图3为本发明实施例二提供的一种多路音频混音装置结构示意图,具体参见图3所示,所述装置包括:第一获取模块310,检查模块320,混音模块330,等待模块340,记录模块350,调整模块360和第二获取模块370;

其中,第一获取模块310,用于基于初始取帧频率获取多路待混音音频数据,并记录当前时刻;检查模块320,用于当到达预设混音时刻时,检查待混音音频数据是否齐全;混音模块330,用于若待混音的音频数据已经齐全,则对待混音音频数据进行混音操作,或者当等待的时间达到设定时间时,进行混音操作,或者对基于调整后的取帧频率获取的多路待混音音频数据进行混音操作;等待模块340,用于若待混音的音频数据不齐全,开始等待;记录模块350,用于当等待的时间达到设定时间时,对当前已完成混音的音频数据帧数进行记录;调整模块360,用于根据记录的当前已完成混音的音频数据帧数、开始等待的时刻以及预设时间内需要完成混音的音频数据帧数调整取帧频率;第二获取模块370,用于在预设时刻之前,基于调整后的取帧频率获取多路待混音音频数据。

进一步地,调整模块360还用于当到达预设时刻时,将取帧频率调整回初始取帧频率。

进一步地,所述装置还包括:

置位模块,用于开始等待时置位等待标志位。

进一步地,所述装置还包括:

清零模块,用于当到达预设时刻时,清零所述等待标志位以及记录的当前已完成混音的音频数据帧数。

进一步地,混音模块330具体用于通过线性叠加混音算法对所述待混音音频数据进行混音操作。

本实施例提供的一种多路音频混音装置,当到达预设混音时刻时,若待混音音频数据不齐全,通过等待一次帧间隔时间,确保了待混音音频数据的完整性,提高了混音的同步性,同时,在1秒钟剩余的时间内,通过调整取帧频率,弥补已经等待过的一次帧间隔时间,以保证每秒钟的帧数,避免出现掉帧、帧累积的现象,提高了混音的实时性。

上述装置可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1