一种基于主副声道的多音频流混音播放方法及系统与流程

专利2022-05-09  50



1.本发明涉及音频播放技术领域,尤其涉及一种基于主副声道的多音频流混音播放方法及系统。


背景技术:

2.根据当前车载行业的发展,android系统正在成为未来的主要发展方向,android系统中支持多种音频流类型同时播放,但是由于车载音频数据源多种多样,现有技术中的混音策略方案,无法对车载音频数据源进行统一管理。
3.例如,现有技术中,混音策略的实施均由app端各自处理,各个app处理方式的不同导致混音效果的参差不齐,且由于采用不够准确的音频焦点得失时机进行混音处理,因此无法满足车载项目中的各种需求。
4.例如中国专利cn201810261860.9,该专利提出的方案是在安卓原声的音频焦点方案基础上做了一些扩展,属于java层的方法,但无法处理native层的音频。


技术实现要素:

5.本发明提供一种基于主副声道的多音频流混音播放方法及系统,解决了现有的混音策略有各自的应用端进行独立处理,由于各应用端处理方式的不同导致混音效果的参差不齐,且混音时机不够准确的技术问题。
6.为解决以上技术问题,本发明提供一种基于主副声道的多音频流混音播放方法,包括步骤:
7.s1、获取所有解码后的音频流及对应的属性信息;
8.s2、根据预设压低策略和所述属性信息,计算每一类型的所述音频流的目标输出音量;
9.s3、根据所述目标输出音量对所有类型的所述音频流进行混音输出。
10.本基础方案基于混音播放的一致性要求,将所有应用对应的音频流进行解码后,根据预设压低策略和所述属性信息,统一计算每一类型的所述音频流的目标输出音量,无需要各应用自主混音,有助于减少应用开发量,并降低音频处理失误率、提高混音效率;最后将统一调整后的所有类型的音频流进行混音,将得到的混音数据并发送至dsp模块进行音频输出,即采用音频流真正播放的时刻进行混音,从而能够进一步提高混音音频播放的一致性,给予用户更佳的混音体验。
11.在进一步的实施方案中,在所述步骤s1中:所述属性信息包括音频流类型、优先级、输出声道以及对其它所述音频流类型的压低比例。
12.在进一步的实施方案中,所述步骤s2包括:
13.s21、根据所述属性信息,判断当前音频流是否为主声道输出,若是则进入步骤s22,若否则进入步骤s23;
14.s22、根据所述属性信息,判断对应于所述当前音频流的第一音频流类型是否会压
低第二音频流类型,若是,则根据预设压低策略计算所述第一音频流类型在主声道上的目标输出音量,若否,则将其前置音量默认为目标输出音量;
15.s23、根据所述属性信息,判断是否存在压低对应于所述当前音频流的第一音频流类型的第二音频流类型,若是,则根据预设压低策略计算所述第二音频流类型在对应的主声道上或副声道上的目标输出音量,若否,退出本次音量调整。
16.其中,所述第二音频流类型为所述混音数据中区别于所述第一音频流类型的任一音频流类型。
17.本方案针对当前音频流的播放声道,依据核心的预设压低策略,针对性的设置了两种不同的混音音量修正步骤,根据主声道输出的音频流的播出特性,在判断出对应的第一音频流类型存在压低第二音频流类型(其它类型的音频流)的问题时,从第一音频流类型自身着手,直接调整其自身在主声道上的目标盘输出音量即可;而针对副声道输出的音频流,则根据预设压低策略计算所述第二音频流类型(主声道输出或副声道输出)在对应的主声道上或副声道上的目标输出音量,两个步骤相辅相成,可覆盖所有类型音频流的混音修正。
18.在进一步的实施方案中,所述步骤s22包括:
19.s221、根据所述属性信息获取所述当前音频流的优先级信息,若所述当前音频流对应的第一音频流类型的优先级最高,则进入步骤s225,否则进入步骤s222;
20.s222、遍历优先级高于所述第一音频流类型的第二音频流类型,获取所述第一音频流类型对每一所述第二音频流类型的压低比例并取最小值,标记为最小压低比例;
21.s223、当最小压低比例等于100%时,则进入步骤s225,否则根据所述最小压低比例及对应的第二音频流类型的当前音量计算混音策略音量;
22.s224、将所述混音策略音量设置为所述第一音频流类型的目标输出音量;
23.s225、将所述第一音频流类型的前置音量默认为其目标输出音量。
24.本方案从主声道输出的当前音频流的属性信息中,确定其对应的音频流类型,进一步的根据其优先级及压低比例(对优先级较高的第二音频流类型的压低比例),判断出其是否会对更为重要的音频造成影响,若是(压低比例小于100%)则根据最小压低比例及对应的第二音频流类型的当前音量计算混音策略音量(目标输出音量),从而在调整幅度最小的前提下,消除对重要性更高的音频的影响。
25.在进一步的实施方案中,当所述第二音频流类型为主声道输出时,所述步骤s23包括:
26.a、根据所述属性信息获取所述当前音频流的优先级信息,遍历优先级低于所述第一音频流类型的第二音频流类型;
27.b、判断所述第二音频流类型是否处于播放状态,若是则获取所述第一音频流类型对每一所述其第二音频流类型的压低比例并取最小值,标记为最小压低比例,若否则进入步骤e;
28.c、当最小压低比例等于100%时,则退出本次音量调整,否则根据所述最小压低比例及所述第二音频流类型的当前音量计算混音策略音量;
29.d、当判断到所述混音策略音量小于所述第二音频流类型的后置音量时,将所述混音策略音量设置为所述第二音频流类型的目标输出音量,否则退出本次音量调整;
30.e、判断到主声道是否仅有第二音频流类型处于播放状态,若是则根据所述第一音频流类型对fm的压低比例、以及所述第一音频流类型的当前音量计算fm混音策略音量,若否则退出本次音量调整;
31.f、若所述混音策略音量小于当前fm音量且不为100%,则将所述混音策略音量设置为所述第二音频流类型的目标输出音量,否则退出本次音量调整。
32.本方案考虑到副声道输出音频流的特性,对优先级低于当前音频流类型的第二音频流类型进行混音修正,可降低其它重要性较低的音频对用户收听自身携带信息的影响,提高用户获取的重要信息准确性;同时与第二音频流类型前次修正的后置音量进行对比,计算出调整幅度最小且混音效果最佳的目标输出音量;其中考虑到fm音频流直接输出至dsp播放的情况,对正在播放的第二音频流类型进行了进一步的音量修正,从而避免了fm对混音播出的干扰影响。
33.在进一步的实施方案中,当所述第二音频流类型为副声道输出时,所述步骤s23包括:
34.a、根据所述属性信息获取所述当前音频流的优先级信息,遍历优先级低于所述第一音频流类型的第二音频流类型;
35.b、获取所述第一音频流类型对每一所述第二音频流类型的压低比例;
36.c、根据每一所述压低比例和所述第一音频流类型的当前音量,计算对应所述第二音频流类型的混音策略音量;
37.d、判断所述混音策略音量是否小于所述第二音频流类型当前的前置音量,若是则将所述混音策略音量设置为所述第二音频流类型的目标输出音量,否则退出本次音量调整。
38.本方案在考虑到同为副声道输出的第一音频流类型和第二音频流类型之间干扰影响时,结合第二音频流类型前置音量的设置,将计算出的混音侧率音量与前置音量进行对比,可在前置音量符合混音一致性要求的前提下,减少音量调整步骤,提高混音播出的输出效率。
39.在所述步骤s223中,所述混音策略音量的计算公式如下:
40.minsrcstreamvol=floor(min_ratio1*topstreamcurrentvol);
41.其中,minsrcstreamvol为所述混音策略音量,min_ratio1为最小压低比例,topstreamcurrentvol为对应最小压低比例的第二音频流类型的当前音量;floor()表示向下取整功能。
42.在进一步的实施方案中,本发明还包括:
43.s0、根据框架层中各音频流的前置音量,设定副声道输出的每一音频流类型的副声道输出音量。
44.本方案根据从各应用app获取的音量设置,预先设定副声道输出的每一音频流类型的副声道输出音量,可在不影响混音效果的前提下,贴合各应用app的设置需求。
45.本发明还提供一种基于主副声道的多音频流混音播放系统,其特征在于:包括应用层、框架层、驱动层和硬件层;
46.所述应用层包括多个第三方应用程序,用于发起播放音视频的动作;
47.所述框架层用于根据预设压低策略获取并管理来源于所述第三方应用程序的多
种音频流;
48.所述驱动层包括音频驱动模块,用于响应所述音频流管理模块和/或所述混音策略模块的音频输出控制命令,完成所述音频流的播放和/或音量控制;
49.所述硬件层包括dsp模块,用于对混音后的多种所述音频流进行处理输出。
50.本基础方案为上述混音播放方法提供硬件基础,将所有的第三方应用程序对应播出的音频流进行解码后,统一分配至框架层进行音量修正,由于无需第三方应用程序额外的混音设置,有助于减少应用开发量,降低音频处理失误率、提高混音效率,进一步扩大混音策略对所有应用的适用范围;采用音频流真正播放的时刻进行混音,从而能够进一步提高混音音频播放的一致性,给予用户更佳的混音体验。
51.在进一步的实施方案中,所述框架层包括依次连接的java层媒体播放器、native层媒体播放器、音频流管理模块、混音策略模块;
52.所述java层媒体播放器,用于对java层的音频流进行软件解码;
53.所述native层媒体播放器,用于对native层的所述音频流进行软件解码;
54.所述音频流管理模块,用于将解码后的所述音频流与对应的属性信息进行封装,并发送到所述混音策略模块;用于保存每一所述音频流的播放音量;
55.所述混音策略模块,用于根据预设压低策略管理计算每一类型的所述音频流的目标输出音量,并更新到所述音频流管理模块中。
附图说明
56.图1是本发明实施例提供的一种基于主副声道的多音频流混音播放方法的工作流程图;
57.图2是本发明实施例提供的一种基于主副声道的多音频流混音播放系统的系统框架图。
具体实施方式
58.下面结合附图具体阐明本发明的实施方式,实施例的给出仅仅是为了说明目的,并不能理解为对本发明的限定,包括附图仅供参考和说明使用,不构成对本发明专利保护范围的限制,因为在不脱离本发明精神和范围基础上,可以对本发明进行许多改变。
59.实施例1
60.本发明实施例提供的一种基于主副声道的多音频流混音播放方法,如图1所示,在本实施例中,包括步骤s0~s3:
61.s0、根据框架层中各音频流的前置音量,设定副声道输出的每一音频流类型的副声道输出音量。
62.在本实施例中,前置音量是系统通过调用音频管理(audiomanager)api对各音频流的音量进行设定而得到的音量值。
63.本实施例根据从各应用app获取的音量设置,预先设定副声道输出的每一音频流类型的副声道输出音量,可在不影响混音效果的前提下,贴合各应用app的设置需求。
64.s1、获取所有解码后的音频流及对应的属性信息。
65.其中,音频流包括但不限于usb音乐、导航播报、vr语音;
66.属性信息包括音频流类型、优先级、输出声道以及对其它音频流类型的压低比例,如下表1。
67.音频流类型音频流类型标识符优先级输出声道雷达报警音radar0副声道仪表提示音cluster1副通道电话呼出bt_sco2主声道导航提示音navi3副通道电话呼入ring4主通道媒体播放music5主通道
68.表1
69.在本实施例中,优先级数字越小表示优先级越高。压低比例为预先设置的,可根据不同的用户的需求(例如使用场景)进行选择,因此在此不做列举。
70.s2、根据预设压低策略和属性信息,计算每一类型的音频流的目标输出音量,包括s21~s23:
71.s21、根据属性信息,判断当前音频流是否为主声道输出,若是则进入步骤s22,若否则进入步骤s23;
72.s22、根据属性信息,判断对应于当前音频流的第一音频流类型是否会压低第二音频流类型,若是,则根据预设压低策略计算第一音频流类型在主声道上的目标输出音量,若否,则将其前置音量默认为目标输出音量。
73.在本实施例中步骤s22包括步骤s221~s225:
74.s221、根据属性信息获取当前音频流的优先级信息,若当前音频流对应的第一音频流类型的优先级最高,则进入步骤s225,否则进入步骤s222;
75.s222、遍历优先级高于第一音频流类型的第二音频流类型,获取第一音频流类型对每一第二音频流类型的压低比例并取最小值,标记为最小压低比例;
76.s223、当最小压低比例等于100%时,则进入步骤s225,否则根据最小压低比例及对应的第二音频流类型的当前音量计算混音策略音量;
77.混音策略音量的计算公式如下:
78.minsrcstreamvol=floor(min_ratio1*topstreamcurrentvol);
79.其中,minsrcstreamvol为混音策略音量,min_ratio1为最小压低比例,topstreamcurrentvol为对应最小压低比例的第二音频流类型的当前音量;floor()表示向下取整功能。
80.s224、将混音策略音量设置为第一音频流类型的目标输出音量;
81.s225、将第一音频流类型的前置音量默认为其目标输出音量。
82.本实施例从主声道输出的当前音频流的属性信息中,确定其对应的音频流类型,进一步的根据其优先级及压低比例(对优先级较高的第二音频流类型的压低比例),判断出其是否会对更为重要的音频造成影响,若是(压低比例小于100%)则根据最小压低比例及对应的第二音频流类型的当前音量计算混音策略音量(目标输出音量),从而在调整幅度最小的前提下,消除对重要性更高的音频的影响。
83.s23、根据属性信息,判断是否存在压低对应于当前音频流的第一音频流类型的第
二音频流类型,若是,则根据预设压低策略计算第二音频流类型在对应的主声道上或副声道上的目标输出音量,若否,退出本次音量调整。
84.在本实施例中,当第二音频流类型为主声道输出时,步骤s23包括步骤a~f:
85.a、根据属性信息获取当前音频流的优先级信息,遍历优先级低于第一音频流类型的第二音频流类型;
86.b、判断第二音频流类型是否处于播放状态,若是则获取第一音频流类型对每一其第二音频流类型的压低比例并取最小值,标记为最小压低比例,若否则进入步骤e;
87.c、当最小压低比例等于100%时,则退出本次音量调整,否则根据最小压低比例及第二音频流类型的当前音量计算混音策略音量;
88.混音策略音量的计算公式如下:
89.minmainchannelvol=floor(min_ratio2*deststreamcurrentvol);
90.其中,minmainchannelvol为混音策略音量,min_ratio2为最小压低比例,deststreamcurrentvol为对应最小压低比例的第二音频流类型的当前音量;floor()表示向下取整功能。
91.d、当判断到混音策略音量小于第二音频流类型的后置音量时,将混音策略音量设置为第二音频流类型的目标输出音量,否则退出本次音量调整;
92.e、判断到主声道是否仅有第二音频流类型处于播放状态,若是则根据第一音频流类型对fm的压低比例、以及第一音频流类型的当前音量计算fm混音策略音量,若否则退出本次音量调整;
93.f、若混音策略音量小于当前fm音量且不为100%,则将混音策略音量设置为第二音频流类型的目标输出音量,否则退出本次音量调整。
94.混音策略音量的计算公式如下:
95.minfmvol=floor(fmratio*srcstreamcurrentvol);
96.其中,minfmvol为fm混音策略音量,fmratio第一音频流类型对fm的压低比例,srcstreamcurrentvol第一音频流类型的当前音量;floor()表示向下取整功能。
97.本实施例考虑到副声道输出音频流的特性,对优先级低于当前音频流类型的第二音频流类型进行混音修正,可降低其它重要性较低的音频对用户收听自身携带信息的影响,提高用户获取的重要信息准确性;同时与第二音频流类型前次修正的后置音量进行对比,计算出调整幅度最小且混音效果最佳的目标输出音量;其中考虑到fm音频流直接输出至dsp播放的情况,对正在播放的第二音频流类型进行了进一步的音量修正,从而避免了fm对混音播出的干扰影响。
98.在本实施例中,当第二音频流类型为副声道输出时,步骤s23包括步骤a~d:
99.a、根据属性信息获取当前音频流的优先级信息,遍历优先级低于第一音频流类型的第二音频流类型;
100.b、获取第一音频流类型对每一第二音频流类型的压低比例;
101.c、根据每一压低比例和第一音频流类型的当前音量,计算对应第二音频流类型的混音策略音量;
102.在步骤c中,混音策略音量的计算公式如下:
103.mindeststreamvol=floor(deststreamratio*srcstreamcurrentvol);
104.其中,mindeststreamvol为混音策略音量,deststreamratio为压低比例,srcstreamcurrentvol第一音频流类型的当前音量;floor()表示向下取整功能。
105.d、判断混音策略音量是否小于第二音频流类型当前的前置音量,若是则将混音策略音量设置为第二音频流类型的目标输出音量,否则退出本次音量调整。
106.本实施例在考虑到同为副声道输出的第一音频流类型和第二音频流类型之间干扰影响时,结合第二音频流类型前置音量的设置,将计算出的混音侧率音量与前置音量进行对比,可在前置音量符合混音一致性要求的前提下,减少音量调整步骤,提高混音播出的输出效率。
107.其中,第二音频流类型为混音数据中区别于第一音频流类型的任一音频流类型。
108.本实施例针对当前音频流的播放声道,依据核心的预设压低策略,针对性的设置了两种不同的混音音量修正步骤,根据主声道输出的音频流的播出特性,在判断出对应的第一音频流类型存在压低第二音频流类型(其它类型的音频流)的问题时,从第一音频流类型自身着手,直接调整其自身在主声道上的目标盘输出音量即可;而针对副声道输出的音频流,则根据预设压低策略计算第二音频流类型(主声道输出或副声道输出)在对应的主声道上或副声道上的目标输出音量,两个步骤相辅相成,可覆盖所有类型音频流的混音修正。
109.s3、根据目标输出音量对所有类型的音频流进行混音输出。
110.本发明实施例基于混音播放的一致性要求,将所有应用对应的音频流进行解码后,根据预设压低策略和属性信息,统一计算每一类型的音频流的目标输出音量,无需要各应用自主混音,有助于减少应用开发量,并降低音频处理失误率、提高混音效率;最后将统一调整后的所有类型的音频流进行混音,将得到的混音数据并发送至dsp模块进行音频输出,即采用音频流真正播放的时刻进行混音,从而能够进一步提高混音音频播放的一致性,给予用户更佳的混音体验。
111.实施例2
112.在本发明实施例附图中出现的附图标记包括:应用层1、框架层2,java层媒体播放器21、native层媒体播放器22、音频流管理模块23、混音策略模块24;驱动层3;硬件层4,dsp模块41、存储器42、主声道输出通道43、副声道输出通道44。
113.本发明实施例还提供一种基于主副声道的多音频流混音播放系统,参见图2,其特征在于:包括应用层1、框架层2、驱动层3和硬件层4;
114.应用层1包括多个第三方应用程序,用于发起播放音视频的动作;
115.框架层2用于根据预设压低策略获取并管理来源于第三方应用程序的多种音频流;
116.驱动层3包括音频驱动模块,用于响应音频流管理模块23和/或混音策略模块24的音频输出控制命令,完成音频流的播放和/或音量控制;
117.硬件层4包括dsp模块41,用于对混音后的多种音频流进行处理输出;还包括主声道输出通道43、副声道输出通道44(音频输出的物理通道),以及存储音频数据的存储器42。
118.本基础方案为实施例1中的混音播放方法提供硬件基础,将所有的第三方应用程序对应播出的音频流进行解码后,统一分配至框架层2进行音量修正,由于无需第三方应用程序额外的混音设置,有助于减少应用开发量,降低音频处理失误率、提高混音效率,进一步扩大混音策略对所有应用的适用范围;采用音频流真正播放的时刻进行混音,从而能够
进一步提高混音音频播放的一致性,给予用户更佳的混音体验。
119.在本实施例中,框架层2包括依次连接的java层媒体播放器21、native层媒体播放器22、音频流管理模块23、混音策略模块24;
120.java层媒体播放器21,用于对java层的音频流进行软件解码;
121.native层媒体播放器22,用于对native层的音频流进行软件解码;
122.音频流管理模块23,用于将解码后的音频流与对应的属性信息进行封装,并发送到混音策略模块24;还用于保存每一音频流的播放音量;
123.具体的:音频流管理模块23在接收到java层媒体播放器21及native层媒体播放器22软件解码后的音频流(例如pcm数据流)后,根据音频流的音频流类型调用相应的属性信息,将该音频流与这些属性信息进行封装,并将封装完成的音频流发送给混音策略模块24。
124.混音策略模块24,用于根据预设压低策略管理计算每一类型的音频流的目标输出音量,并更新到音频流管理模块23中,具体为实现实施例1中的步骤s2。
125.在本实施例中,多媒体app、导航app、vr app产生的音频属于java层音频,电话app产生的电话音频属于native层音频,fm产生的音频则直接输入到硬件层4。
126.前置音量是指音频流管理模块23存储的框架层2中各音频流的音量;对应的,后置音量是音频流管理模块23存储的用户调整后保存的主声道的音量以及预先设定好的副声道的音量。
127.上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
转载请注明原文地址:https://doc.8miu.com/read-1050147.html

最新回复(0)