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

多通道音频数据的实现方法、系统、装置及存储介质

文献发布时间:2024-04-18 19:59:31


多通道音频数据的实现方法、系统、装置及存储介质

技术领域

本发明涉及音频技术领域,尤其是一种多通道音频数据的实现方法、系统、装置及存储介质。

背景技术

通常在包含一至多个硬件声卡情况下,实现多硬件声卡同时播放或录音、多通道音频数据从某一硬件声卡某一通道混音播放、多硬件声卡多通道录音数据混音为单通道音频数据、多硬件声卡统一音量播放或录音等应用场景时较为困难,需将音频数据处理完后针对不同硬件声卡同时写或读音频数据等。同时若在此基础上实现音频数据流在所有硬件声卡各个通道之间实时无缝切换,则需要更为复杂的操作,需不断的开关硬件声卡设备,暂停音频传输等,容易造成切换卡顿等问题。上述方案均需直接对多个硬件声卡设备操作,不仅操作复杂、效果差,同时在不同硬件平台上硬件声卡各有所异,多平台适配上加大了开发难度。

发明内容

本发明的目的在于至少一定程度上解决现有技术中存在的技术问题之一。

为此,本发明的目的在于提供一种高效的多通道音频数据的实现方法、系统、装置及存储介质。

为了达到上述技术目的,本发明实施例所采取的技术方案包括:

一方面,本发明实施例提供了一种多通道音频数据的实现方法,包括以下步骤:

本发明实施例的多通道音频数据的实现方法,该方法包括:根据硬件声卡通道数,确定虚拟声卡的通道数;遍历所述硬件声卡,对所述虚拟声卡进行配置,得到配置好的虚拟声卡;接收音频指令和音频数据,基于所述虚拟声卡对所述音频数据进行处理和分配,得到音频处理结果并传输至硬件声卡;其中,所述音频指令包括录音指令和播放指令,所述音频处理结果用于表征与所述硬件声卡相匹配的音频数据。本发明实施例通过虚拟声卡实现硬件声卡的输入输出,可用于多种系统,提升通用性能;同时,通过虚拟声卡进行音频数据的处理和分配,缓解卡顿的问题,提升音频处理效率。

另外,根据本发明上述实施例的多通道音频数据的实现方法,还可以具有以下附加的技术特征:

进一步地,本发明实施例的多通道音频数据的实现方法,所述方法还包括:

构建虚拟声卡;所述虚拟声卡用于链接应用层和硬件声卡;所述虚拟声卡包括配置层、数据处理层和数据流分配层;所述配置层用于配置音频数据的流向,所述数据处理层用于混音处理和音量调节处理,所述数据流分配层用于传输录音数据和播放数据。

进一步地,在本发明的一个实施例中,所述遍历所述硬件声卡,对所述虚拟声卡进行配置,得到配置好的虚拟声卡,包括:

获取硬件输入设备和硬件输出设备的第一通道数;

根据所述第一通道数,配置所述虚拟声卡的输入输出通道的数据源选项,配置所述虚拟声卡的输入输出通道的音量调节选项;

若所述音频数据为播放流,配置所述虚拟声卡的输出通道与所述硬件声卡的播放通道的映射关系;或者,若所述音频数据为录音流,配置所述硬件声卡的录音通道与所述虚拟声卡的输入通道的映射关系;

接收所述播放指令,获取待播放的播放音频参数,若所述映射关系符合播放音频参数,根据所述映射关系对所述虚拟声卡进行更新配置。

进一步地,在本发明的一个实施例中,所述方法还包括以下步骤:

获取当前所述虚拟声卡的第二通道数;

获取当前所述虚拟声卡的第一映射配置;

根据所述第一映射配置,得到当前第一硬件声卡,并确定所述第一硬件声卡的支持参数;所述支持参数用于表征非通道数的参数限制;

根据所述第二通道数和所述支持参数,确定第一参数;所述第一参数为所述支持参数的最小值,用于表征所述虚拟声卡的参数限制;

接收音频数据,确定所述音频数据对应的第二参数;根据所述第二参数,对所述第一参数进行检测。

进一步地,在本发明的一个实施例中,所述方法还包括:

获取当前虚拟声卡的输出配置信息;所述输出配置信息包括所述虚拟声卡的输出通道与所述硬件声卡的播放通道的第二映射配置、虚拟声卡各输出通道的第一音量、应用层音频播放的第三参数;

若所述第二映射配置中包括多个虚拟声卡输出通道映射到同一个硬件声卡播放通道,创建混音数据处理进程;

若所述第一音量包含音量调节变化,创建音量调节数据处理进程;

若所述虚拟声卡对应的第一参数能够支持所述第三参数,且所述应用层设置的写数据方式为预设方式,依次创建链接所述硬件声卡的映射;或者,若所述应用层设置的写数据方式不是预设方式,依次创建链接所述硬件声卡的写数据队列;

打开链接的硬件声卡,设置所述硬件声卡的参数。

进一步地,在本发明的一个实施例中,所述方法还包括:

根据所述音频数据,判断是否需要进行更新配置,并完成配置的更新;

根据所述播放指令,以通道为单位拆分所述音频数据;

根据虚拟声卡的输出通道和硬件声卡的播放通道的映射关系,创建混音数据处理进程和音量调节数据处理进程,得到第一音频数据;

将所述第一音频数据按照映射关系写入硬件声卡。

进一步地,在本发明的一个实施例中,该方法还包括:

获取当前虚拟声卡的输出通道的第三映射配置;

根据所述第三映射配置,拆分所述音频数据;

若传输方式为预设方式,获取可写入区域,将拆分后的音频数据写入所述可写入区域;根据所述第三映射配置,将拆分后的音频数据从可写入区域传输至硬件声卡;

或者,若传输方式不是预设方式,获取链接硬件声卡的工作队列,根据所述第三映射配置,将所述拆分后的音频数据写入所述硬件声卡。

另一方面,本发明实施例提出了一种多通道音频数据的实现系统,包括:

第一模块,用于根据硬件声卡通道数,确定虚拟声卡的通道数;

第二模块,用于遍历所述硬件声卡,对所述虚拟声卡进行配置,得到配置好的虚拟声卡;

第三模块,用于接收音频指令和音频数据,基于所述虚拟声卡对所述音频数据进行处理和分配,得到音频处理结果并传输至硬件声卡;其中,所述音频指令包括录音指令和播放指令,所述音频处理结果用于表征与所述硬件声卡相匹配的音频数据。

另一方面,本发明实施例提供了一种多通道音频数据的实现装置,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现上述的多通道音频数据的实现方法。

另一方面,本发明实施例提供了一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于实现上述的多通道音频数据的实现方法。

本发明实施例通过虚拟声卡实现硬件声卡的输入输出,可用于多种系统,提升通用性能;同时,通过虚拟声卡进行音频数据的处理和分配,缓解卡顿的问题,提升音频处理效率。

附图说明

为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员来说,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。

图1为本发明提供的多通道音频数据的实现方法的一种实施例的流程示意图;

图2为本发明提供的多通道音频数据的实现方法的另一种实施例的流程示意图;

图3为本发明提供的虚拟声卡的配置过程的一种实施例的流程示意图;

图4为本发明提供的虚拟声卡的配置过程的另一种实施例的流程示意图;

图5为本发明提供的虚拟声卡的检测过程的一种实施例的流程示意图;

图6为本发明提供的虚拟声卡的播放流创建的一种实施例的流程示意图;

图7为本发明提供的虚拟声卡的播放流程的一种实施例的流程示意图;

图8为本发明提供的虚拟声卡的写数据的一种实施例的流程示意图;

图9为本发明提供的虚拟声卡的录音流创建的一种实施例的流程示意图;

图10为本发明提供的虚拟声卡的录音流程的一种实施例的流程示意图;

图11为本发明提供的虚拟声卡的读数据的一种实施例的流程示意图;

图12为本发明提供的多通道音频数据的实现方法的一种实施例的效果示意图;

图13为本发明提供的多通道音频数据的实现系统的一种实施例的结构示意图;

图14为本发明提供的多通道音频数据的实现装置的一种实施例的结构示意图。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

通常在包含一至多个硬件声卡情况下,实现多硬件声卡同时播放或录音、多通道音频数据从某一硬件声卡某一通道混音播放、多硬件声卡多通道录音数据混音为单通道音频数据、多硬件声卡统一音量播放或录音等应用场景时较为困难,需将音频数据处理完后针对不同硬件声卡同时写或读音频数据等。同时若在此基础上实现音频数据流在所有硬件声卡各个通道之间实时无缝切换,则需要更为复杂的操作,需不断的开关硬件声卡设备,暂停音频传输等,容易造成切换卡顿等问题。以上均需直接对多个硬件声卡设备操作,不仅操作复杂、效果差,同时在不同硬件平台上硬件声卡各有所异,多平台适配上加大了开发难度。

相关技术中,通过直接对硬件声卡按需操作实现多通道音频数据的处理,该方案可实现大部分功能,但存在操作复杂、效果差、多平台适配难度大。还可以通过使用alsalib自带插件实现多通道音频数据的处理,alsalib自带混音、音量调节、多播放通道拼接、多录音通道拼接等插件,通过修改配置文件达到以上效果,但由于其实现机制无法支持数据流搬运时,即播放或录音中实时修改配置文件,导致音频数据流在所有硬件声卡各个通道之间实时无缝切换的功能,该方案无法实现。因此,可知,相关技术中的多通道音频数据的实现方案,直接对硬件声卡操作,不方便适配多种硬件平台;多硬件声卡同时播放或录音易受影响,同步不够稳定;音频数据流在所有硬件声卡各个通道之间实时无缝切换时操作困难,易卡顿。

基于此,本发明实施例提出一种多通道音频数据的实现方法,具体地,参照图1,本发明实施例中的多通道音频数据的实现方法,可应用于终端中,也可应用于服务器中,还可以是运行于终端或服务器中的软件等。终端可以是平板电脑、笔记本电脑、台式计算机等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。本发明实施例中的多通道音频数据的实现方法主要包括以下步骤:

S100:根据硬件声卡通道数,确定虚拟声卡的通道数;

S200:遍历硬件声卡,对虚拟声卡进行配置,得到配置好的虚拟声卡;

S300:接收音频指令和音频数据,基于虚拟声卡对音频数据进行处理和分配,得到音频处理结果并传输至硬件声卡;其中,音频指令包括录音指令和播放指令,音频处理结果用于表征与硬件声卡相匹配的音频数据。

在一些可能的实施方式中,本发明实施例通过创建一个虚拟声卡,链接所有硬件声卡,方便应用层操作和适配;虚拟声卡包含可实时配置音频数据流和硬件声卡通道映射关系以及各通道音量调节;虚拟声卡包含音频数据流分配,可达到音频数据流在所有硬件声卡通道中无缝切换;虚拟声卡包含音频数据处理,可达到多通道音频数据流混音和音量调节。具体地,本发明技术方案基本内容为创建一个虚拟声卡链接所有硬件声卡,作为应用层唯一声卡操作对象。该虚拟声卡用于实时管理硬件声卡的输入输出,包含虚拟声卡实时配置部分、虚拟声卡数据流分配部分、虚拟声卡音频数据处理部分,如图2所示,应用层仅需面对该虚拟声卡,即可完成对所有硬件声卡的操作。

可选地,在本发明的一个实施例中,该方法还包括:

构建虚拟声卡;虚拟声卡用于链接应用层和硬件声卡;虚拟声卡包括配置层、数据处理层和数据流分配层;配置层用于配置音频数据的流向,数据处理层用于混音处理和音量调节处理,数据流分配层用于传输录音数据和播放数据。

在一些可能的实施方式中,虚拟声卡实时配置部分用于实时配置音频数据流流向,包含播放流中虚拟声卡单通道音频数据流配置至单个或多个硬件声卡播放通道、虚拟声卡多通道音频数据流配置至单个或多个硬件声卡播放通道;录音流中硬件声卡单通道数据流配置至虚拟声卡单个或多个通道音频数据、硬件声卡多通道数据流配置至虚拟声卡单个或多个通道音频数据;虚拟声卡各个通道数据音量实时调节配置。

虚拟声卡数据流分配部分用于传输播放和录音数据,按照通道配置信息依次处理所链接硬件声卡,对于播放流,将应用层音频数据通过数据处理后按照通道映射配置逐一分配至各个音频播放声卡,对于录音流,按照通道映射逐一获取所链接硬件声卡音频数据,再通过数据处理后组合成应用层所需的音频数据。

虚拟声卡音频数据处理包含混音处理和音量调节处理,对于播放,在多通道应用层音频数据需同时从某个硬件声卡播放通道播放时,则需通过混音数据处理再进行音频数据流分配,对于录音,在多个硬件声卡录音通道数据需同时组合到某个应用层音频数据通道时,则需要通过混音数据处理后再进行音频数据流分配,对于不同硬件声卡其音量特性有所不同,需对各个音频数据流以音频通道为单位经音量调节数据处理,达到统一的音量效果。

可选地,在本发明的一个实施例中,遍历硬件声卡,对虚拟声卡进行配置,得到配置好的虚拟声卡,包括:

获取硬件输入设备和硬件输出设备的第一通道数;

根据第一通道数,配置虚拟声卡的输入输出通道的数据源选项,配置虚拟声卡的输入输出通道的音量调节选项;

若音频数据为播放流,配置虚拟声卡的输出通道与硬件声卡的播放通道的映射关系;或者,若音频数据为录音流,配置硬件声卡的录音通道与虚拟声卡的输入通道的映射关系;

接收播放指令,获取待播放的播放音频参数,若映射关系符合播放音频参数,根据映射关系对虚拟声卡进行更新配置。

在一些可能的实施方式中,本发明技术方案为创建一个虚拟声卡链接所有硬件声卡,作为应用层唯一声卡操作对象。该虚拟声卡用于实时管理硬件声卡的输入输出,包含包含虚拟声卡实时配置部分、虚拟声卡数据流分配部分、虚拟声卡音频数据处理部分。

本申请实施例中的虚拟声卡实时配置部分包含创建虚拟声卡配置、配置流程、参数检查。创建虚拟声卡配置用于提供虚拟声卡输入输出通道与硬件声卡播放录音通道之间的映射实时配置,和各通道音量调节的实时配置;配置流程用于管理整个虚拟声卡实时配置过程;参数检查用于检测应用层播放或录音参数是否符合虚拟声卡参数限制内。

具体地,创建虚拟声卡配置如图3所示,首先设置虚拟声卡的最高输入输出通道数,用于限定虚拟声卡的通道参数,遍历所有硬件声卡设备,获取其输入输出设备通道数,最后创建虚拟声卡输入和输出通道数据源选项,以及虚拟声卡输入输出音量调节选项,即完成虚拟声卡配置的创建。

本申请实施例中虚拟声卡配置流程包含查看配置和更改配置,如图4所示,首先为虚拟声卡创建配置选项,包含输入输出通道与硬件声卡播放/录音通道的映射以及所有输入输出通道音量的调节,创建完毕后通过参数检查决定是否进行配置更改,或者查看虚拟声卡配置信息。若需要查看虚拟声卡配置信息,可以通过name和value的查询代码进行查询。具体地,对于虚拟声卡播放流配置,pcmp0代表虚拟声卡的第0个输出通道,pcmC0D0p0代表硬件声卡0的设备0的第0个播放通道,NULL代表无,其中虚拟声卡最大输出通道数取决于设置值,通常为所有硬件声卡播放通道总合,pcmp0的可选择配置项为NULL和所有硬件声卡的各个播放通道,即虚拟声卡输出通道可映射到任一硬件声卡的播放通道;对于虚拟声卡录音流配置,pcmc0代表虚拟声卡的第0个输入通道,pcmC0D0c0代表硬件声卡0的设备0的第0个录音通道,NULL代表无,其中虚拟声卡最大输入通道数取决于设置值,通常为所有硬件声卡录音通道总合,pcmC0D0c0的可选配置项为NULL和虚拟声卡各个输入通道,即所有硬件声卡各个录音通道可映射到虚拟声卡任一输入通道;对于虚拟声卡个输入输出音量查看,pcmp0vol为虚拟声卡输出通道0音量,可选值为0-100,即虚拟声卡每个输入输出通道均可查看音量。

若为配置虚拟声卡,首先对于虚拟声卡播放流,则配置虚拟声卡输出通道和硬件声卡播放通道的映射关系,对于虚拟声卡录音流,则配置硬件声卡录音通道与虚拟声卡输入通道的映射关系,接着若有需要配置虚拟声卡各输入输出通道音量,则进行输入输出音量调节,最后配置完播放流通道映射若此时不在播放中,则更新配置,若在播放中,则获取播放中的参数,若新配置的播放流通道映射符合播放参数,再更新配置,否则不进行更新配置,同理对于录音流通道映射配置,若在录音中,也许检查新配置是否符合录音参数再决定是否更新配置。

可选地,在本发明的一个实施例中,该方法还包括:

获取当前虚拟声卡的第二通道数;

获取当前虚拟声卡的第一映射配置;

根据第一映射配置,得到当前第一硬件声卡,并确定第一硬件声卡的支持参数;支持参数用于表征非通道数的参数限制;

根据第二通道数和支持参数,确定第一参数;第一参数为支持参数的最小值,用于表征虚拟声卡的参数限制;

接收音频数据,确定音频数据对应的第二参数;根据第二参数,对第一参数进行检测。

在一些可能的实施方式中,本申请实施例提供的虚拟声卡参数检查如图5所示,首先获取虚拟声卡所设置的输入或输出最高通道作为虚拟声卡通道数的参数限制,再获取虚拟声卡通道映射配置,从而得到此时虚拟声卡所链接的硬件声卡,继而获取这些硬件声卡的非通道数的参数限制,如采样率、采样深度等,然后取这些参数的最小值,即除通道数参数外可满足所有正在使用的硬件声卡的限制参数,作为虚拟声卡除通道数参数外的参数限制,组成虚拟声卡的全部参数限制。对于应用层传入的播放或录音参数,即通道数、采样率、采样深度等参数进行检查,查看是否满足虚拟声卡的参数限制,若满足再创建虚拟声卡的播放或录音流。

可选地,在本发明的一个实施例中,该方法还包括:

获取当前虚拟声卡的输出配置信息;输出配置信息包括虚拟声卡的输出通道与硬件声卡的播放通道的第二映射配置、虚拟声卡各输出通道的第一音量、应用层音频播放的第三参数;

若第二映射配置中包括多个虚拟声卡输出通道映射到同一个硬件声卡播放通道,创建混音数据处理进程;

若第一音量包含音量调节变化,创建音量调节数据处理进程;

若虚拟声卡对应的第一参数能够支持第三参数,且应用层设置的写数据方式为预设方式,依次创建链接硬件声卡的映射;或者,若应用层设置的写数据方式不是预设方式,依次创建链接硬件声卡的写数据队列;

打开链接的硬件声卡,设置硬件声卡的参数。

在一些可能的实施方式中,本申请实施例提供的虚拟声卡数据流分配部分包含虚拟声卡的播放流和录音流,均有创建数据流、数据流传输流程、读写数据的过程。创建数据流用于创建数据处理、检查参数、映射数据流、打开硬件声卡设备和参数设置等初始化;数据流传输流程用于管理整个音频数据流传输;读写数据用于管理一至多硬件声卡数据同步读写。

具体地,创建虚拟声卡播放流如图6所示,首先获取虚拟声卡输出配置信息,包含虚拟声卡输出通道与硬件声卡播放通道的映射配置、虚拟声卡各输出通道的音量配置信息、应用层音频播放参数。其中对于通道映射,判断输出通道配置信息是否包含多个虚拟声卡输出通道映射到同一个硬件声卡播放通道,若存在则创建混音数据处理,用于多通道混音为单通道再播放;对于音量调节,判断输出通道音量配置是否有调节变化,若有则创建音量调节数据处理,用于调节各个通道的播放音量;对于应用层音频播放参数信息,判断虚拟声卡音频参数是否支持,若支持则进入下一步判断应用层设置的写数据方式,若为mmap传输模式,则逐一创建所链接硬件声卡的mmap映射,若为io写数据模式则为所链接硬件声卡逐一创建写数据工作队列,用于多硬件声卡的同步写数据;最后打开所有所链接的硬件声卡设备,按虚拟声卡输出配置逐一设置硬件声卡参数。

可选地,在本发明的一个实施例中,该方法还包括:

根据音频数据,判断是否需要进行更新配置,并完成配置的更新;

根据播放指令,以通道为单位拆分音频数据;

根据虚拟声卡的输出通道和硬件声卡的播放通道的映射关系,创建混音数据处理进程和音量调节数据处理进程,得到第一音频数据;

将第一音频数据按照映射关系写入硬件声卡。

在一些可能的实施方式中,虚拟声卡播放流程如图7所示,该流程包含虚拟声卡的整个播放流程,首先进行创建虚拟声卡播放流(如图6所示的过程),再进入播放参数检查(如图5所示的过程),参数检查完毕后判断是否有更新输出通道配置,若更新则重新返回创建虚拟声卡播放流,若无更新,则进入是否播放的判断,如果不进行播放则结束该流程,若进行则继续播放。

其中若继续播放,则以通道为单位进行音频数据通道拆分,再按照虚拟声卡输出通道和硬件声卡播放通道的映射关系,进行混音处理(若输出通道映射配置无需混音处理则无混音数据处理环节),再进行音频数据音量调节处理(若输出通道无音量调节变化则无音量调节数据处理环节),再将经过数据处理的音频数据,按照通道映射配置写入所链接硬件声卡,最后重新返回是否更新配置的判断,从而不断循环播放。

可选地,在本发明的一个实施例中,该方法还包括:

获取当前虚拟声卡的输出通道的第三映射配置;

根据第三映射配置,拆分音频数据;

若传输方式为预设方式,获取可写入区域,将拆分后的音频数据写入可写入区域;根据第三映射配置,将拆分后的音频数据从可写入区域传输至硬件声卡;

或者,若传输方式不是预设方式,获取链接硬件声卡的工作队列,根据第三映射配置,将拆分后的音频数据写入硬件声卡。

在一些可能的实施方式中,虚拟声卡写数据如图8所示,该部分说明在不同数据传输模式下,如何同时将应用层音频数据写入一至多硬件声卡。整体流程为获取虚拟声卡输出通道和硬件声卡播放通道映射关系,将经过数据处理后的音频数据按通道写入硬件声卡。声卡数据传输通常有两种方式,分别为mmap模式和io模式,该模式由应用层设置,同时由于音频数据传输速度和实际播放速度不相等,且数据传输速度远大于播放速度,因此传输一次数据后需要进行阻塞等待,对于多硬件声卡同步写入的等待处理如下。

可以理解的是,mmap模式:在创建虚拟声卡播放流中,若为mmap模式,则对所链接硬件声卡逐一创建mmap映射。写数据时首先获取可写入区域,等待所链接硬件声卡均可写入音频数据后,再按照通道映射配置将对应音频数据复制至所链接硬件声卡的mmap区域,完成一次写入,下一次写入数据时,则仍需等待所链接硬件声卡均可写入音频数据,从而完成多硬件声卡同步写入的等待处理。

可以理解的是,io模式:在创建虚拟声卡播放流中,若为io模式,则对所链接硬件声卡逐一创建一个写数据工作队列。写数据时首先调用全部所链接硬件声卡的写数据工作队列,各写数据工作队列中按照通道映射配置将对应音频数据写入对应硬件声卡中,然后等待所有队列完成写数据后再进入下一次写数据,从而完成多硬件声卡同步写入的等待处理。

可以理解的是,本申请实施例还提供了录音过程的数据流分配,具体地,创建虚拟声卡录音流如图9所示,首先获取虚拟声卡输入配置信息,包含虚拟声卡输入通道与硬件声卡录音通道的映射配置、虚拟声卡各输入通道的音量配置信息、应用层音频录音参数。其中对于通道映射,判断输入通道配置信息是否包含多个硬件声卡录音通道映射到同一个虚拟声卡输入通道,若存在则创建混音数据处理,用于多通道混音为单通道再组成音频数据;对于音量调节,判断输入通道音量配置是否有调节变化,若有则创建音量调节数据处理,用于调节各个通道的录音音量;对于应用层音频录音参数信息,判断虚拟声卡音频参数是否支持,若支持则进入下一步判断应用层设置的写数据方式,若为mmap传输模式,则逐一创建所链接硬件声卡的mmap映射,若为io写数据模式则为所链接硬件声卡逐一创建写数据工作队列,用于多硬件声卡的同步写数据;最后打开所有所链接的硬件声卡设备,按虚拟声卡输出配置逐一设置硬件声卡参数。

虚拟声卡播放流程如图10所示,该流程包含虚拟声卡的整个录音流程,首先进行创建虚拟声卡录音流(如图9所示的过程),再进入录音参数检查(如图5所示的过程),参数检查完毕后判断是否有更新输入通道配置,若更新则重新返回创建虚拟声卡录音流,若无更新,则进入是否录音的判断,如果不进行录音则结束该流程,若进行则继续录音。

其中若继续录音,则读取所链接硬件声卡录音数据,再按照虚拟声卡输入通道和硬件声卡录音通道的映射关系,进行混音处理(若输入通道映射配置无需混音处理则无混音数据处理环节),再进行音频数据音量调节处理(若输入通道无音量调节变化则无音量调节数据处理环节),再将经过数据处理的音频数据,按照通道映射配置组合为虚拟声卡录音数据返回至应用层,最后重新返回是否更新配置的判断,从而不断循环录音。

虚拟声卡读数据如图11所示,该部分说明在不同数据传输模式下,如何同时将一至多硬件声卡录音数据读取至应用层。整体流程为获取虚拟声卡输入通道和硬件声卡录音通道映射关系,将读取的录音数据经过数据处理后组合为虚拟声卡录音数据返回至应用层。声卡数据传输通常有两种方式,分别为mmap模式和io模式,该模式由应用层设置,同时由于音频数据传输速度和实际录音速度不相等,且数据传输速度远大于录音速度,因此传输一次数据后需要进行阻塞等待,对于多硬件声卡同步读取的等待处理如下。

具体地,mmap模式:在创建虚拟声卡录音流中,若为mmap模式,则对所链接硬件声卡逐一创建mmap映射。读数据时首先获取可读取区域,等待所链接硬件声卡均可读取音频数据后,再按照通道映射配置将所链接硬件声卡的mmap区域复制至对应虚拟声卡录音通道,完成一次读取,下一次读取数据时,则仍需等待所链接硬件声卡均可读取音频数据,从而完成多硬件声卡同步读取的等待处理。

具体地,io模式:在创建虚拟声卡录音流中,若为io模式,则对所链接硬件声卡逐一创建一个读数据工作队列。读数据时首先调用全部所链接硬件声卡的读数据工作队列,各读数据工作队列中按照通道映射配置将对应硬件声卡录音数据读取至对应虚拟声卡录音通道,然后等待所有队列完成读数据后再进入下一次读数据,从而完成多硬件声卡同步读取的等待处理。

本申请实施例还提供了虚拟声卡音频数据处理部分,具体包含虚拟声卡各输入输出通道的混音处理和音量调节处理。其中混音处理用于虚拟声卡多输出通道音频数据写入单硬件声卡播放通道,或多硬件声卡录音通道数据读取回虚拟声卡单输入通道,即多通道音频数据混音为单通道音频数据。音量调节用于多硬件声卡播放或录音的音量调节,防止不同硬件声卡差异造成的音量不同。

综上可知,本申请实施例创建一个虚拟声卡统一化所有硬件声卡,作为应用层唯一声卡操作对象;统一化声卡操作方式,减少应用层适配难度;可同步多硬件声卡播放和录音;应用层音频数据播放流可在多硬件声卡播放通道间无缝切换;多硬件声卡录音通道数据可无缝切换组合至应用层音频数据录音流;应用层音频数据播放流可2至多通道混音后再任一硬件声卡播放通道播放;硬件声卡录音数据可2至多通道混音后再组合至应用层音频数据录音流;所有播放或录音通道均可音量调节统一多硬件声卡播放或录音音量。

同时,本发明提供的多通道音频数据的实现方法,操作简单,应用层无需关注复杂的多硬件声卡同步问题、多硬件声卡切换问题、多音频数据流混音问题、多音频数据流音量调节问题;多硬件平台适配简单,应用层无需直接对接硬件声卡,统一操作唯一的虚拟声卡,无需对不同硬件平台做大量适配工作;以帧为单位进行多音频流同步,多硬件声卡同步播放或录音同步效果好;应用层音频数据流与多硬件声卡通道可无缝切换,无需重复开关声卡而加大卡顿概率,仅需实时更改虚拟声卡通道映射配置即可达到实时的数据流无缝切换效果。

可以理解的是,基于本申请实施例提供的多通道音频数据的实现方法,通过调节不同通道的音量,可个别或整体提高或降低硬件声卡的音乐响度;在音频数据处理部分可继续追加不同音频算法,从而达到更多的声音效果;在通道映射中可增加虚拟声卡输入到输出的映射,达到声音回环功能。

本发明是基于硬件声卡的一种纯软件虚拟声卡,理论上可根据不同系统更改适配层对接其硬件声卡驱动的具体实现,从而完成适配,即在拥有硬件声卡播放或录音或播放和录音的产品上均可应用。

具体地,通过实验验证音频数据流和硬件声卡通道映射无缝切换。虚拟声卡配置过程如下:首先通过表1进行配置:其余BOOL类型控件设置为Off。

表1

启动播放,经若干秒后按照表2进行配置,其余BOOL类型控件设置为Off。即首先虚拟声卡0-3通道数据依次映射至硬件声卡0的0、1通道和硬件声卡1的0、1通道,启动播放,经若干秒后将虚拟声卡0通道数据更改映射至硬件声卡1的1通道,将虚拟声卡3通道数据更改映射至硬件声卡0的0通道。

表2

试验结果参见图12所示,可知,硬件声卡0的0通道数据在经若干秒后从虚拟声卡0通道更换为虚拟声卡3通道,硬件声卡1的1通道数据在经若干秒后从虚拟声卡3通道更换为虚拟声卡0通道,即满足频数据流和硬件声卡通道映射无缝切换。

其次,参照附图13描述根据本发明实施例提出的一种多通道音频数据的实现系统。

图13是本发明一个实施例的多通道音频数据的实现系统结构示意图,系统具体包括:

第一模块310,用于根据硬件声卡通道数,确定虚拟声卡的通道数;

第二模块320,用于遍历硬件声卡,对虚拟声卡进行配置,得到配置好的虚拟声卡;

第三模块330,用于接收音频指令和音频数据,基于虚拟声卡对音频数据进行处理和分配,得到音频处理结果并传输至硬件声卡;其中,音频指令包括录音指令和播放指令,音频处理结果用于表征与硬件声卡相匹配的音频数据。

可见,上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

参照图14,本发明实施例提供了一种多通道音频数据的实现装置,包括:

至少一个处理器410;

至少一个存储器420,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器410执行时,使得所述至少一个处理器410实现所述的多通道音频数据的实现方法。

同理,上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

本发明实施例还提供了一种计算机可读存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于执行上述的多通道音频数据的实现方法。

同理,上述方法实施例中的内容均适用于本存储介质实施例中,本存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干程序用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行程序的定序列表,可以具体实现在任何计算机可读介质中,以供程序执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从程序执行系统、装置或设备取程序并执行程序的系统)使用,或结合这些程序执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供程序执行系统、装置或设备或结合这些程序执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的程序执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本发明权利要求所限定的范围内。

相关技术
  • 一种注塑模具中顶针板自动锁止机构及其使用方法
  • 一种用于汽车连接器模具的顶针板复位装置
  • 用于注塑模具的顶针板强行复位机构及注塑模具
  • 模具顶针板复位机构及注塑模具
技术分类

06120116516214