音频播放方法、装置、电子设备及存储介质与流程
本申请涉及音频技术领域,具体而言,本申请涉及一种音频播放方法、装置、电子设备及存储介质。
背景技术:
随着互联网的发展,用户可以随时通过音频分享网站获取、播放音频,如:新闻、影视作品等。目前,音频播放的处理流程为:发送端通过麦克风采集音频信号,发送端按照设定一组预设的编码参数进行音频编码,编码生成的音频码流通过网络发送到服务器,服务器将相应的码流发送到各接收客户端,接收客户端接收到码流后进行解码和播放。
现有的音频播放过程中根据固定编码参数生成一份音频码流,所有接收客户端收到相同的码流,但是不同接收客户端其网络质量存在差异,在网络质量好的情况下,网络带宽比较充足基本无丢包,但网络质量不好的情况下,网络带宽受限导致经常丢包,而且,接收客户端的播放设备的音频播放能力有差异,有些设备能支持高采样率的高质量音频播放,而有些设备播放能力受限只能支持较低的音频采样率信号的播放,随着网络带宽、播放设备等因素的调整,原本适合与网络带宽、播放设备等因素适配的音频信号可能无法在调整后的设备上正常播放,若强制切换不同编码参数生成的码流,可能出现明显杂音问题,影响用户收听体验。
技术实现要素:
本申请的目的旨在至少能解决上述的技术缺陷之一,特提出以下技术方案:
本申请的一个方面,提供了一种音频播放方法,包括:
根据接收端的音频需求参数确定下发到接收端的音频码流;
在所述音频码流播放过程中监测到所述音频需求参数更新时,根据更新后的音频需求参数确定更新音频码流;
基于所述音频码流及更新音频码流进行码流拼接处理,获得切换音频码流;
将所述切换音频码流下发给所述接收端,以使接收端接收该切换音频码流并对该切换音频码流进行解码播放。
本申请的另一个方面,提供了一种音频播放装置,该装置包括:
音频码流模块,用于根据接收端的音频需求参数确定下发到接收端的音频码流;
更新音频码流模块,用于在所述音频码流播放过程中监测到所述音频需求参数更新时,根据更新后的音频需求参数确定更新音频码流;
切换音频码流模块,用于基于所述音频码流及更新音频码流进行码流拼接处理,获得切换音频码流;
播放音频码流模块,用于将所述切换音频码流下发给所述接收端,以使接收端接收该切换音频码流并对该切换音频码流进行解码播放。
本申请的再一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现本申请第一方面所示的音频播放方法。
本申请的又一个方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现本申请第一方面所示的音频播放方法。
本申请提供的技术方案带来的有益效果是:
本申请提供的音频播放方法,基于音频需求参数更新前的音频码流及更新后的更新音频码流进行拼接处理,获得切换音频码流,切换音频码流通过拼接的方式,如可以在合适的时机及特殊的拼接方式实现,拼接后的切换音频码流与更新音频码流不同,避免直接从音频码流切换至更新音频码流,因此也避免强制切换码流带来的杂音等问题,提升用户体验。
本申请提供的音频播放方法,根据接收端的音频需求参数确定最终播放的音频码流,最终解码播放的音频码流与接收端的音频需求参数相适应,即下发的音频码流满足接收端的音频播放需求,如:满足接收端的播放参数、网络带宽、用户自定义音频参数等需求,实现根据接收端的播放需求动态调整下发的音频码流,能够避免带宽浪费及待下发的音频码流的响应时长过长,提升播放设备及带宽的利用率,而且能够满足音频播放的实时性要求,能够适用于音频直播场景中。
本申请提供的音频播放方法,在检测到音频需求参数发生变化时,针对更新前的音频码流中的音频帧样点值进行检测,若音频帧样点值满足切换条件,则将更新音频码流作为待下发的音频码流,实现音频码流的切换,实现在音频播放过程中,动态根据接收端音频需求参数的调整而切换待下发的音频码流。而且,切换条件为音频帧样点值表征的能量值低于预设阈值,能量值低于预设阈值的音频帧为低能量帧或静音帧,本申请在低能量帧或静音帧进行音频码流的切换,能够避免在音频码流切换过程中出现明显杂音,实现音频码流的顺畅切换。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请一个实施例提供的音频播放方法的应用场景图;
图2为本申请一个实施例提供的音频播放方法的流程图;
图3为本申请一个实施例提供的音频码流切换的流程图;
图4-1为本申请一个实施例提供的无约束条件下切换不同编码参数对应的音频码流的语谱图;
图4-2为本申请一个实施例提供的有约束下切换不同编码参数对应的音频码流的语谱图;
图5为本申请另一个实施例提供的音频播放方法的流程图;
图6为本申请一个实施例提供的音频码流矩阵的示意图;
图7为本申请另一实施例提供的切换音频码流的流程图;
图8为本申请实施例提供的一种音频播放装置的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
音频直播是通过互联网网络系统,在不同的交流平台上收听同一个音频节目,听众可以通过连线方式与主播进行声音交流互动。
采样率:每秒从连续信号中提取并组成离散信号的采样个数,单位用赫兹(hz)来表示。
帧率,是用于测量显示帧数的量度,测量单位为每秒显示帧数或赫兹。
码率,音频文件在单位时间内使用的数据流量,该参数的单位通常是千比特每秒(kbps)。
发明人在研究过程中发现,即便服务器存储了不同质量的码流,由于大部分音频编码器的编码原理决定了其生成的码流具有帧间相关性,即不能随意切换不同编码参数下生成的码流,如果对不同编码参数的音频码流进行强制切换,则解码器会出现异常音频信号,可能会出现明显杂音,影响用户的收听体验。
对于现有技术中所存在的技术问题,本申请提供的音频播放方法、装置、电子设备及存储介质,旨在解决现有技术的如上技术问题中的至少一项,能够根据接收端的音频需求确定相对应的音频码流,以提升对网络带宽、接收端播放设备的利用率,还能够在不影响用户体验的情况下,根据音频需求参数的更新进行音频码流的切换。
下面以具体实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请一个实施例提供的音频播放方法的应用场景图,该场景中包括:服务器端、发送端、接收端,发送端和接收端可以均设在客户端,发送端将本地采集的源音频信号上传至服务器,服务器端对源音频信号进行处理,获得处理后的音频码流,结合接收端上传的音频需求确定待下发的音频码流,并将待下发的音频码流下发至接收端,接收端接收服务器下发的音频码流,并解码播放,检测到音频需求参数更新时,获得更新后的音频需求参数对应的更新音频码流,基于音频码流及更新音频码流进行音频码流的拼接处理,获得切换音频码流,将切换音频码流下发接收端实现根据接收端的音频需求确定相对应的音频码流,也实现根据音频需求参数调整而动态调整下发到接收端的音频码流,提高对网络带宽、接收端播放设备的利用率以及切换的实时性。
本申请实施例中提供了一种可能的实现方式,如图2所示,提供了一种音频播放方法,该方案可以在服务器端执行,包括以下步骤:
s210,根据接收端的音频需求参数确定下发到接收端的音频码流;
s220,在音频码流播放过程中监测到音频需求参数更新时,根据更新后的音频需求参数确定更新音频码流;
s230,基于音频码流及更新音频码流进行音频码流的拼接处理,获得切换音频码流;
s240,将切换音频码流下发给接收端,以使接收端接收该切换音频码流并对该切换音频码流进行解码播放。
首先根据接收端的音频需求参数确定下发到接收端的音频码流,该音频码流与接收端当前的音频需求参数相适配,然后,持续监测接收端的音频需求参数,若在音频码流播放过程中检测到接收端的音频需求参数发生更新,则根据更新后的音频需求参数确定更新音频码流,该更新音频码流与更新后的音频需求参数相适配。
实时监测接收端的音频需求参数,音频需求参数包括:接收端的播放参数、网络带宽、自定义音频参数等。
可选地,可以按照预设周期获取接收端的音频需求参数,对比当次音频需求参数与前次音频需求参数,若两次音频需求参数中的任一参数不同,表明接收端的音频需求参数发生了更新。
可选地,也可以通过如下方式确定接收端的音频需求参数进行了更新,具体如下:
接收端的音频需求参数可以是接收端主动上传的,也可以是服务器端设置定期获取接收端的音频需求参数指令,响应于该指令定期获取接收端的音频需求参数。接收端的播放参数包括播放设备及其播放能力,在播放设备更换后,接收端可以主动上传播放设备及其播放能力,如:由播放音箱切换到蓝牙耳机,则接收端在切换完毕后,主动检测并上传蓝牙耳机的标识及播放能力。接收端的网络带宽可以包括:wifi、5g、4g、3g等对应的带宽形式,在网络带宽切换时,可以响应于服务器下发的获取指令定时上报或实时上报网络带宽。接收端的自定义音频参数,该音频参数为用户自定义,用户触发自定义音频参数时,接收端可以主动上传自定义音频参数。
当检测到上述音频需求参数中任一参数发生改变,即音频需求参数进行更新时,获取更新后的音频需求参数,根据更新后的音频需求参数从多组音频码流中确定更新音频码流。
由于强制切换音频码流会导致出现杂音等问题,因此,本申请基于音频需求参数更新前的音频码流及更新后的更新音频码流进行拼接处理,获得切换音频码流,切换音频码流通过拼接的方式,如可以在合适的时机及特殊的拼接方式实现,拼接后的切换音频码流与更新音频码流不同,也就是说,并不会发生直接从音频码流切换至更新音频码流,避免了强制切换带来的杂音等问题,提升用户体验。
为了更清楚本申请提供的音频播放方案及其技术效果,接下来以多个实施例对其具体实施方案进行详细阐述。
一种实施例中,s210提供的根据接收端的音频需求参数确定下发到接收端的音频码流,可以通过如下方式实现,包括如下子步骤:
a1,获取原始音频信号,按照预设的多组编码参数分别对所述原始音频信号进行音频编码,获得各组编码参数分别对应的音频码流;
a2,获取接收端的音频需求参数,根据该音频需求参数从多组音频码流中确定待下发的音频码流;其中,音频需求参数包括:接收端的播放参数、网络带宽、自定义音频参数中的至少一项;
a3,将待下发的音频码流发送给接收端,以使接收端接收该音频码流并对该音频码流进行解码播放。
服务器端获取原始音频信号,该原始音频信号可以是发送端上传的音频信号,也可以是对发送端上传的音频信号进一步处理的信号,如对发送端上传的音频信号进行解码后的音频信号。
获取预设的多组编码参数,利用该多组编码参数对原始音频信号进行音频编码,获得各组编码参数分别对应的音频码流;其中,编码参数包括音频采样率、编码码率、包大小等。
编码参数的获取过程如下:预设包含多个编码码率的码率列表以及包含多个采样率的采样率列表,其中,从码率列表中抽取编码码率,从采样率列表中抽取采样率,形成一组编码参数;编码码率及编码参数根据具体音频编码器支持能力而定,如:常用的采样率有:11025hz、22.05khz、24khz、44.1khz、48khz,常用的编码码率有:6000kbps、1100kbps、2000kbps、192kbps、12kbps等,如:编码码率为6000kbps+采样率为24khz、编码码率为2000kbps+采样率为24khz等。
利用上述获得的多组编码参数对原始音频信号进行音频编码,获得各组编码参数分别对应的音频码流,并将生成的音频码流在服务器上进行缓存。
由于音频编码器的型号有限,因此,根据音频编码器的支持能力确定的编码参数的数量是有限的,因此,服务器缓存各编码参数对应的音频码流的空间是有限的,并不会对服务器的存储资源造成巨大浪费。
获取接收端的音频需求参数,音频需求参数包括:接收端的播放参数、网络带宽、自定义音频参数等,其中,接收端的播放参数如播放设备、播放设备的采样率等,自定义音频参数如用户根据自身需求自定义音频信号的播放参数等。
根据音频需求参数从多组音频码流中确定待下发的音频码流,即,从多组音频码流中选取与接收端的音频需求参数相匹配的音频码流,将其确定为待下发的音频码流,待下发的音频码流符合接收端的音频需求参数,该音频需求也是音频播放需求,音频需求参数包括:接收端的播放参数、网络带宽、自定义音频参数,待下发的音频码流需满足音频需求参数中的至少一项,也可以满足所有音频需求参数,例如:播放设备为高保真音响,网络带宽为10mbit/s,但自定义音频参数中采样率及码率均较低,则只能为该音频需求参数下发编码参数与其中自定义音频参数相匹配的编码参数对应的音频码流。
将待下发的音频码流发送给接收端,以使接收端接收该音频码流并对该音频码流进行解码播放。
对网络质量好、播放设备好的音频播放需求下发与音频需求参数呈正比的编码参数对应的音频码流,以实现高保真高质量的音频播放,对设备播放能力较差、网络质量不好,不能进行高质量播放,只能下发与该音频需求参数相匹配的音频码流进行解码播放。
音频需求参数与编码参数呈正比,即音频需求参数中播放参数、网络带宽、自定义音频参数越高,其对应的编码参数中编码码流、采样率越高,即网络质量好、播放设备好、自定义音频参数高的音频需求参数下,接收端接收到编码码率、采样率高的音频码流,以实现高保真高质量的音频播放。
本申请提供的音频播放方法,根据接收端的音频需求参数确定最终播放的音频码流,最终解码播放的音频码流与接收端的音频需求参数相适应,即下发的音频码流满足接收端的音频播放需求,如:满足接收端的播放参数、网络带宽、用户自定义音频参数等,实现根据接收端的播放需求动态调整下发的音频码流,能够避免带宽浪费,提高接收端播放设备及网络带宽的利用率。而且,还能够避免待下发的音频码流的响应时长过长,满足音频播放的实时性要求,该方案提供的方法适用于音频直播场景中。
一种可选实施例中,a2的根据音频需求参数从多组音频码流中确定待下发的音频码流,可通过如下方式实现,包括:
b1,利用预设的音频需求参数与编码参数的映射表以及音频需求参数,确定该音频需求参数对应的编码参数;
b2,将该编码参数对应的音频码流确定待下发的音频码流。
预先构建音频需求参数与编码参数的映射表,即该映射表中每个音频需求参数均对应一组编码参数,如:针对网络质量好、播放设备高保真可设置对应的编码参数为:48khz采样率+192kbps码率,按照该种方式,将音频需求参数与编码参数构建关联关系,形成音频需求参数与编码参数的映射表。
根据音频需求参数查找该映射表中与之关联的编码参数,再基于获得的编码参数对音频需求参数进行编码获得对应的音频码流,将该音频码流作为待下发的音频码流,该方法能够准确且快速地确定待下发的音频码流。
由于接收端的音频需求参数多种多样,而映射表中存储的音频需求参数是有限的,因此,存在部分音频需求参数并未存储在映射表中,针对这部分音频需求参数,本申请实施例提供了一种解决方案,具体如下:
在上一实施例的基础上,一种可选实施例中,若映射表中未存储与接收端的音频需求参数对应的编码参数时,a2的根据音频需求参数从多组音频码流中确定待下发的音频码流,可通过如下方式实现,包括:
c1,获取映射表中与来自接收端的音频需求参数最接近的音频需求参数,将映射表中最接近的音频需求参数作为接收端的近似音频需求参数;
c2,根据该近似音频需求参数对应的编码参数作为接收端的音频需求参数所对应的编码参数,并将该编码参数对应的音频码流确定为待下发的音频码流。
在映射表中查找与接收端的音频需求参数最接近的音频需求参数,将该最接近的音频需求参数作为接收端的近似音频需求参数,在映射表中查找与该近似音频需求参数存在关联关系的编码参数,并将利用该编码参数进行音频编码获得的音频码流作为待下发的音频码流,能够快速准确地确定待下发的音频码流。
该实施例提供的方案能够解决接收端的音频需求参数并未存储在映射表中时,确定待下发的音频码流问题,而且,在该方案中,映射表中无需存储大量的参数对,只存储有限数量的参数对,以减少映射表对内存空间的占用。
可选地,该映射表可以按照音频需求参数表征的需求高低进行排序,本申请还能将映射表中需求低于接收端的音频需求参数的音频需求参数作为最接近的音频需求参数,以便满足接收端播发设备流畅播放的需求。
若播放过程中音频需求参数发生变化,音频需求参数对应的音频码流也会发生变化,对应的编码参数也不同,即该种情况下会出现编码参数的切换。针对该情况,本申请基于当前正在播放的音频码流及更新音频码流进行码流拼接处理,以获得切换音频码流,本申请提供了一种可选的实现方式,其中一种获得切换音频码流的实现方式请参照流程图3,包括:
s310,获得音频需求参数更新时正在播放的音频帧;
s320,对音频码流中音频帧及该帧之后的每一音频帧进行音频帧样点值检测;
s330,获得首次检测到音频帧样点值满足切换条件时对应的第一音频帧,获得音频码流中正在播放的音频帧至该第一音频帧的音频码流段,以及更新音频码流中第一音频帧之后的更新音频码流段;其中,切换条件包括:音频帧样点值表征的能量值低于预设阈值;
s340,对音频码流段与更新音频码流段进行拼接处理,获得切换音频码流。
获取到更新音频码流之后,需要在合适的时机、特定的规则约束下才能进行切换,避免解码后的音频码流出现异常,不同处理操作进行音频码流切换的语谱图如图4所示,图4-1为无约束条件下切换不同编码参数对应的音频码流的语谱图,图4-2为有约束下切换不同编码参数对应的音频码流的语谱图,通过对比可知,图4-1中出现明显的竖状条纹,在这些出现竖状条纹的位置会出现明显的杂音,而图4-2并未出现明显的竖状条纹,语谱自然流畅,因此,在有约束条件下进行不同编码参数对应的音频码流的切换能够减少杂音的产生,进而提升用户体验。
一种可选实施例中,在有约束条件下进行音频码流切换可以通过s320至s340提供的步骤实现,具体如下:
对当前音频码流中的每一音频帧进行音频帧样点值检测,所述音频帧样点值为音频帧上预设采样点的幅值;当检测到音频帧样点值满足切换条件时,表明切换时机合适,获得首次检测到音频帧样点值满足切换条件时对应的第一音频帧,在第一音频帧进行切换,在第一音频帧之前采用音频码流进行播放,在第一音频帧之后采用更新音频码流进行播放,因此,待播放的切换音频码流由两部分拼接而成,具体地,由音频码流中正在播放的音频帧至第一音频帧的音频码流段,与更新音频码流中第一音频帧之后的更新音频码流段拼接而成。
s330之前,还包括:s321,判断音频帧样点值是否满足切换条件。当满足切换条件时,执行s330,当不满足切换条件时,执行s331,当音频帧样点值不满足切换条件时,按照更新前的编码参数进行音频编码,该音频帧播放时采用该音频编码对应的音频码流信息,针对下一帧音频帧循环执行s320-s321,直至音频样点值满足切换条件,将满足切换条件的音频样点值对应的第一音频帧之后的音频段采用更新后音频码流作为待下发的音频码流。
该实施例提供的音频播放方法,在检测到音频需求参数发生变化时,针对更新前的音频码流中的音频帧样点值进行检测,若音频帧样点值满足切换条件,即约束条件,则将更新音频码流作为待下发的音频码流,实现音频码流的切换,实现在音频播放过程中,动态根据接收端音频需求参数的调整而切换待下发的音频码流。
本实施例提供的方案,根据音频帧样点值是否满足切换条件的结果判断切换时机,若音频帧样点值不满足切换条件,则不进行切换,仅当音频帧样点值满足切换条件时才进行音频码流切换,也就是说,正在播放的音频帧之后的切换音频码流包括:第一音频帧之前的音频码流段以及更新音频码流中第一音频帧之后的更新音频码流段。在该切换时机进行音频流的切换,有利于实现音频码流的顺畅切换。
可选地,上述切换条件为:音频帧样点值表征的能量值低于预设阈值。其中,预设阈值可以根据实际情况自定义。能量值低于预设阈值的音频帧为低能量帧或静音帧,本申请在低能量帧或静音帧进行音频码流的切换,能够避免在音频码流切换过程中出现明显杂音,实现音频码流的顺畅切换,且不会影响用户体验。
对更新前的音频码流中的每一音频帧逐帧进行音频帧样点值检测,假设音频采样率=8000,采样通道=2,位深度=8,采样间隔=20ms,则每帧音频帧数据大小为320比特,每个通道样本数为160比特,在每帧音频帧上设置320个样本点,获得每个样本点的幅值,对音频帧上包括的所有样本点的幅值的平方和求平均获得该音频帧的能量值。
可选地,当音频帧上所有样本点的幅值均不超过50时,该音频帧为静音帧;当音频帧的能量值小于10000时,该音频帧为低能量帧。音频码流在当前音频帧为静音帧或低能量帧下进行切换的判断逻辑如下:
其中,thrd为采样值判决门限,lowenerflag为低能量帧标志,当lowenerflag为1时则可以进行切换。
本申请提供的音频播放方法,在当前音频帧为静音帧或低能量帧时才能进行音频码流的切换,能够避免在音频码流切换过程中出现明显杂音,实现音频码流的顺畅切换。
上述实施例提供的方案是在服务器上基于音频帧样点值满足切换条件后进行新旧配置的音频码流切换的方法,最终确定的切换音频码流会在客户端上实现解码、播放。该方法对不同版本的客户端都能实现功能兼容,顺畅进行音频信息的播放。除此之外,本申请还提供了另一种实施例以实时获得切换音频码流,包括:
d1,获得音频需求参数更新时正在播放的音频帧以及该音频帧在更新音频码流中对应的新音频帧;
d2,将该音频帧与新音频帧进行信号淡入淡出拼接处理,得到切换音频帧;
d3,利用该切换音频帧替换更新音频码流中的新音频帧,将包含切换音频帧的更新音频码流确定为切换音频码流。
其中,对音频帧与新音频帧进行信号淡入淡出拼接处理,获得切换音频帧可以通过如下公式进行:
d(n)=win(n)*d1(n)+(1-win(n))*d2(n)
其中,d(n)为其淡入淡出处理后得到的切换音频帧信号,d1(n)、d2(n)分别为音频需求参数更新前的音频码流解码后的脉冲编码调制信号、音频需求参数更新后的更新音频码流解码后的脉冲编码调制信号,n为音频样点序号,n的取值范围为1~n,win为汉宁窗半窗,例如汉宁窗大小为2*n,这里用到的win为前n个音频样点的窗信号。
本实施例提供的方案中,服务器在收到音频参数发送变化时,无需等待切换条件满足,而是把切换时刻对应的同一音频帧的旧码流帧和新码流帧同时发送到客户端,这里的旧码流帧为音频码流中切换时刻的音频帧,新码流帧为更新音频码流中切换时刻的新音频帧。客户端收到同一音频帧的两种新旧码流帧后进行分别解码,解码后得到同一时刻的两帧音频数据,新旧码流帧的音频内容是相近的,只是质量上有些差别,通过对这两帧信号做信号淡入淡出拼接处理后,得到整合后的切换音频帧,该整合后的切换音频帧为切换后的第一帧音频帧,此后服务器将只需发送该帧之后的更新音频码流段到客户端,客户端只需对接收到的更新音频码流段进行解码、播放。
本实施例提供的方案,能够在检测到音频需求参数发生更新时,立即切换音频码流,且由于对正在播放的音频帧进行了两种音频帧的处理,因此,也不会在切换过程中出现杂音等问题,顺畅切换音频码流的同时,有利于提高音频码流切换的实时性。
一种可选实施例中,s320提供的在音频码流播放过程中监测到音频需求参数更新,可以通过如下方式实现,包括:
检测到来自接收端的自定义音频参数的触发操作、网络带宽的更新消息、播放参数的更新操作中的任一项发生,则确定接收端的音频需求参数发生更新。
具体地,接收端的播放参数包括播放设备及其播放能力,在播放设备更换后,接收端可以主动上传播放设备及其播放能力,如:由播放音箱切换到蓝牙耳机,则接收端在切换完毕后,主动上传蓝牙耳机的标识及播放能力,其中播放能力如采样率等。接收端的网络带宽可以包括:wifi、5g、4g、3g等对应的带宽形式,在网络带宽切换时,可以响应于服务器下发的获取指令定时上报或实时上报网络带宽。接收端的自定义音频参数,该音频参数为用户自定义,用户触发自定义音频参数时,接收端主动上传调整后的自定义音频参数。
当检测到上述音频需求参数中任一参数发生改变,即确定音频需求参数进行更新,该方法能够准确判断接收端的音频需求参数是否发生了变化,且执行过程简单,避免占用过多资源进行该判断。
一种可选实施方式中,a1公开的获得各组编码参数分别对应的音频码流之后,还包括如下步骤,包括如下步骤的音频播放方法的流程图如图5所示。
s510,将所述音频码流按照预设时间段进行分段,获得多个音频段,并将各音频段按照时间顺序进行排序;
s520,按照同一时间段对应的音频段置于同一行,不同编码参数对应的音频段置于不同列的方式,形成针对按时间排序后的多个音频段的音频码流矩阵。
多组编码参数对应多个音频码流,每个音频码流都可以按照预设时间段划分为多个音频段,然后再将这些划分后的音频段按照时间顺序进行有序排序,将同一时间段不同编码参数对应的音频段置于同一行,将不同时间段同一编码参数对应的音频段置于同一列,按照这种方式,将多组编码参数对应的多个音频码流形成音频码流矩阵,矩阵中每个音频段均对应不同时间及编码参数。如图6所示,该音频码流矩阵中包括编码参数1、编码参数2、编码参数3、…、编码参数n对应的音频码流,编码参数1对应的音频码流包括如下音频段:stream_1(t)、stream_1(t+1)、stream_1(t+2)、…,编码参数n对应的音频码流包括如下音频段:stream_n(t)、stream_n(t+1)、stream_n(t+2)、…,每组编码参数对应的音频段按照时间顺序排成一列,各组编码参数对应的编码能力不同,编码参数1至n对应的编码能力可以由大到小,也可以由小到大,在此不做限制。
例如:编码参数1对应的是48khz采样率+192kbps码率组合,该组合对应的音频码流为图6中的编码参数1的队列,但是对音频质量要求不高的用户,其网络质量不好,播放设备较差,不能满足高质量播放的需求,若需要流畅播放,则其音频需求参数对应较低编码参数配置,例如8khz采样率+12kbps码率的组合,由于这种组合中码流包较小,能够适应网络较弱的场景,结合一定的抗丢包技术就能较好地满足用户流畅播放的需求,若编码参数1至n是按照编码能力由大到小的顺序排序,则该种情况下可以选用编码参数n的码流队列。
进一步地,若上述分段的预设时间段为音频码流的采样间隔,如20ms等,则一个预设时间段对应的音频段为一个音频帧。
在此情况下,即上述预设时间段与音频码流的采样间隔相等时,当检测到接收端的音频需求参数更新时,根据更新后的音频需求参数确定更新音频码流,可以通过如下方式获得,包括:
s3101,获取音频需求参数的更新时间,并根据更新后的音频需求参数确定对应的更新编码参数;
s3102,定位该更新编码参数在所述音频码流矩阵的位置,将更新编码参数所在列中所述更新时间之后的时间段对应的音频段确定为更新音频码流。
具体地,对于音频需求参数有动态变化的接收端,其所需要的码流可能来自不同的编码参数对应的音频码流队列,例如从最高音频质量的编码参数1的音频码流队列切换到音频质量稍低的编码参数3的音频码流队列,若检测到音频需求参数的更新时间为(t+1),那么编码参数3对应的音频码流队列中,(t+1)之后的时间段对应的音频段为更新音频码流。
本申请实施例提供的音频播放方法,将音频码流划分为多个音频段,按序形成音频码流矩阵,能够直观地确定当前音频帧或音频段在音频码流矩阵中的位置。在利用音频码流矩阵确定更新音频码流时,只需要获得音频需求参数的更新时间,即可结合该更新时间、更新编码参数及音频码流矩阵,准确获得更新编码参数。
本申请一种实施例中,切换音频码流的方案可以通过如图7所示的流程图实现,具体过程如下:服务器端执行如下步骤:获取接收客户端的音频需求参数,包括:用户音频质量自定义配置信息、网络带宽及质量检测信息、播放设备能力检测信息;基于接收客户端的音频需求参数结合预设的音频质量配置映射表确定配置参数,这里的配置参数也称为编码参数;然后,对音频码流中未播放的音频帧进行帧样点值检测,因此判断各音频帧的帧样点值是否满足切换条件;若是,则配置新编码参数;若否,则配置现有编码参数,即更新前的音频需求参数,获得更新前的音频需求参数对应的音频码流中下一音频帧,判断该下一音频帧的帧样点值是否满足切换条件,若否,继续判断循环,直至下一音频帧的帧样点值满足切换条件,配置新编码参数,获得新编码参数对应的更新音频码流,并通过分布式cdn服务器转发到接收客户端,实现在音频帧样点值满足切换条件的情况下进行音频码流切换,避免强制切换音频码流导致的杂音等现象出现。
一种可选实施例中,步骤a1公开的获取原始音频信号可以通过如下方式实现,包括:
e1,接收发送端在预设采样率下采集并上传的源音频信号;其中,预设采样率大于预设阈值;
e2,对该源音频信号进行解码获得原始音频信号。
发送端采集源音频信号,可以利用预设采样率进行采集,预设采样率可以是采样率大于预设阈值的采样率,该预设阈值可以根据行业划分的高质量音频信号的采样率获得,也可以是发送端的最大采样率,能够上传最大保真程度的音频信号。其中,采样率可以48khz、24khz、16khz、8khz等,若预设阈值为16khz,那么预设采样率可以为48khz、24khz,以保证本申请利用大于预设阈值的预设采样率采集的源音频信号为高质量音频信号,以便服务器基于高质量音频信号进行处理后,接收端在音频需求参数允许的情况下,能够播放高质量的音频码流,提升用户体验。
基于与本申请实施例所提供的方法相同的原理,本申请实施例还提供了一种音频播放装置800,如图8所示,该装置可以包括:音频码流模块810、更新音频码流模块820、切换音频码流模块830、播放音频码流模块840,其中:
音频码流模块810,用于根据接收端的音频需求参数确定下发到接收端的音频码流;
更新音频码流模块820,用于在所述音频码流播放过程中监测到所述音频需求参数更新时,根据更新后的音频需求参数确定更新音频码流;
切换音频码流模块830,用于基于所述音频码流及更新音频码流进行码流拼接处理,获得切换音频码流;
播放音频码流模块840,用于将所述切换音频码流下发给所述接收端,以使接收端接收该切换音频码流并对该切换音频码流进行解码播放。
本申请提供的音频播放装置,基于音频需求参数更新前的音频码流及更新后的更新音频码流进行拼接处理,获得切换音频码流,切换音频码流通过拼接的方式,如可以在合适的时机及特殊的拼接方式实现,拼接后的切换音频码流与更新音频码流不同,避免直接从音频码流切换至更新音频码流,因此也不会出现强制切换码流带来的杂音等问题,提升用户体验。
可选地,切换音频码流模块830,包括:
获得音频帧单元,用于获得所述音频需求参数更新时正在播放的音频帧;
检测单元,用于对所述音频码流中所述音频帧及该帧之后的每一音频帧进行音频帧样点值检测;
获得码流段单元,用于获得首次检测到音频帧样点值满足切换条件时对应的第一音频帧,获得所述音频码流中正在播放的音频帧至所述第一音频帧的音频码流段,以及所述更新音频码流中所述第一音频帧之后的更新音频码流段;其中,所述切换条件包括:所述音频帧样点值表征的能量值低于预设阈值;
第一拼接单元,用于对所述音频码流段与所述更新音频码流段进行拼接处理,获得切换音频码流。
可选地,切换音频码流模块830,还包括:
获得新音频帧单元,用于获得所述音频需求参数更新时正在播放的音频帧以及该音频帧在所述更新音频码流中对应的新音频帧;
第二拼接单元,用于将所述音频帧与新音频帧进行信号淡入淡出拼接处理,得到切换音频帧;
确定切换音频码流单元,用于利用所述切换音频帧替换所述更新音频码流中的新音频帧,将包含切换音频帧的更新音频码流确定为切换音频码流。
可选地,音频码流模块810,包括:
音频编码单元,用于获取原始音频信号,按照预设的多组编码参数分别对所述原始音频信号进行音频编码,获得各组编码参数分别对应的音频码流;
确定待下发码流单元,用于获取接收端的音频需求参数,根据所述音频需求参数从多组音频码流中确定待下发的音频码流;所述音频需求参数包括:接收端的播放参数、网络带宽、自定义音频参数中的至少一项;
解码播放单元,用于将所述待下发的音频码流发送给所述接收端,以使接收端接收该音频码流并对该音频码流进行解码播放。
本申请提供的音频播放装置,根据接收端的音频需求参数确定最终播放的音频码流,最终解码播放的音频码流与接收端的音频需求参数相适应,即下发的音频码流满足接收端的音频播放需求,如:接收端的播放参数、网络带宽、用户自定义音频参数等,实现根据接收端的播放需求动态调整下发的音频码流,能够避免带宽浪费、避免待下发的音频码流的响应时长过长。
可选的,确定待下发码流单元,具体用于:
利用预设的音频需求参数与编码参数的映射表、以及所述音频需求参数,确定所述音频需求参数对应的编码参数;
将所述编码参数对应的音频码流确定待下发的音频码流。
可选的,当所述映射表中未存储与所述音频需求参数对应的编码参数时,确定待下发码流单元,具体用于:
获取所述映射表中与来自接收端的音频需求参数最接近的音频需求参数,将映射表中最接近的音频需求参数作为接收端的近似音频需求参数;
根据所述近似音频需求参数对应的编码参数作为接收端的音频需求参数所对应的编码参数,并将该编码参数对应的音频码流确定为待下发的音频码流。
可选的,更新音频码流模块820,具体用于:
检测到来自接收端的自定义音频参数的触发操作、网络带宽的更新消息、播放参数的更新操作中的任一项发生,则确定接收端的音频需求参数发生更新。
可选地,音频播放装置800,还包括:
分段排序模块,用于将所述音频码流按照预设时间段进行分段,获得多个音频段,并将各音频段按照时间顺序进行排序;
音频码流矩阵模块,用于按照同一时间段对应的音频段置于同一行,不同编码参数对应的音频段置于不同列的方式,形成针对按时间排序后的多个音频段的音频码流矩阵;
该实施例中,所述预设时间段与音频码流的采样间隔相等时,更新音频码流模块,具体用于:
获取所述音频需求参数的更新时间,并根据更新后的音频需求参数确定对应的更新编码参数;
定位所述更新编码参数在所述音频码流矩阵中的位置,将所述更新编码参数所在列中所述更新时间之后的时间段对应的音频段确定为更新音频码流。
可选的,音频编码单元,还包括:
接收源音频信号子单元,用于接收发送端在预设采样率下采集并上传的源音频信号;其中,所述预设采样率大于预设阈值;
获得原始音频信号子单元,用于对所述源音频信号进行解码获得原始音频信号。
本申请实施例的音频播放装置可执行本申请实施例所提供的音频播放方法,其实现原理相类似,本申请各实施例中的音频播放装置中的各模块、单元所执行的动作是与本申请各实施例中的音频播放方法中的步骤相对应的,对于音频播放装置的各模块的详细功能描述具体可以参见前文中所示的对应的音频播放方法中的描述,此处不再赘述。
基于与本申请的实施例中所示的方法相同的原理,本申请的实施例中还提供了一种电子设备,该电子设备可以包括但不限于:处理器和存储器;存储器,用于存储计算机程序;处理器,用于通过调用计算机程序执行本申请任一可选实施例所示的音频播放方法。与现有技术相比,本申请避免直接从音频码流切换至更新音频码流,因此避免强制切换码流带来的杂音等问题,下发的音频码流满足接收端的音频播放需求,实现根据接收端的播放需求动态调整下发的音频码流,能够避免带宽浪费、避免待下发的音频码流的响应时长过长,提高播放设备与带宽的利用率。
在一个可选实施例中提供了一种电子设备,如图9所示,图9所示的电子设备4000可以为服务器,包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器4003用于存储执行本申请方案的应用程序代码,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,音频码流模块还可以被描述为“确定下发到接收端的音频码流模块”。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除