一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

音频流混音控制方法及其装置、设备、介质、产品与流程

2022-02-22 08:51:42 来源:中国专利 TAG:


1.本技术涉及音频处理技术,尤其涉及一种音频流混音控制方法及其相应的装置、计算机设备、计算机可读存储介质,以及计算机程序产品。


背景技术:

2.在网络直播场景中进行音视频直播时,常会适应主播用户之间连线的需要,将多个主播用户上传的多路音视频流进行混流,实现混音、混画,将多路音视频流混流成一路音视频流,再推送给相关直播间,到达相关观众用户的终端设备进行播放。由此避免观众针对多个主播用户分别拉流,节省观众用户的流量的同时,还可简化音视频流的播放业务逻辑。
3.现实中,在多路音频流混音的过程中,主播用户上传的音频流可能存在传输延迟、乱序、丢包、时间戳不均匀等现象,甚至可能由于主播的时钟慢导致采集的音频数据不足,例如每分钟只采集了58秒的数据,缺了2秒的数据,这样随着时间的推移,采集数据的累积缺口会越来越大。因此,如何在保证音视频同步的情况下,自动适配各种异常情况,使混合后的音频时间戳尽量均匀,是音频混音的难点。


技术实现要素:

4.本技术的首要目的在于解决上述问题至少之一而提供一种音频流混音控制方法及其相应的装置、计算机设备、计算机可读存储介质、计算机程序产品。
5.为满足本技术的各个目的,本技术采用如下技术方案:
6.适应本技术的目的之一而提供的一种音频流混音控制方法,包括如下步骤:
7.将各路音频流相对应的抖动缓冲队列出列的音频包对应添加至各路音频流相对应的待混音队列;
8.将各路待混音队列的音频包的时间戳映射到同一时间坐标系实现时序对齐,获得统一时间戳,初始化当前时间戳为时序上最小的统一时间戳;
9.从各路待混音队列中分别读取多个音频包作为混音素材进行混流,获得目标音频包;
10.判断当前时间戳是否超出所述混音素材中音频包的最小统一时间戳和最大统一时间戳界定的时区,当超过时按预定量微调当前时间戳使其逼近该时区;
11.输出所述目标音频包,以所述当前时间戳作为该目标音频包的输出时间戳。
12.深化的实施例中,将各路音频流相对应的抖动缓冲队列出列的音频包对应添加至各路音频流相对应的待混音队列,包括如下步骤:
13.接收参与混流的多路音频流,每路音频流包括多个按时序组织的音频包;
14.分别将各路音频流的音频包添加至各路音频流相应的抖动缓冲队列,以在相应的抖动缓冲队列中实现对各路音频流的时序重整;
15.根据各路抖动缓冲队列相适配的抖动缓冲时长控制相应的抖动缓冲队列中音频包的出列操作,使各路音频流的所述音频包按时序出列;
16.将各路音频流出列的音频包顺序添加至各路音频流相对应的待混音队列中。
17.具体化的实施例中,根据各路抖动缓冲队列相适配的抖动缓冲时长控制相应的抖动缓冲队列中音频包的出列操作,使各路音频流的所述音频包按时序出列的步骤中:
18.当抖动缓冲队列的队头与队尾的两个音频包的时间戳差值大于该抖动缓冲队列相适配的所述抖动缓冲时长时,或当队头的音频包在该抖动缓冲队列中等候出列的时长大于该抖动缓冲队列相适配的所述抖动缓冲时长时,将队头的音频包出列。
19.深化的实施例中,从各路待混音队列中分别读取多个音频包作为混音素材进行混流,获得目标音频包,包括如下过程:
20.根据目标音频包的预协议时长确定目标音频包混流所需的各路音频流中的音频包数量;
21.从各路音频流的待混音队列的当前时间戳前后预设时长范围内音频包中,根据所述音频包数量获取混流所需的足量音频包,所述预设时长大于所述预协议时长;
22.在任意一路音频流出现所述预设时长范围内音频包漏缺的情况下,在目标音频包的预协议时长范围内等候获取该路音频流相对应的足量的音频包,当在所述预协议时长范围内未能获取该路音频流相对应的足量的音频包时,重新执行本过程;
23.将已获取的各路音频流的音频包作为混音素材进行混流,以获得所述目标音频包。
24.深化的实施例中,判断当前时间戳是否超出所述混音素材中音频包的最小统一时间戳和最大统一时间戳界定的时区,当超过时按预定量微调当前时间戳使其逼近该区间,包括如下步骤:
25.判断当前时间戳是否滞后于所述混音素材内各音频包中的最小统一时间戳超过预设时差;
26.判断当前时间戳是否超前于所述混音素材内各音频包中的最大统一时间戳超过所述预设时差;
27.当任意一个判断均显示超过所述预设时差时,按预定量微调当前时间戳使其逼近由所述最小统一时间戳和最大统一时间戳共同界定的时区,所述预定量小于所述预设时差。
28.深化的实施例中,输出所述目标音频包,以所述当前时间戳作为该目标音频包的输出时间戳,包括如下步骤:
29.将所述当前时间戳设置为所述目标音频包的输出时间戳;
30.将所述当前时间戳叠加所述目标音频包的预协议时长的和值更新所述当前时间戳;
31.输出所述目标音频包,根据更新后的当前时间戳对下一目标音频包继续循环混流。
32.适应本技术的目的之一而提供的一种音频流混音控制装置,包括:抖动缓冲模块、时序统一模块、混流处理模块、时间戳微调模块,以及输出处理模块,其中,所述抖动缓冲模块,用于将各路音频流相对应的抖动缓冲队列出列的音频包对应添加至各路音频流相对应的待混音队列;所述时序统一模块,用于将各路待混音队列的音频包的时间戳映射到同一时间坐标系实现时序对齐,获得统一时间戳,初始化当前时间戳为时序上最小的统一时间
戳;所述混流处理模块,用于从各路待混音队列中分别读取多个音频包作为混音素材进行混流,获得目标音频包;所述时间戳微调模块,用于判断当前时间戳是否超出所述混音素材中音频包的最小统一时间戳和最大统一时间戳界定的时区,当超过时按预定量微调当前时间戳使其逼近该时区;所述输出处理模块,用于输出所述目标音频包,以所述当前时间戳作为该目标音频包的输出时间戳。
33.深化的实施例中,所述抖动缓冲模块,包括:分路接收子模块,用于接收参与混流的多路音频流,每路音频流包括多个按时序组织的音频包;时序重整子模块,用于分别将各路音频流的音频包添加至各路音频流相应的抖动缓冲队列,以在相应的抖动缓冲队列中实现对各路音频流的时序重整;出列操作子模块,用于根据各路抖动缓冲队列相适配的抖动缓冲时长控制相应的抖动缓冲队列中音频包的出列操作,使各路音频流的所述音频包按时序出列;混音排队子模块,用于将各路音频流出列的音频包顺序添加至各路音频流相对应的待混音队列中。
34.具体化的实施例中,所述出列操作子模块,被配置为:当抖动缓冲队列的队头与队尾的两个音频包的时间戳差值大于该抖动缓冲队列相适配的所述抖动缓冲时长时,或当队头的音频包在该抖动缓冲队列中等候出列的时长大于该抖动缓冲队列相适配的所述抖动缓冲时长时,将队头的音频包出列。
35.深化的实施例中,所述混流处理模块,包括:数量确定子模块,用于根据目标音频包的预协议时长确定目标音频包混流所需的各路音频流中的音频包数量;按量读取子模块,用于从各路音频流的待混音队列的当前时间戳前后预设时长范围内音频包中,根据所述音频包数量获取混流所需的足量音频包,所述预设时长大于所述预协议时长;漏包凑齐子模块,用于在任意一路音频流出现所述预设时长范围内音频包漏缺的情况下,在目标音频包的预协议时长范围内等候获取该路音频流相对应的足量的音频包,当在所述预协议时长范围内未能获取该路音频流相对应的足量的音频包时,重新运行混流处理模块;足量混流子模块,用于将已获取的各路音频流的音频包作为混音素材进行混流,以获得所述目标音频包。
36.深化的实施例中,所述时间戳微调模块,包括:最小判断子模块,用于判断当前时间戳是否滞后于所述混音素材内各音频包中的最小统一时间戳超过预设时差;最大判断子模块,用于判断当前时间戳是否超前于所述混音素材内各音频包中的最大统一时间戳超过所述预设时差;微调执行子模块,用于当任意一个判断均显示超过所述预设时差时,按预定量微调当前时间戳使其逼近由所述最小统一时间戳和最大统一时间戳共同界定的时区,所述预定量小于所述预设时差。
37.深化的实施例中,所述输出处理模块,包括:时间戳写入子模块,用于将所述当前时间戳设置为所述目标音频包的输出时间戳;当前值更新子模块,用于将所述当前时间戳叠加所述目标音频包的预协议时长的和值更新所述当前时间戳;输出再混子模块,用于输出所述目标音频包,根据更新后的当前时间戳对下一目标音频包继续循环混流。
38.适应本技术的目的之一而提供的一种计算机设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行本技术所述的音频流混音控制方法的步骤。
39.适应本技术的另一目的而提供的一种计算机可读存储介质,其以计算机可读指令
的形式存储有依据所述的音频流混音控制方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行该方法所包括的步骤。
40.适应本技术的另一目的而提供的一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本技术任意一种实施例中所述方法的步骤。
41.相对于现有技术,本技术的优势如下:本技术经多个相应的抖动缓冲队列对多路音频流进行防抖动处理之后,使各路音频流有序进入相应的待混音队列等候混流,然后,通过统一各路音频流的时间戳,从而在同一时间坐标系上协调各路音频流的时间同步关系,然后在统一时间戳的基础上计算当前时间戳,在对各个待混音队列出列的作为混流素材的音频包进行混流的过程中,针对混流素材中最小和最大时间戳与当前时间戳差距较大的情况,以预定量实现对所述当前时间戳的微调,将微调后的当前时间戳作为混流而得的目标音频包的输出时间戳,由此,当沿时间轴持续进行目标音频包的合成时,各目标音频包的输出时间戳根据其实际差异被适当地微调,实现混流后的输出时间戳的均匀递增逼近正确值,故而使得各目标音频包之间的微调较为平滑,从而可以克服因任意一路音频流因传输延迟、乱序、丢包、时间戳不均匀等引起的各种异常,避免终端设备接收到目标音频包进行播放时出现音频播放卡顿的现象。
附图说明
42.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
43.图1为本技术的音频流混音控制方法的典型实施例的流程示意图;
44.图2为本技术实施例中对多路音频流进行抖动缓冲处理的过程的流程示意图;
45.图3为本技术实施例中混流具体过程的流程示意图;
46.图4为本技术实施例中应用微调机制对当前时间戳进行校正的过程的流程示意图;
47.图5为本技术实施例中输出目标音频包的过程的流程示意图;
48.图6为本技术的音频流混音控制装置的原理框图;
49.图7为本技术所采用的一种计算机设备的结构示意图。
具体实施方式
50.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本技术的限制。
51.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
52.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
53.本技术领域技术人员可以理解,这里所使用的“客户端”、“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他诸如个人计算机、平板电脑之类的通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;pcs(personal communications service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;pda(personal digital assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或gps(global positioning system,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“客户端”、“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“客户端”、“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是pda、mid(mobile internet device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
54.本技术所称的“服务器”、“客户端”、“服务节点”等名称所指向的硬件,本质上是具备个人计算机等效能力的电子设备,为具有中央处理器(包括运算器和控制器)、存储器、输入设备以及输出设备等冯诺依曼原理所揭示的必要构件的硬件装置,计算机程序存储于其存储器中,中央处理器将存储在外存中的程序调入内存中运行,执行程序中的指令,与输入输出设备交互,借此完成特定的功能。
55.需要指出的是,本技术所称的“服务器”这一概念,同理也可扩展到适用于服务器机群的情况。依据本领域技术人员所理解的网络部署原理,所述各服务器应是逻辑上的划分,在物理空间上,这些服务器既可以是互相独立但可通过接口调用的,也可以是集成到一台物理计算机或一套计算机机群的。本领域技术人员应当理解这一变通,而不应以此约束本技术的网络部署方式的实施方式。
56.本技术的一个或数个技术特征,除非明文指定,既可部署于服务器实施而由客户端远程调用获取服务器提供的在线服务接口来实施访问,也可直接部署并运行于客户端来实施访问。
57.本技术中所引用或可能引用到的神经网络模型,除非明文指定,既可部署于远程服务器且在客户端实施远程调用,也可部署于设备能力胜任的客户端直接调用,某些实施例中,当其运行于客户端时,其相应的智能可通过迁移学习来获得,以便降低对客户端硬件运行资源的要求,避免过度占用客户端硬件运行资源。
58.本技术所涉及的各种数据,除非明文指定,既可远程存储于服务器,也可存储于本地终端设备,只要其适于被本技术的技术方案所调用即可。
59.本领域技术人员对此应当知晓:本技术的各种方法,虽然基于相同的概念而进行描述而使其彼此间呈现共通性,但是,除非特别说明,否则这些方法都是可以独立执行的。同理,对于本技术所揭示的各个实施例而言,均基于同一发明构思而提出,因此,对于相同表述的概念,以及尽管概念表述不同但仅是为了方便而适当变换的概念,应被等同理解。
60.本技术即将揭示的各个实施例,除非明文指出彼此之间的相互排斥关系,否则,各个实施例所涉的相关技术特征可以交叉结合而灵活构造出新的实施例,只要这种结合不背离本技术的创造精神且可满足现有技术中的需求或解决现有技术中的某方面的不足即可。对此变通,本领域技术人员应当知晓。
61.本技术的一种音频流混音控制方法,可被编程为计算机程序产品,部署于服务集群中运行而实现,以便藉此通过访问该计算机程序产品运行后开放的接口,通过图形用户界面与该计算机程序产品进行人机交互而执行该方法。
62.本技术示例性说明的一个应用场景是网络直播相关的应用场景,当多个主播用户之间进行视频连线,并推送到相同的观众用户时,需要对多个主播用户各自上传的一路音视频流进行混流,然后将混流获得的汇总音视频流作为直播流推送至连线直播间以到达直播间内的相关用户,通常是其中的观众用户,以便节省观众用户的拉流流量。另一稍加变化的应用场景中,也可以是同一主播用户一方面自行上传自身的音视频流,同时指示流媒体服务器在线获取另一路预先指定的音视频流,再由服务器进行混流合成,再推送到相应的直播间以便到达相关观众用户。
63.在此类应用场景中,混流服务由服务器执行,可以集成在网络直播相应的流媒体服务器中执行,也可以是独立的服务器来负责执行。所述混流服务在进行混流时,可以针对视频流和音频流进行混流,后续再同步推送。本技术的音频流混音控制方法,主要用于处理所述的音频流。
64.请参阅图1,本技术的音频流混音控制方法在其典型实施例中,包括如下步骤:
65.步骤s1100、将各路音频流相对应的抖动缓冲队列出列的音频包对应添加至各路音频流相对应的待混音队列:
66.需要参与混流的各路音频流,被混流器拉取接收后,将被添加至为各路音频流创建的各个抖动缓冲队列中,以便在各个抖动缓冲队列中分别对应对各路音频流的音频包进行时序重整后,再按时序输出至各路音频流相对应的待混音队列中。
67.所述的抖动缓冲队列,适应每路音频流一一对应设备,即每路音频流将配置一个抖动缓冲队列。每个抖动缓冲队列,视其相对应的一路音频流的抖动情况对音频包的接收过程进行缓冲,以便尽量在一定的时长范围内,尽量接收连续且完整的音频包,避免服务器侧因算法原因造成缺包的现象。
68.每个抖动缓冲队列,会对所述一定的时长范围内的音频包进行时序重整,以确保该时长范围内的音频包均能按序进行排队出列,其据以排序的时间标记,是其负责处理的音频流的音频包中固有的时间戳,由此可以理解,每个抖动缓冲队列可以尽量确保其所接收的一路音频流的音频流按照时间顺序进行有序出列。
69.在一个抖动缓冲队列中进行时序重整并出列的一路音频流的音频包,被转移添加到一个为该路音频流预设的待混音队列中,以便后续对该待混音队列进行有序读取。可以理解,对于每路音频流而言,均配备有一个抖动缓冲队列与一个待混音队列,通过这两个队
列的处理,最终从待混音队列出列的音频包,是有序的音频包。
70.步骤s1200、将各路待混音队列的音频包的时间戳映射到同一时间坐标系实现时序对齐,获得统一时间戳,初始化当前时间戳为时序上最小的统一时间戳:
71.所述的每路音频流,包含多个按时序传输的音频包,通常以语音帧的协议形式封装,可被服务器根据编码协议解析处理,每个音频包根据编码协议会标记一个时间戳,但不同音频流的时间戳基于不同的时间坐标系产生,故原始提交至服务器的不同音频流之间的时间戳其时间刻度、时间起点等通常不尽相同。
72.因此,为了便于混流时实现不同音频流之间的时间统一,可以分别将各路音频流的时间信息映射到同一时间坐标系,由此,每路音频流的固有的时间戳,便被对应到该同一时间坐标系的一个统一时间,从而可以通过该时间坐标系确定相对应的统一时间戳。
73.各路音频流的音频包根据时间戳映射到所述的时间坐标系时,可以以彼此的第一音频包进行对齐,或者利用其他同步信息实现对齐,对此,本领域技术人员可以灵活实施。
74.完成各路音频流的时间信息到所述时间坐标系的映射之后,根据该时间坐标系可以确定音频包的统一时间戳,为了方便跟踪各处音频包在该时间坐标系中的时间信息,设置一个中间变量,即当前时间戳,用于表征参考该时间坐标系而确定的当前混流的目标音频包相对应的起始时间戳。可以理解,在所述时间坐标系中的第一个音频包相对应的统一时间戳,即是该时间坐标系中时序最小的统一时间戳,便可作为混流输出的目标音频流的起始时间戳,因此,所述的当前时间戳可被初始化赋值为所述时序上最小的统一时间戳。
75.步骤s1300、从各路待混音队列中分别读取多个音频包作为混音素材进行混流,获得目标音频包:
76.为了获得目标音频流,需要持续地从所述各路音频流对应的待混音队列中分别获取音频包作为混音素材进行混流,以持续获得该目标音频流的目标音频包。
77.可以理解,目标音频流中的各个目标音频包,其时间戳参考所述时间坐标系而标记,可通过动态更新所述当前时间戳来指示各个所述的目标音频包的输出时间戳,以动态更新的当前时间戳来实现对目标音频包的输出时间戳的标记。当前时间戳的更新,通常会根据目标音频包的预协议时长来调整,以便实现对各目标音频包的输出时间戳的动态更新。
78.具体而言,进行混流时,主要根据服务器所采用的流媒体编码协议来确定混流输出的目标音频包的时间长度,该时间长度一般是该流媒体编码协议规定的预协议时长,不同的流媒体编码协议所规定的预协议时长可能不同,这一预协议时长的数值的大小是遵从协议确定的,因此不应视为影响本技术的实施的关键。例如,he-aac编码协议中,每个目标音频包的时长是41毫秒,其他编码协议的预协议时长也大同小异。当目标音频包的预协议时长已知的情况下,可以理解,一般情况下,时序上相邻的两个目标音频包的输出时间戳,便主要以所述的预协议时长为时间间隔。据此,持续进行混流的过程,源源不断地产生所述目标音频流的各个目标音频包,这些目标音频包均参照所述时间坐标系建立统一的时间信息,参与混流的各路音频流的时间信息均被统一为目标音频流的时间信息,而在针对每个目标音频包进行混流的过程中,借助所述中间变量当前时间戳作为每个目标音频包相对于所述时间坐标系的时序指针。
79.步骤s1400、判断当前时间戳是否超出所述混音素材中音频包的最小统一时间戳
和最大统一时间戳界定的时区,当超过时按预定量微调当前时间戳使其逼近该时区:
80.在对多路音频流的各个待混音队列出列的音频包进行混流的过程中,用于混出所述的目标音频包的混音素材中的音频包,即从该路音频流相对应的待混音队列中读取的音频包,其数量是按照目标音频包的预协议时长要求而确定的,通常包括多个,因此,混音素材中,针对每路音频流均有多个音频包,由于音频包是按所述统一时间戳组织的,因而在混音素材的所有音频包中,会有最小统一时间戳和最大统一时间戳,两者共同界定了一个时区,该时区通常指示相应的目标音频包的起始和结束时间戳。
81.当前时间戳理论上应与所述时区尽量同步,最好是落入该时区范围之内,但实际上,如果原始音频流出现传输延迟、乱序、丢包、时间戳不均匀等现象,此时,当前时间戳可能与该时区产生相对偏离,因此,需要进行适当的调节。
82.本实施例中,考虑到调节的平滑性,当当前时间戳超过所述时区所界定的时间范围时,即当前时间戳滞后或超前于该时区时,将所述的当前时间戳以预定量微调,使该当前时间戳稍微逼近该时区。所述的预定量相对于目标音频包的预协议时长而言,是一个较小的量,例如,示例性的预协议时长为40毫秒,则该预定量可以设定为1毫秒或2毫秒等,以此实现微调。预定量的数值的设定,从原理上,以避免所述当前时间戳急剧跳变、尽量确保目标音频包之间平滑过渡为原则。因此,所述预定值所表征的微调幅度可由本领域技术人员根据此处示例性和原理性说明进行灵活设定,不应以此处的示例性说明限制本技术的创造精神应有的保护范围。
83.当然,如果所述当前时间戳位于所述的时区范围之内,或者位于适当的预设容差范围之内,则不必对该当前时间戳进行调整,可跳过本步骤而直接执行后续步骤。
84.步骤s1500、输出所述目标音频包,以所述当前时间戳作为该目标音频包的输出时间戳:
85.在先已经将混音素材中的音频包进行混流获得了所述的目标音频包,故在本步骤中,只需为该目标音频包标记其输出时间戳。由于所述当前时间戳起到目标音频流的时序指针的作用,因此,此处将该目标音频包的输出时间戳标记为所述的当前时间戳即可,然后将标记了输出时间戳的目标音频包输出,以便进一步与视频流进行混流或者直接推送至终端设备处。
86.完成一个所述的目标音频包的混流后,便可按照本技术步骤s1300至步骤s1500的业务逻辑,循环执行以进行下一目标音频包的混流,期间,将当前时间戳叠加流媒体编码协议的预协议时长后,传递给下一循环,以便用于确定下一目标音频包的当前时间戳,以此类推,持续进行所述多路音频流的混流处理。
87.通过本典型实施例,可以看出,本技术经多个相应的抖动缓冲队列对多路音频流进行防抖动处理之后,使各路音频流有序进入相应的待混音队列等候混流,然后,通过统一各路音频流的时间戳,从而在同一时间坐标系上协调各路音频流的时间同步关系,然后在统一时间戳的基础上计算当前时间戳,在对各个待混音队列出列的作为混流素材的音频包进行混流的过程中,针对混流素材中最小和最大时间戳与当前时间戳差距较大的情况,以预定量实现对所述当前时间戳的微调,将微调后的当前时间戳作为混流而得的目标音频包的输出时间戳,由此,当沿时间轴持续进行目标音频包的合成时,各目标音频包的输出时间戳根据其实际差异被适当地微调,实现混流后的输出时间戳的均匀递增逼近正确值,故而
使得各目标音频包之间的微调较为平滑,从而可以克服因任意一路音频流因传输延迟、乱序、丢包、时间戳不均匀等引起的各种异常,避免终端设备接收到目标音频包进行播放时出现音频播放卡顿的现象。
88.请参阅图2,深化的实施例中,所述步骤s1100、将各路音频流相对应的抖动缓冲队列出列的音频包对应添加至各路音频流相对应的待混音队列,包括如下步骤:
89.步骤s1110、接收参与混流的多路音频流,每路音频流包括多个按时序组织的音频包:
90.以网络直播场景中主播用户进行连线为例,各个主播用户提交的音频流,理论上均会按时序组织,并上传至本技术的服务器。本技术的服务器接收到各路音频流相对应的音频包后,对其进行解析,以便获取其中的时间戳。不同的音频流的时间戳的时间坐标系是不同的,因此后续需按本技术的业务逻辑进行时间映射以实现多路音频流的时序对齐。
91.步骤s1120、分别将各路音频流的音频包添加至各路音频流相应的抖动缓冲队列,以在相应的抖动缓冲队列中实现对各路音频流的时序重整:
92.对于每一路音频流来说,尽管音频流中的各个音频包是按时序组织的,但由于通信协议(例如udp协议的不可靠传输机制)、链路因素、终端设备因素等,可能出现传输延迟、乱序、丢包、时间戳不均匀等现象,因此,同一路音频流的各个音频包到达的时间顺序未必按时间连续均匀排列,因此需要借助抖动缓冲队列来实现对每一路音频流的音频包的时序重整。因此,每一路音频流均配置一个相应的抖动缓冲队列,每个抖动缓冲队列均缓存一定时长的音频包。
93.在一个抖动缓冲队列中对进入其中的音频包进行时间重整,是指根据该些音频包固有的时间戳进行时间排序,使时间最早的音频包居于抖动缓冲队列的队头,其他音频包按时间戳先后依次排队,由此确保被出列的始终是时序最早的音频包。
94.步骤s1130、根据各路抖动缓冲队列相适配的抖动缓冲时长控制相应的抖动缓冲队列中音频包的出列操作,使各路音频流的所述音频包按时序出列:
95.所述抖动缓冲队列所缓存的音频包的数量,受一个与之相适配的抖动缓冲时长所决定,通过该抖动缓冲时长控制抖动缓冲队列缓存一定时长的音频包。
96.一个实施例中,不同的抖动缓冲队列,依照其对应接收的音频流的传输质量,其所设定的抖动缓冲时长可以是不同的,通常,可由本领域技术人员采用一定的算法,通过评估对应的音频流的传输质量来自适应确定每个抖动缓冲队列相应的抖动缓冲时长。
97.另一实施例中,针对所有音频流,也可确定一个全局的抖动缓冲时长,使其适用于所有的抖动缓冲队列。全局的抖动缓冲时长的确定,同理依据各路音频流的传输质量来确定,通常可以取多路音频流中其个别评估时,抖动缓冲时长最大者,作为全局的抖动缓冲时长。当然,还可采用折衷策略确定中间值的抖动缓冲时长或者采用乐观策略确定最小值的抖动缓冲时长作为所述的全局的抖动缓冲时长。
98.总之,不难理解,对于每一个抖动缓冲队列而言,均存在一个与之相适配的抖动缓冲时长,无论该抖动缓冲时长是为该抖动缓冲队列个别确定的,还是为所有的抖动缓冲队列统一确定的。
99.根据所述抖动缓冲时长,可以控制各个相应的抖动缓冲队列的出列操作,由于每个抖动缓冲队列中的音频包均已被按时序重整为顺时序排列的音频包,因此,各路音频流
的所述音频包将从各个抖动缓冲队列中按时序陆续出列。
100.变通的实施例中,当抖动缓冲队列的队头与队尾的两个音频包的时间戳差值大于该抖动缓冲队列相适配的所述抖动缓冲时长时,或当队头的音频包在该抖动缓冲队列中等候出列的时长大于该抖动缓冲队列相适配的所述抖动缓冲时长时,将队头的音频包出列。由此可见,抖动缓冲时长既决定了抖动缓冲队列的队列长度,又起到控制队列中的音频包及时出列的作用。
101.步骤s1140、将各路音频流出列的音频包顺序添加至各路音频流相对应的待混音队列中:
102.如前所述,每路音频流均对应设置一个待混音队列,待混音队列用于按序缓冲已经过时序重整的音频包,因此,每路音频流的音频包,当其从相应的抖动缓冲队列按时序出列后,便被按序存入相对应的待混音队列,后续可通过读取各个待混音队列中的音频包来实现混流。
103.本实施例中,给出借助抖动缓冲队列实现多路音频流的音频包的时序重整的方案,同时还给出了根据抖动缓冲时长来控制抖动缓冲队列中的音频包自动出列的解决方案,不难理解,抖动缓冲队列实现了一种音频流缓冲机制,解决了音频流传输延迟、乱序到达等问题。
104.请参阅图3,深化的实施例中,所述步骤s1300、从各路待混音队列中分别读取多个音频包作为混音素材进行混流,获得目标音频包,包括如下过程:
105.步骤s1310、根据目标音频包的预协议时长确定目标音频包混流所需的各路音频流中的音频包数量:
106.如前所述,所述的目标音频包通过是按照流媒体编码协议所规定的预协议时长来确定需要从各路音频流获取多少混流所需的音频包的,因此,受这一原理的控制,在进行混流时,从各个所述的待混音队列中读取所述预协议时长相对应的相应数量的音频包即可。
107.步骤s1320、从各路音频流的待混音队列的当前时间戳前后预设时长范围内音频包中,根据所述音频包数量获取混流所需的足量音频包,所述预设时长大于所述预协议时长:
108.从各路音频流的待混音队列中读取音频包时,可以先设定当前时间戳前后一定预设时长范围,例如当前时间戳的前后100毫秒的范围,以便从各待混音队列中分别确定可以获取音频包的可选范围,该预设时长范围明显大于目标音频包所需的预协议时长的范围,预协议时长明显小于所述预设时长,以便充分考虑意外延迟因素,尽最大可能地凑齐预协议时长范围内的各音频流中的连续有序的足量音频包。需要注意的是,对于待混音队列中的音频包,只是从所述预设时长范围内选出所述预协议时长范围相对应的音频包,并非指获取该预设时长范围内的全量音频包。
109.步骤s1330、在任意一路音频流出现所述预设时长范围内音频包漏缺的情况下,在目标音频包的预协议时长范围内等候获取该路音频流相对应的足量的音频包,当在所述预协议时长范围内未能获取该路音频流相对应的足量的音频包时,重新执行本过程:
110.为了进一步降低每一路音频流漏缺音频包的可能性,可对所述预设时长范围内的每路音频流的音频包进行时序检测,如果所有音频流均未出现欠缺音频包的情况,则可继续下一步步骤,否则,针对欠缺音频包的音频流,可在所述预协议时长范围内等待欠缺的音
频包进入待混音队列而相应读取补齐,当超过该预协议时长范围仍未获得欠缺的音频包时,则可重新回到步骤s1300重新混流,具体可回到步骤s1310重新混流。
111.对所述欠缺音频包的具体等候时长,一般按照预协议时长即可,当然,也可选取小于该预协议时长的定值,例如40毫秒,具体可由本领域技术人员灵活设定。设置这一等候机制,可以最大可能地确保完整获得每个目标音频包混流所需的各路音频流的相应音频包,并且由于将等候时长控制在目标音频包的预协议时长范围之内,因而也不会影响目标音频流的连续性。
112.步骤s1340、将已获取的各路音频流的音频包作为混音素材进行混流,以获得所述目标音频包:
113.当经过上述步骤尽可能足量地获取到各路音频流的音频包后,便可将这些音频作为混音素材,按统一时间戳的同步关系,将各路音频流的音频包进行对应混流,从而生成目标音频包。
114.本实施例中,深入揭示了本技术对各路音频流的音频包进行混流的方案,根据该方案可以看出,本实施例通过从比所述预协议时长更大范围中等候目标音频包所需的足量音频包,并且,还能对各路音频流是否欠缺音频包进行等候,最大限度地避免混流丢包现象,最大程度地保证混流后的音频流尽量不出现丢包现象,确保音频流的音质。
115.请参阅图4,深化的实施例中,所述步骤s1400、判断当前时间戳是否超出所述混音素材中音频包的最小统一时间戳和最大统一时间戳界定的时区,当超过时按预定量微调当前时间戳使其逼近该区间,包括如下步骤:
116.步骤s1410、判断当前时间戳是否滞后于所述混音素材内各音频包中的最小统一时间戳超过预设时差:
117.对于本技术所应用的当前时间戳微调机制,本实施例中给出更为具体的算法。首先是判断当前时间戳是否滞后于混音素材内各音频包中的最小统一时间戳:设当前时间戳为curpts,混音素材内的所有音频包中,最早即最小的统一时间戳为minpts,然后,调用一个预设时差delta,该预设时差表征一个容错范围或称弹性范围,于是可以判断curpts delta《minpts是否成立,当两者成立时,表示当前时间戳curpts相对于所述最小统一时间戳minpts滞后的时长超过所述的预设时差delta,否则,即使当前时间戳相对滞后于最小统一时间戳,但也未超出容许的范围。其中,所述的预设误差应小于预协议时长,例如设为10毫秒。
118.步骤s1420、判断当前时间戳是否超前于所述混音素材内各音频包中的最大统一时间戳超过所述预设时差:
119.同理,判断当前时间戳是否超前于混音素材内各音频包中的最大统一时间戳:仍设当前时间戳为curpts,混音素材内的所有音频包中,最大的统一时间戳为maxpts,然后,调用所述的预设时差delta,于是可以判断curpts delta》maxpts是否成立,当两者成立时,表示当前时间戳curpts相对于所述最大统一时间戳maxpts超前的时长超过所述的预设时差delta,否则,即使当前时间戳相对超前于最大统一时间戳,但也未超出容许的范围。
120.步骤s1430、当任意一个判断均显示超过所述预设时差时,按预定量微调当前时间戳使其逼近由所述最小统一时间戳和最大统一时间戳共同界定的时区,所述预定量小于所述预设时差:
121.当所述当前时间戳出现不被容许的超前或者滞后的情况时,也即当前时间戳明显超过由所述最小统一时间戳minpts和最大统一时间戳maxpts共同界定的时区时,为确保目标音频流的平滑性,便需要对该当前时间戳进行微调校正。故此,适用前述微调机制,采用一个预设的预定量对当前时间戳进行微调即可。具体而言,若当前时刻戳滞后于最小统一时间戳,将当前时间戳叠加所述的预定量使其沿时间轴向前逼近所述的时区;若当前时刻戳超前于最大统一时间戳,将当前时间戳减去所述的预定量使其沿时间轴向后逼近所述的时区。
122.所述的预定量优选明显小于所述预设时差的数值,例如本实施例中,所述预设时差设置为10毫秒的情况下,所述预定量可以设定为1毫秒。由于对当前时间戳适用预定量进行微调,每次针对一个目标音频包只调节例如1毫秒,故而,后续针对每个目标音频包标记其输出时间戳时,可以确保各个目标音频包的输出时间戳近乎均匀。
123.本实施例中,通过给出更为具体的实现对当前时间戳进行微调的方案可以看出,本技术适用微调机制对目标音频流的各个目标音频包的时序指针即当前时间戳进行的微调控制,可以将丢包、音频数据不足、输出时间戳不均匀等现象平滑掉,进一步确保了目标音频流的音质。
124.请参阅图5,深化的实施例中,所述步骤s1500、输出所述目标音频包,以所述当前时间戳作为该目标音频包的输出时间戳,包括如下步骤:
125.步骤s1510、将所述当前时间戳设置为所述目标音频包的输出时间戳:
126.由于所述当前时间戳在混流过程中起到目标音频流内的各个目标音频包的时序指针的作用,因此,当一个目标音频包完成混流,并且所述的当前时间戳按需完成相应的微调更新后,便可将该当前时间戳作为该目标音频包相应的输出时间戳,对该目标音频包实施标记。
127.步骤s1520、将所述当前时间戳叠加所述目标音频包的预协议时长的和值更新所述当前时间戳:
128.当完成对已产出的目标音频包的输出时间戳的标记后,所述当前时间戳相对于该目标音频包的使用周期便告结束,并且需要适应下一目标音频包的时序指针的需要而做出对应的更新,以便进入下一目标音频包的混流过程中使用。由于一个目标音频包的时间长度是依据流媒体编码协议而确定的,因此,将当前时间戳加上所述目标音频包的预协议时长所获得的和值作为该当前时间戳的最新当前值,实现对该当前时间戳的更新。
129.步骤s1530、输出所述目标音频包,根据更新后的当前时间戳对下一目标音频包继续循环混流:
130.对于已经标记了当前时间戳的目标音频包,可以直接推流输出,以便进一步与视频流混流,或者直接推送至终端设备,或者进行其他处理。而对于更新后的当前时间戳,则可根据本技术回到步骤s1300进行循环混流的需要,将该当前时间戳提供给下一循环使用,以便下一循环中根据该当前时间戳指示的最新时序实施下一目标音频包的混流。
131.本实施例中,以所述当前时间戳对已产出的目标音频包进行输出时间戳的标记,并且为目标音频流中的下一目标音频包更新该当前时间戳,确保本技术的混流业务逻辑可以持续进行,稳健地输出目标音频流所需的目标音频包,且保证各目标音频包的输出时间戳的均匀性,从而确保接收到该目标音频流的终端设备在解析播放该目标音频流时,能够
获得清晰流畅的音质,不易出现声音卡顿现象。
132.请参阅图6,适应本技术的目的之一而提供的一种音频流混音控制装置,包括:抖动缓冲模块1100、时序统一模块1200、混流处理模块1300、时间戳微调模块1400,以及输出处理模块1500,其中,所述抖动缓冲模块1100,用于将各路音频流相对应的抖动缓冲队列出列的音频包对应添加至各路音频流相对应的待混音队列;所述时序统一模块1200,用于将各路待混音队列的音频包的时间戳映射到同一时间坐标系实现时序对齐,获得统一时间戳,初始化当前时间戳为时序上最小的统一时间戳;所述混流处理模块1300,用于从各路待混音队列中分别读取多个音频包作为混音素材进行混流,获得目标音频包;所述时间戳微调模块1400,用于判断当前时间戳是否超出所述混音素材中音频包的最小统一时间戳和最大统一时间戳界定的时区,当超过时按预定量微调当前时间戳使其逼近该时区;所述输出处理模块1500,用于输出所述目标音频包,以所述当前时间戳作为该目标音频包的输出时间戳。
133.深化的实施例中,所述抖动缓冲模块1100,包括:分路接收子模块,用于接收参与混流的多路音频流,每路音频流包括多个按时序组织的音频包;时序重整子模块,用于分别将各路音频流的音频包添加至各路音频流相应的抖动缓冲队列,以在相应的抖动缓冲队列中实现对各路音频流的时序重整;出列操作子模块,用于根据各路抖动缓冲队列相适配的抖动缓冲时长控制相应的抖动缓冲队列中音频包的出列操作,使各路音频流的所述音频包按时序出列;混音排队子模块,用于将各路音频流出列的音频包顺序添加至各路音频流相对应的待混音队列中。
134.具体化的实施例中,所述出列操作子模块,被配置为:当抖动缓冲队列的队头与队尾的两个音频包的时间戳差值大于该抖动缓冲队列相适配的所述抖动缓冲时长时,或当队头的音频包在该抖动缓冲队列中等候出列的时长大于该抖动缓冲队列相适配的所述抖动缓冲时长时,将队头的音频包出列。
135.深化的实施例中,所述混流处理模块1300,包括:数量确定子模块,用于根据目标音频包的预协议时长确定目标音频包混流所需的各路音频流中的音频包数量;按量读取子模块,用于从各路音频流的待混音队列的当前时间戳前后预设时长范围内音频包中,根据所述音频包数量获取混流所需的足量音频包,所述预设时长大于所述预协议时长;漏包凑齐子模块,用于在任意一路音频流出现所述预设时长范围内音频包漏缺的情况下,在目标音频包的预协议时长范围内等候获取该路音频流相对应的足量的音频包,当在所述预协议时长范围内未能获取该路音频流相对应的足量的音频包时,重新运行混流处理模块;足量混流子模块,用于将已获取的各路音频流的音频包作为混音素材进行混流,以获得所述目标音频包。
136.深化的实施例中,所述时间戳微调模块1400,包括:最小判断子模块,用于判断当前时间戳是否滞后于所述混音素材内各音频包中的最小统一时间戳超过预设时差;最大判断子模块,用于判断当前时间戳是否超前于所述混音素材内各音频包中的最大统一时间戳超过所述预设时差;微调执行子模块,用于当任意一个判断均显示超过所述预设时差时,按预定量微调当前时间戳使其逼近由所述最小统一时间戳和最大统一时间戳共同界定的时区,所述预定量小于所述预设时差。
137.深化的实施例中,所述输出处理模块1500,包括:时间戳写入子模块,用于将所述
当前时间戳设置为所述目标音频包的输出时间戳;当前值更新子模块,用于将所述当前时间戳叠加所述目标音频包的预协议时长的和值更新所述当前时间戳;输出再混子模块,用于输出所述目标音频包,根据更新后的当前时间戳对下一目标音频包继续循环混流。
138.为解决上述技术问题,本技术实施例还提供计算机设备。如图7所示,计算机设备的内部结构示意图。该计算机设备包括通过系统总线连接的处理器、计算机可读存储介质、存储器和网络接口。其中,该计算机设备的计算机可读存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种音频流混音控制方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行本技术的音频流混音控制方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
139.本实施方式中处理器用于执行图6中的各个模块及其子模块的具体功能,存储器存储有执行上述模块或子模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有本技术的音频流混音控制装置中执行所有模块/子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
140.本技术还提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本技术任一实施例的音频流混音控制方法的步骤。
141.本技术还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被一个或多个处理器执行时实现本技术任一实施例所述方法的步骤。
142.本领域普通技术人员可以理解实现本技术上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)等计算机可读存储介质,或随机存储记忆体(random access memory,ram)等。
143.综上所述,本技术通过在对多路音频流进行混流的过程中,先对多路音频流进行抖动缓冲处理,然后对混流所得的目标音频包的时序指针进行微调控制,确保目标音频流中目标音频包之间的输出时间戳均匀平滑,使得目标音频流获得清晰流畅不卡顿的音质效果,尤其适用于网络直播应用场景中。
144.本技术领域技术人员可以理解,本技术中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本技术中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本技术中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
145.以上所述仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献