直播场景下的多路音频的音频混合方法及系统与流程

文档序号:24060373发布日期:2021-02-26 14:42阅读:551来源:国知局
直播场景下的多路音频的音频混合方法及系统与流程

[0001]
本申请涉及音频处理技术领域,尤其涉及一种直播场景下的多路音频的音频混合方法、系统、计算机设备和计算机可读存储介质。


背景技术:

[0002]
网络直播是当前互联网的热门项目之一。目前市场上,人们开发了基于android、ios等操作系统的各类直播app。主播可以通过这些直播app进行直播操作。在直播场景中,为了提升用户体验,主播可能会需要选择多路音频进行混合以输出具有某种特色的混合音频。例如,通过麦克风、伴奏音乐以及其他背景声音等多条音频链路,获取所述多条音频链路提供的多路音频并进行音频混合操作。
[0003]
然而,有些工具是无法同时运行的。以ios系统为例,混音工具“audiounit”无法与录屏插件的录音系统同时运行,导致无法实施直播场景下预定间隔的多路音频的音频混合操作。


技术实现要素:

[0004]
本申请实施例的目的是提供一种直播场景下的多路音频的音频混合方法、系统、计算机设备及计算机可读存储介质,用于解决以下问题:无法实施直播场景下的多路音频的音频混合操作。
[0005]
本申请实施例的一个方面提供了一种直播场景下的多路音频的音频混合方法,所述方法包括:接收n条音频链路提供的n路音频数据,n为大于1的正整数;将每路音频数据存储到相应的结构体指定的地址处,每路音频数据一一对应一个结构体;以预设时间间隔拿取一个或多个结构体的音频时间片段,以得到多个音频数据片段;及将所述多个音频数据片段进行音频混合处理,以得到混合后的目标音频数据。
[0006]
可选的,结构体包括以下成员:数据指针、数据量、时间戳及bus编号;其中,每个结构体一一对应一个bus编号。
[0007]
可选的,所述n路音频数据包括第m路音频数据;将每路音频数据存储到相应的结构体指定的地址处,包括:根据所述第m路音频数据的输入序列,为所述第m路音频数据分配一个目标bus编号;判断是否存在与所述目标bus编号绑定的目标结构体;如果存在所述目标结构体,则将所述第m路音频数据存储到所述目标结构体指定的地址处;及如果不存在所述目标结构体,则创建所述目标结构体,将所述目标结构体与所述目标bus编号绑定,并将所述第m路音频数据存储到所述目标结构体指定的地址处。
[0008]
可选的,所述以预设时间间隔拿取一个或多个结构体的音频时间片段,以得到多个音频数据片段,包括:运行定时器,并创建空白指针;通过所述定时器判断与上一个时间节点之间的时间间隔是否达到所述预设时间间隔;如果达到所述预设时间间隔,则执行以下操作:获取各个结构体对应的当前数据量;从当前数据量大于预设输出量的各个结构体对应的地址处,分别拿取预设数据量的音频数据片段;及将分别拿取的预设数据量的音频
数据片段暂存到所述空白指针指定的地址处。
[0009]
可选的,所述运行定时器,包括:检测是否运行所述定时器;及如果没有运行所述定时器,则根据预设采样率创建所述定时器。
[0010]
可选的,各个结构体存储于相应的map中;所述获取各个结构体对应的当前数据量,包括:通过各个map的索引号,遍历存储有相应结构体的map,各个map的索引号为相应的结构体的bus编号;及从所述各个map中获取相应的结构体,以获取所述各个结构体对应的当前数据量。
[0011]
可选的,还包括:根据首条音频链路的首路音频数据戳确定标准时间戳;将所述标准时间戳作为第一至第n路音频数据的时间戳;其中,所述标准时间戳以所述首路音频数据中的第一个音频帧为时间零点,并且所述标准时间戳等于所述首路音频数据的所有音频帧的时间戳增量总和。
[0012]
本申请实施例的一个方面又提供了一种直播场景下的多路音频的音频混合系统,包括:接收模块,用于接收n条音频链路提供的n路音频数据,n为大于1的正整数;存储模块,用于将每路音频数据存储到相应的结构体指定的地址处,每路音频数据一一对应一个结构体;拿取模块,用于以预设时间间隔拿取一个或多个结构体的音频时间片段,以得到多个音频数据片段;及音频混合模块,用于将所述多个音频数据片段进行音频混合处理,以得到混合后的目标音频数据。
[0013]
本申请实施例的一个方面又提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述直播场景下的多路音频的音频混合方法的步骤。
[0014]
本申请实施例的一个方面又提供了一种计算机可读存储介质,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述直播场景下的多路音频的音频混合方法的步骤。
[0015]
本申请实施例提供的直播场景下的多路音频的音频混合方法、系统、设备及计算机可读存储介质,通过将实时接收到的各路音频数据封装到相应的结构体中,然后从各个结构体中拿取需要混合的音频数据片段,并进行相应的混合操作。即,本实施例可以在直播场景下将实时录制的音频数据和其他实时提供的音频数据进行混合操作,从而输出具有某种特色的混合音频,以提升用户体验。
附图说明
[0016]
图1示意性示出了根据本申请实施例的直播场景下的多路音频的音频混合方法的应用环境图;
[0017]
图2示意性示出了根据本申请实施例一的直播场景下的多路音频的音频混合方法的流程图;
[0018]
图3为图3中步骤s202的子步骤图;
[0019]
图4为图3中步骤s204的子步骤图;
[0020]
图5为图4中步骤s400的子步骤图;
[0021]
图6为图4中步骤s404的子步骤图;
[0022]
图7示意性示出了根据本申请实施例一的直播场景下的多路音频的音频混合方法
的新增步骤流程图;
[0023]
图8示意性示出了根据本申请实施例一的直播场景下的多路音频的音频混合方法的另一流程图;
[0024]
图9示意性示出了根据本申请实施例二的直播场景下的多路音频的音频混合系统的框图;及
[0025]
图10示意性示出了根据本申请实施例三的适于实现直播场景下的多路音频的音频混合方法的计算机设备的硬件架构示意图。
具体实施方式
[0026]
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027]
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
[0028]
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
[0029]
图1示意性示出了根据本申请实施例一的直播场景下的多路音频的音频混合方法的环境应用示意图。在直播场景下,主播端2可以将直播数据实时推送至观众端4。
[0030]
主播端2,用于实时生成直播数据,并进行直播数据的推流操作。所述直播数据可以包括音频数据或视频数据。直播端2可以是基于ios系统的智能手机、平板电脑等。在另一些实施例中,直播端2可以是基于android等系统的直播设备。
[0031]
观众端4,可以被配置为实时接收主播端2的直播数据。观众端4可以是任意类型的计算设备,诸如智能手机,平板设备,膝上型计算机,机顶盒,智能电视等。观众端4可以内置浏览器或专门程序,通过浏览器或专门程序接收所述直播数据以向用户输出内容。所述内容可以包括视频,音频,评论,文本数据和/或类似物。
[0032]
其中,主播端2内置有提供多路音频数据的多条音频链路,以及直播app(如,bilibililink)。在直播场景中,直播app可以输出根据多路音频数据混合形成的音频数据,以提升用户体验。例如,直播app可以输出麦克风、伴奏音乐以及其他背景声音等多条音频链路的多路音频进行音频混合之后得到的音频数据。
[0033]
本申请旨在提供直播场景下的多路音频的自主研制的音频混合架构。下文将提供多个实施例,下文提供的各个实施例可以用于实现上文描述的音频混合操作。
[0034]
实施例一
[0035]
图2示意性示出了根据本申请实施例一的直播场景下的多路音频的音频混合方法的流程图。
[0036]
如图2所示,该直播场景下的多路音频的音频混合方法可以包括步骤s200~s206,其中:
[0037]
步骤s200,接收n条音频链路提供的n路音频数据,n为大于1的正整数。
[0038]
该n条音频链路可以是硬件链路或逻辑链路。该n条音频链路用于提供不同来源的音频数据。在示例性的实施例中,该n条音频链路可以包括以下几条音频链路:
[0039]
对应于录制工具的音频链路,用于提供实时录制的当前声音;
[0040]
对应于伴奏输入接口的音频链路,用于提供伴奏音频;
[0041]
对应于背景音频输入接口的音频链路,用于提供背景音频;


[0042]
步骤s202,将每路音频数据存储到相应的结构体指定的地址处,每路音频数据一一对应一个结构体。
[0043]
为提升对每路音频数据的管理效率,本实施例采用了结构体的形式。每路音频数据对应的结构体的成员都是相同的,每个结构体可以包括以下成员:数据指针、数据量、时间戳及bus编号;其中,每个结构体一一对应一个bus编号。需注意,数据指针,用于指示数据存储地址;数据量,用于指示所在结构体中的当前数据量;时间戳,用于指示所在结构体中的音频数据的时间戳;bus编号,用于指示所在结构体的结构体标识,该bus编号可以是数字、字母等各类标识。
[0044]
每路音频数据对应的结构体,可以是预先创建的,也可以实时动态创建的。以动态创建为例:理论上来说,n条音频链路对应有n个结构体。但是,在直播场景下,n条音频链路中可能仅有其中几条音频链路需要投入使用。在上述情形下,为n条音频链路中的每条音频链路分别创建结构体,无疑是浪费计算资源的。有鉴于此,为节省计算资源,计算机设备2可以动态地仅为这几条音频链路创建结构体。以下为n条音频链路中的第m条音频链路为例:当第m条音频链路输出第m路音频数据时,则说明该第m条音频链路当前处于使用状态,因此需要对应的结构体。如图3所示,所述步骤s202可以包括步骤s300~s306,其中:步骤s300,根据所述第m路音频数据的输入序列(所述输入序列可以为用户为第m条音频链路预先指定或临时分配的bus编号,如目标bus编号),为所述第m路音频数据分配一个目标bus编号;步骤s302,判断是否存在与所述目标bus编号绑定的目标结构体;步骤s304,如果存在所述目标结构体,则将所述第m路音频数据存储到所述目标结构体指定的地址处;步骤s306,如果不存在所述目标结构体,则创建所述目标结构体,将所述目标结构体与所述目标bus编号绑定,并将所述第m路音频数据存储到所述目标结构体指定的地址处。举例而言:计算机设备2存在二十条音频链路,当前已创建有三个结构体,分别为:用于第一路音频数据的结构体(bus编号为“1”);用于第四路音频数据的结构体(bus编号为“4”);用于第十九路音频数据的结构体(bus编号为“19”)。当接收到第七条音频链路对应的第七路音频数据时,则为该第七路音频数据分配bus编号“7”;并检测所述计算机设备2中是否已有bus编号为“7”的结构体,如果存在bus编号为“7”的结构体,则将所述第七路音频数据存储到bus编号为“7”的结构体的指定地址处;如果不存在bus编号为“7”的结构体,则创建一个新的结构体,并将这个新的结构体和bus编号“7”绑定在一起,然后对所述第七路音频数据进行存储。
[0045]
步骤s204,以预设时间间隔拿取一个或多个结构体的音频时间片段,以得到多个音频数据片段。
[0046]
从各个结构体的地址处拿取音频数据片段,可以有多种方式:
[0047]
方式一:各个结构体之间的相互等待,待各个结构体对应存储的音频数据均达到数据量时,则从各个结构体的地址处分别拿取预设数据量的音频数据片段。方式一可能会出现以下情况:如果多路音频数据中的其中一路音频数据受阻或断开,则会导致这路音频数据对应的结构体无法存入足够的音频数据,从而使得其他结构体一直处于等待状态。但是:其他结构体一直有新的音频数据存入,导致其他结构体的音频数据的数据量不断扩大,从而挤占内存空间。
[0048]
为此,本实施例提供了方式二,即基于定时机制避免方式一所导致的技术问题,具体如下:
[0049]
方式二:如图4所示,所述步骤s204包括步骤s400~s404,其中:步骤s400,运行定时器,并创建空白指针;步骤s402,通过所述定时器判断与上一个时间节点之间的时间间隔是否达到所述预设时间间隔;步骤s404,如果达到所述预设时间间隔,则执行以下操作:s404a,获取各个结构体对应的当前数据量;s404b,从当前数据量大于预设输出量的各个结构体对应的地址处,分别拿取预设数据量的音频数据片段;s404c,将分别拿取的预设数据量的音频数据片段暂存到所述空白指针指定的地址处。本实施例可以确保每次都能及时地从各个结构体中拿取音频数据片段,以确保对直播场景下的实时音频数据的实时混音操作和稳定推流。
[0050]
需要说明的是,如果某个结构体中的当前音频数据的数据量不大于预设输出量(最低输出量),则不从这个结构体中拿取音频数据片段,以免出现混音或编码错误。
[0051]
需要说明的是,所述空白指针可以为指向栈的地址。
[0052]
在示例性的实施例中,如图5所示,步骤s400可以包括步骤s500~s502,其中:步骤s500,检测是否运行所述定时器;s502,如果没有运行所述定时器,则根据预设采样率创建所述定时器。所述定时器的采样时间可以是:帧数*通道数/预设采样率,时间精度可以微秒us级。这样做的好处在于根据需求实时创建用于音频混合流程的定时器。
[0053]
在示例性的实施例中,各个结构体存储于相应的map中。为提高效率,如图6所示,步骤s404a可以包括步骤s600~s602,其中:步骤s600,通过各个map的索引号,遍历存储有相应结构体的map,各个map的索引号为相应的结构体的bus编号;步骤s602,从所述各个map中获取相应的结构体,以获取所述各个结构体对应的当前数据量。map(映射)是数据结构中的一种容器,可以用于装载结构体。
[0054]
步骤s206,将所述多个音频数据片段进行音频混合处理,以得到混合后的目标音频数据。
[0055]
该目标音频数据用于输出至用户端4中。在该目标音频数据输出完成之后,销毁所述空白指针。
[0056]
本实施例提出了一种全新的音频混合架构,以适用于直播场景下的多路音频数据的混音操作,特别针对ios系统中混音工具“audiounit”无法与录屏插件的录音系统同时运行导致无法实施直播场景下的多路音频的音频混合操作的情形。本实施例中的音频混合方案可以替代ios系统中的audiounit,以实现运行录制工具的同时,对录制工具实时录制的音频数据和其他音频数据进行实时音频混合操作。具体的:在直播场景下将实时录制的音频数据和其他实时提供的音频数据封装到相应的结构体中,从各个结构体中拿取需要混合的音频数据片段,并进行相应的混合操作,从而输出具有某种特色的混合音频,以提升用户
体验。
[0057]
在示例性的实施例中,为在保证时间戳精度的情况下,可以支持多路音频数据的音频混合操作。如图7所示,所述音频混合方法还可以包括步骤s700~s702,其中:步骤s700,根据首条音频链路的首路音频数据戳确定标准时间戳;步骤s702,将所述标准时间戳作为第一至第n路音频数据的时间戳;其中,所述标准时间戳以所述首路音频数据中的第一个音频帧为时间零点,并且所述标准时间戳等于所述首路音频数据的所有音频帧的时间戳增量总和。需要说明的是,所述首条音频链路为第一至第n路音频链路中最先提供音频数据的那一条音频链路。当然,所述首条音频链路也可以是被预先指定的主音频链路。
[0058]
为了使得本申请更加清晰易懂,如图8所示,以下提供一个具体示例。
[0059]
输入音频数据的封装:
[0060]
s1:接收第m路音频数据,根据输入序列分配bus编号。
[0061]
m可以指代任意一路音频数据:m=1时,则指代第一路音频数据;m=2时,则指代第二路音频数据,


[0062]
s2:判断是否存在与所述bus编号绑定的结构体实例m。
[0063]
具体的,可以根据分配的bus编号,从map中读取封装的结构体实例,并判断所述map中是否存在与所述bus编号绑定的结构体实例m。如果不存在,则进入步骤s3;否则进入步骤s4。
[0064]
s2:创建新的结构体实例m并将创建的结构体实例m与所述bus编号进行绑定;
[0065]
结构体实例m可以包括以下成员:数据指针、数据量、时间戳、bus编号;
[0066]
需注意,每个结构体实例仅能绑定一个唯一的bus编号,用于各个结构体实例的区分。
[0067]
s4:将所述第m路音频数据拷贝至所述结构体实例m中的数据指针所指向的地址处。
[0068]
多路音频数据的混合与输出:
[0069]
s5:运行定时器并基于所述定时器开启一轮新的混合操作;
[0070]
s6:创建空白指针;所述空白指针指定的地址处用于存在待混合的多个音频数据片段并作为指定输出。
[0071]
s7:遍历map,以找到存储有音频数据的结构体实例。
[0072]
s8:判断遍历到的当前结构体实例中的音频数据的数据量是否大于最低输出量。如果是,进入步骤s9;否则进入步骤s10。
[0073]
s9:从所述当前结构体实例中的音频数据中,拿取预设数据量的音频数据片段并将该音频数据片段混入到所述空白指针指定的地址处,并将该音频数据片段从所述当前结构体实例中删除,并更新所述当前结构体实例中的数据量。
[0074]
s10:判断map是否遍历完毕。如果是,进入步骤s11;否则进入步骤s7以遍历到当前结构体的下一个结构体。
[0075]
循环执行步骤s7~s10得到的多个结构体实例中的多个音频数据片段,以进行音频混合操作。
[0076]
利用for循环迭代,取到数据指针指定的音频数据后,输出指针与之相加。
[0077]
作为容错机制:判断相加后的值域是否在[-short,+short]([-2^15,+2^15])之
间,否则取边界值。
[0078]
s11:回调音频混合后的音频数据。
[0079]
实施例二
[0080]
图9示意性示出了根据本申请实施例二的直播场景下的多路音频的音频混合系统的框图,该直播场景下的多路音频的音频混合系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
[0081]
如图9所示,该直播场景下的多路音频的音频混合系统900可以包括接收模块910、存储模块920、拿取模块930和音频混合模块940,其中:
[0082]
接收模块910,用于接收n条音频链路提供的n路音频数据,n为大于1的正整数;
[0083]
存储模块920,用于将每路音频数据存储到相应的结构体指定的地址处,每路音频数据一一对应一个结构体;
[0084]
拿取模块930,用于以预设时间间隔拿取一个或多个结构体的音频时间片段,以得到多个音频数据片段;
[0085]
音频混合模块940,用于将所述多个音频数据片段进行音频混合处理,以得到混合后的目标音频数据。
[0086]
在示例性的实施例中,结构体包括以下成员:数据指针、数据量、时间戳及bus编号;其中,每个结构体一一对应一个bus编号。
[0087]
在示例性的实施例中,所述n路音频数据包括第m路音频数据;所述存储模块920还用于:根据所述第m路音频数据的输入序列,为所述第m路音频数据分配一个目标bus编号;判断是否存在与所述目标bus编号绑定的目标结构体;如果存在所述目标结构体,则将所述第m路音频数据存储到所述目标结构体指定的地址处;及如果不存在所述目标结构体,则创建所述目标结构体,将所述目标结构体与所述目标bus编号绑定,并将所述第m路音频数据存储到所述目标结构体指定的地址处。
[0088]
在示例性的实施例中,所述拿取模块930还用于:运行定时器,并创建空白指针;通过所述定时器判断与上一个时间节点之间的时间间隔是否达到所述预设时间间隔;如果达到所述预设时间间隔,则执行以下操作:获取各个结构体对应的当前数据量;从当前数据量大于预设输出量的各个结构体对应的地址处,分别拿取预设数据量的音频数据片段;及将分别拿取的预设数据量的音频数据片段暂存到所述空白指针指定的地址处。
[0089]
在示例性的实施例中,所述拿取模块930还用于:检测是否运行所述定时器;及如果没有运行所述定时器,则根据预设采样率创建所述定时器。
[0090]
在示例性的实施例中,各个结构体存储于相应的map中;所述拿取模块930还用于:通过各个map的索引号,遍历存储有相应结构体的map,各个map的索引号为相应的结构体的bus编号;及从所述各个map中获取相应的结构体,以获取所述各个结构体对应的当前数据量。
[0091]
在示例性的实施例中,所述音频混合系统800还包括时间戳确定模块,用于:根据首条音频链路的首路音频数据戳确定标准时间戳;将所述标准时间戳作为第一至第n路音频数据的时间戳;其中,所述标准时间戳以所述首路音频数据中的第一个音频帧为时间零
点,并且所述标准时间戳等于所述首路音频数据的所有音频帧的时间戳增量总和。
[0092]
实施例三
[0093]
图10示意性示出了根据本申请实施例三的适于实现直播场景下的多路音频的音频混合方法的计算机设备2的硬件架构示意图。本实施例中,计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑等。如图10所示,计算机设备2至少包括但不限于:可通过系统总线相互通信链接存储器1010、处理器1020、网络接口1030。其中:
[0094]
存储器1010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1010可以是计算机设备2的内部存储模块,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器1010也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,存储器1010还可以既包括计算机设备2的内部存储模块也包括其外部存储设备。本实施例中,存储器1010通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如直播场景下的多路音频的音频混合方法的程序代码等。此外,存储器1010还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0095]
处理器1020在一些实施例中可以是中央处理器(central processing unit,简称为cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1020通常用于控制计算机设备2的总体操作,例如执行与计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1020用于运行存储器1010中存储的程序代码或者处理数据。
[0096]
网络接口1030可包括无线网络接口或有线网络接口,该网络接口1030通常用于在计算机设备2与其他计算机设备之间建立通信链接。例如,网络接口1030用于通过网络将计算机设备2与外部终端相连,在计算机设备2与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,简称为gsm)、宽带码分多址(wideband code division multiple access,简称为wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。
[0097]
需要指出的是,图10仅示出了具有部件1010-1030的计算机设备,但是应该理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0098]
在本实施例中,存储于存储器1010中的直播场景下的多路音频的音频混合方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1020)所执行,以完成本申请实施例。
[0099]
实施例四
[0100]
本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的直播场景下的多路音频的音频混合方法的步骤。
[0101]
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,
sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中直播场景下的多路音频的音频混合方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0102]
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0103]
需要说明的是,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1