CN110087019A - 一种会议音频解码方法、装置、设备及可读存储介质 - Google Patents
一种会议音频解码方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN110087019A CN110087019A CN201910357861.8A CN201910357861A CN110087019A CN 110087019 A CN110087019 A CN 110087019A CN 201910357861 A CN201910357861 A CN 201910357861A CN 110087019 A CN110087019 A CN 110087019A
- Authority
- CN
- China
- Prior art keywords
- audio
- audio decoder
- thread
- service unit
- decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 239000000872 buffer Substances 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 229920006395 saturated elastomer Polymers 0.000 claims description 10
- 241000208340 Araliaceae Species 0.000 claims description 3
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 3
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 3
- 235000008434 ginseng Nutrition 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 9
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 238000012545 processing Methods 0.000 description 15
- 101150047356 dec-1 gene Proteins 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/008—Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/167—Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/15—Conference systems
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Mathematical Physics (AREA)
- Telephonic Communication Services (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种会议音频解码方法,该方法在接收到解码服务请求后,利用解码服务请求创建出与参会终端具有映射关系的音频解码服务单元,然后创建出多个音频解码线程,将音频解码服务单元均匀分布在音频解码线程中。在接收到各个参会终端发送的音频码流时,采用不同的音频解码线程中的各个音频解码服务单元对相应的音频码流进行解码。与现有的会议系统相比,该方法可降低单个解码的CPU负载,提升CPU的利用效率,且相较于对视频码流进行多线程处理的方式而言,对音频码流进行多线程处理对保障系统稳定性的效果更佳。本发明还公开了一种会议音频解码装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及通信与多媒体处理技术领域,特别是涉及一种会议音频解码方法、装置、设备及可读存储介质。
背景技术
近年来,视频会议已经成为了一种主流的沟通方式,它方便快捷,直观形象深受大家的喜欢。视频会议目前有两种主要的模式,一种是中心点模式,即所有终端将音视频数据发送到中心点,由中心点决定这些数据的处理。另一种是没有中心点的,所有与会终端将自己的音视频数据发送给其他与会终端,终端自己来处理所有过来的音视频数据。
所谓中心点模式即有一个主控点,这个主控点接收所有的终端发来的音视频码流,并将处理后的数据再实时反馈给会议中的各个参会终端,这样保证整个会议的有序向前进行。参会终端的音频码流源源不断的送入中心点进行处理,在参会终端数量较少的时,中心点处理起来还比较轻松,但是当参会终端多起来后,为参会终端分配的解码线程调度会占用非常多的CPU。进一步导致了媒体处理能力的下降,难以满足实时反馈数据到各个参会终端。
目前,为了解决解码线程调度占用CPU的问题,在视频解码时,通过建立多个线程的方式来解决CPU占用问题。具体实现包括:判断线程是否饱和,如果不饱和将新的解码器放到该线程,否则创建新的线程。但是,视频解码具有非常大的不确定性,即很可能一段时间非常的耗CPU,一段时间又不消耗CPU,这样会导致解码线程非常的不稳定,并有可能导致缓存队列丢数据从而引发风暴效应。可见,对视频解码流的解码进行多线程处理,依然无法解决CPU占用等问题,且还可能会引发风暴效应。
综上所述,如何有效地解决视频会议的解码占用CPU等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种会议音频解码方法、装置、设备及可读存储介质,以解决视频会议解码占用CPU的问题,提高系统稳定性。
为解决上述技术问题,本发明提供如下技术方案:
一种会议音频解码方法,包括:
接收视频会议的解码服务请求,并利用所述解码服务请求创建与参会终端具有映射关系的音频解码服务单元;
创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;
按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,并记录线程对应关系;
接收各个所述参会终端的音频码流,利用所述映射关系确定各个所述音频码流分别对应的所述音频解码服务单元;
利用所述线程对应关系,将各个所述音频码流发送给对应的所述音频解码线程以进行解码。
优选地,利用所述解码服务请求创建与参会终端具有映射关系的音频解码服务单元,包括:
对所述解码服务请求进行解析,确定所述会议视频的参会终端总数,以及各个所述参会终端的ID;
创建与所述参会终端总数相同数目的所述音频解码服务单元;
利用所述ID对所述音频解码服务单元进行标记,获得所述映射关系。
优选地,所述创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程,包括:
获取单个所述音频解码线程的容纳量,以及所述音频解码服务单元的总数量;
利用所述容纳量与所述总数量,创建所述容量总量大于所述总数量的多个所述音频解码线程。
优选地,按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,包括:
按照线程轮转顺序,将各个所述音频解码服务单元逐个添加在所述音频解码线程的对象列表中,并记录所述线程对应关系。
优选地,所述按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,包括:
利用所述总数量和所述音频解码线程的总个数,按照均匀分布规则计算出每个所述音频解码线程应添加的所述音频解码服务单元数;
按照所述音频解码服务单元数,在各个所述音频解码线程的所述对象列表中添加所述音频解码服务单元。
优选地,所述利用所述线程对应关系,将各个所述音频码流发送给对应的所述音频解码线程以进行解码,包括:
按照所述线程对应关系,将所述音频码流发送给相应所述音频解码线程的缓存队列中,以便各个所述音频解码线程中的所述音频解码服务单元对音频码流进行解码。
优选地,还包括:
对各个所述缓存队列的缓存数量进行监测;
在目标缓存队列的所述缓存数量大于预设缓存阈值时,将所述目标缓存队列所属的目标音频解码线程确定为饱和线程;
获取空闲线程,并将所述目标音频解码线程的对象列表中目标音频解码服务单元移至所述空闲线程的对象列表中。
一种会议音频解码装置,包括:
音频解码服务单元创建模块,用于接收视频会议的解码服务请求,并利用所述解码服务请求创建与参会终端具有映射关系的音频解码服务单元;
音频解码线程创建模块,用于创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;
音频解码线程设置模块,用于按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,并记录线程对应关系;
音频码流接收模块,用于接收各个所述参会终端的音频码流,利用所述映射关系确定各个所述音频码流分别对应的所述音频解码服务单元;
音频码流解码模块,用于利用所述线程对应关系,将各个所述音频码流发送给对应的所述音频解码线程以进行解码。
一种会议音频解码设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述会议音频解码方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述会议音频解码方法的步骤。
应用本发明实施例所提供的方法,接收视频会议的解码服务请求,并利用解码服务请求创建与参会终端具有映射关系的音频解码服务单元;创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;按照均匀分布规则,将各个音频解码服务单元添加在音频解码线程的对象列表中,并记录线程对应关系;接收各个参会终端的音频码流,利用映射关系确定各个音频码流分别对应的音频解码服务单元;利用线程对应关系,将各个音频码流发送给对应的音频解码线程以进行解码。
在视频会议中,往往涉及音频解码和视频解码,相对于视频解码而言,音频解码则相对稳定,即CPU消耗起伏较小。为保障视频会议中心节点的稳定性,将音频解码服务单元均匀分配在多个音频解码线程中,保证系统的稳定性。具体的,即在接收到解码服务请求后,首先利用解码服务请求创建出与参会终端具有映射关系的音频解码服务单元,然后创建出多个音频解码线程,将音频解码服务单元均匀分布在音频解码线程中。如此,在接收到各个参会终端发送的音频码流时,便可采用不同的音频解码线程中的各个音频解码服务单元对相应的音频码流进行解码。与现有的会议系统相比,该方法可降低单个解码的CPU负载,提升CPU的利用效率,且相较于对视频码流进行多线程处理的方式而言,对音频码流进行多线程处理对保障系统稳定性的效果更佳。进一步,可增加可呼入终端的数量,即参会终端数量,为整个会议系统降低成本。
相应地,本发明实施例还提供了与上述会议音频解码方法相对应的会议音频解码装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种会议音频解码方法的实施流程图;
图2为本发明实施例中一种创建快照流程图;
图3为本发明实施例中一种音频码流分发流程图;
图4为本发明实施例中一种线程过饱和处理流程图;
图5为本发明实施例中一种会议音频解码装置的结构示意图;
图6为本发明实施例中一种会议音频解码设备的结构示意图;
图7为本发明实施例中一种会议音频解码设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
请参考图1,图1为本发明实施例中一种会议音频解码方法的流程图,该方法可应用于视频会议系统中的主控点,该方法包括以下步骤:
S101、接收视频会议的解码服务请求,并利用解码服务请求创建与参会终端具有映射关系的音频解码服务单元。
主控点接收到视频会议的解码服务请求之后,便可按照会议协议对解码服务请求进行解析,得到用于创建音频解码服务单元的相关信息,并基于该相关信息创建与参会终端具有映射关系的音频解码服务单元。即,为每一个参会终端分别创建一一对应的音频解码服务单元。
具体的,音频解码服务单元创建过程,包括:
步骤一、对解码服务请求进行解析,确定会议视频的参会终端总数,以及各个参会终端的ID;
步骤二、创建与参会终端总数相同数目的音频解码服务单元;
步骤三、利用ID对音频解码服务单元进行标记,获得映射关系。
为便于描述,下面将上述三个步骤结合起来进行说明。
利用会议协议对解码服务请求进行解析,确定会议视频的参会终端总数,以及各个参会终端的ID。具体的,可依据解码服务请求中携带的会议模板确定参会终端总数。通常参会终端总数同会议模版相关,会议模板一般有大会和小会之分,大会一般指可容纳192个终端的会议,小会一般指可容纳8个终端的会议,所以大会模板对应的音频解码服务单元需192个,小会模板对应的音频解码服务单元需8个。当然,关于会议目标的规模具体大小还可根据不同的会议模板而变化,在此不再一一赘述。另外,可通过建立通信链接时,获得参会终端的ID或端口号来唯一标识参会终端,然后在创建音频解码服务单元时,创建与参会终端总数相同数目的音频解码服务单元之后,再对音频解码服务单元添加上对应的参会终端ID或端口号,来标识音频解码服务单元与参会终端的对应关系。例如,在创建解码服务单元时,为每个音频解码服务单元进行编号,如Dec_0、Dec_1、…Dec_total-1,其中total标识参会终端总数,同时也是音频解码服务单元总数。
S102、创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程。
创建了音频解码服务单元之后,便可创建容纳音频解码服务单元的音频解码线程。具体的,音频解码线程的创建过程,包括:
步骤一、获取单个音频解码线程的容纳量,以及音频解码服务单元的总数量;
步骤二、利用容纳量与总数量,创建容量总量大于总数量的多个音频解码线程。
为了便于描述,下面将上述两个步骤结合起来进行说明。
首先,获取单个音频解码线程的容纳量,以及音频解码服务单元的总数量。其中,单个音频解码线程的容纳量N_max1,可根据实际测试的音频解码服务单元解码一路音频占用的CPU值D_cpu1来进行计算,即:
N_max1=R/D_cpu1,其中,R代表CPU占比,R取值在90%以内比较合适。然后,计算线程数P_total,即根据目前媒体服务器单个线程最多能容纳的音频解码服务单元数量N_max1来进行计算。具体计算公式P_total=(N_total+N_max1-1)/N_max1,N_total即为音频解码服务单元的总数量。如此,便可计算出所需线程音频解码线程的总数。
然后,便可创建出P_total个音频解码线程,即为每个音频解码线程分配锁资源、队列资源和内存资源。
S103、按照均匀分布规则,将各个音频解码服务单元添加在音频解码线程的对象列表中,并记录线程对应关系。
创建好音频解码线程后,便可将音频解码服务单元添加在音频解码线程的对象列表中,以便音频解码线程调用音频解码服务单元对相应的音频码流进行解码。
考虑到,多个音频解码线程的总容量会出现大于音频解码服务单元总数量的情况,因而,为避免出现各音频解码线程CPU分配不均匀的情况,可将音频解码服务单元均匀分布在音频解码线程。使得每个音频解码线程的音频解码服务单元数量一致或大约一致可以使音频码流分配在不同的线程同时解码,达到线程的CPU均衡占用。即,在对象列表中添加音频解码服务单元时,可具体按照均匀分布规则,将音频解码服务单元均匀添加在各个音频解码线程中。具体添加方式如下:
音频解码服务单元添加方式1:按照线程轮转顺序,将各个音频解码服务单元逐个添加在音频解码线程的对象列表中。即,在创建音频解码线程时,为线程进行标号,如P_0、P_1、…、P_total-1,音频解码服务单元的标记序列号为Dec_0,Dec_1…Dec_total-1。将创建的音频解码服务单元平均放入各个音频解码线程的对象列表中。其中,平均放入可按照公式P_i=Dec_x%P_total的方式进行。即Dec_0属于P_0,Dec_1属于P_1、…、Dec_0+max属于P_0,Dec_1+max属于P_1+max...,从而保证每个线程所包含的音频解码服务单元总数基本一致。这样能尽可能的保证CPU占用的均衡。
音频解码服务单元添加方式2:利用总数量和音频解码线程的总个数,按照均匀分布规则计算出每个音频解码线程应添加的音频解码服务单元数;按照音频解码服务单元数,在各个音频解码线程的对象列表中添加音频解码服务单元。例如,当音频解码服务单元的总数量为y个,而音频解码线程的总个数为x个时,若y/x为整数,则在每个音频解码线程中添加y/x个音频解码服务单元即可;若y/x非整数,则在每个音频解码线程中添加y/x的整数个,将余数逐个添加在音频解码线程中,即让音频解码线程中的音频解码服务单元数量的差值不大于1。
无论采用何种方式在音频解码线程的对象列表中添加音频解码服务单元,在添加音频解码服务单元之后,都需将线程对应关系进行记录。线程对应关系即为每个音频解码线程内对应哪些音频解码服务单元。
S104、接收各个参会终端的音频码流,利用映射关系确定各个音频码流分别对应的音频解码服务单元。
在完成音频解码服务单元创建,以及音频解码线程的创建以及音频解码服务单元的均匀添加之后,便可接收各个参会终端的音频码流。然后利用映射关系确定出各个音频码流对应的音频解码服务单元。具体的,可通过对参会终端发送的数据包进行解析,获得发送端ID,基于该ID进行查询确定出对应的音频解码服务单元。
S105、利用线程对应关系,将各个音频码流发送给对应的音频解码线程以进行解码。
确定出音频解码服务单元之后,便可通过程序线程对应关系,确定将音频码流发送给相应的音频解码线程进行解码。例如,若会议终端3与序号为3的音频解码服务单元一一对应,且音频解码服务单元在音频解码线程4的对象列表中,则将会议终端发送的音频码流发送给音频解码线程4,以便序号为2的音频解码服务单元对该音频码流进行解码。
优选地,为避免出现解码速度慢于音频码流接收速度时,出现数据丢失和系统混乱的情况,通常情况下需对音频码流缓存后,才能进行解码处理。即发送音频码流给音频解码线程时,具体为按照线程对应关系,将音频码流发送给相应音频解码线程的缓存队列中,以便各个音频解码线程中的音频解码服务单元对音频码流进行解码。也就是说,在接收到音频码流之后,确定出对应的音频解码服务单元以及相应的音频解码线程后,可先缓存在相应音频解码线程的缓存队列中。
优选地,为了避免出现风暴效应,可对各个音频解码线程进行监控,进行过饱和处理。过饱和处理过程,包括:
步骤一、对各个缓存队列的缓存数量进行监测;
步骤二、在目标缓存队列的缓存数量大于预设缓存阈值时,将目标缓存队列所属的目标音频解码线程确定为饱和线程;
步骤三、获取空闲线程,并将目标音频解码线程的对象列表中目标音频解码服务单元移至空闲线程的对象列表中。
为便于描述,下面将上述三个步骤结合起来进行说明。
在接收音频码流进行解码的同时,可对各个缓存队列的缓存数量进行监测。然后,将各个缓存数量与预先预设的缓存阈值进行比较,当出现缓存数量大于预设缓存阈值的目标缓存队列时,则可将目标缓存队列的音频解码线程确定为饱和线程。为避免该线程不能完全解码,而产生丢弃缓存数据等问题,此时,可获取一个空闲线程,然后将目标音频解码线程的对象列表中的一个或多个目标音频解码服务单元移至空闲线程的对象列表中,以使空闲线程分担目标音频解码线程的解码压力,避免出现单个线程CPU占用过高的情况。其中,空闲线程可为主控点已有的空闲线程,也可为新创建的新线程。具体的,当出现饱和线程时,可先查询是否存在处于空闲状态的线程,如果有,则可直接将目标音频解码线程的对象列表中的一个或多个对象添加在处于空闲状态的线程的对象列表中;如果没有,则可新创建一个线程,并将目标音频解码线程的对象列表中的一个或对个对象添加在该新创建线程的对象列表中。其中,本发明实施例所指的对象列表中的对象为音频解码服务单元。
应用本发明实施例所提供的方法,接收视频会议的解码服务请求,并利用解码服务请求创建与参会终端具有映射关系的音频解码服务单元;创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;按照均匀分布规则,将各个音频解码服务单元添加在音频解码线程的对象列表中,并记录线程对应关系;接收各个参会终端的音频码流,利用映射关系确定各个音频码流分别对应的音频解码服务单元;利用线程对应关系,将各个音频码流发送给对应的音频解码线程以进行解码。
在视频会议中,往往涉及音频解码和视频解码,相当于视频解码而言,音频解码则相对稳定,即CPU消耗起伏较小。为保障视频会议中心节点的稳定性,将音频解码服务单元均匀分配在多个音频解码线程中,保证系统的稳定性。具体的,即在接收到解码服务请求后,首先利用解码服务请求创建出与参会终端具有映射关系的音频解码服务单元,然后创建出多个音频解码线程,将音频解码服务单元均匀分布在音频解码线程中。如此,在接收到各个参会终端发送的音频码流时,便可采用不同的音频解码线程中的各个音频解码服务单元对相应的音频码流进行解码。与现有的会议系统相比,该方法可降低单个解码的CPU负载,提升CPU的利用效率,且相较于对视频码流进行多线程处理的方式而言,对音频码流进行多线程处理对保障系统稳定性的效果更佳。进一步,可增加可呼入终端的数量,即参会终端数量,为整个会议系统降低成本。
需要说明的是,上述关于创建音频解码服务单元以及创建音频解码线程的先后顺序,可直接按照上述步骤描述顺序进行,也可先创建音频解码线程,也可同时创建音频解码服务单元和音频解码线程。为了便于本领域技术人员更好地理解本发明实施例所提供的会议音频解码方法,下面以先创建音频解码线程,后创建音频解码服务单元的实现过程为例,对会议音频解码方法进行详细说明。
请参考图2,图2为本发明实施例中一种创建快照流程图;创建过程,包括:
S201:召开视频会议。
其中,视频会议指具有中心点的会议系统的会议。
S202:申请解码服务。
即,申请对应终端数量的音频解码服务单元,申请数量为N_total。
S203:计算线程数P_total。
具体的,可根据目前媒体服务器单个线程最多能容纳的音频解码服务单元数量阈值N_max1来进行计算。公式为P_total=(N_total+N_max1-1)/N_max1。其中,阈值N_max1根据实际测试的音频解码服务单元解码一路音频占用的CPU值D_cpul来进行计算即N_max1=R/D_cpu1,R代表CPU占比,建议R取值在90%以内。
S204:根据线程总数P_total进行线程创建,并标号P_0、P_1、...、P_total-1。
S205:根据申请的音频解码服务单元总数量N_total创建音频解码服务单元,并标记序列号为Dec_0,Dec_1…Dec_total-1。将创建的音频解码服务单元平均放入S204创建的线程的对象列表中。可按照公式P_i=Dec_x%P_total放置音频解码服务单元,即Dec_0属于P_0,Dec_1属于P_1、…、Dec_0+max属于P_0,Dec_1+max属于P_1+max...,从而保证每个线程所包含的音频解码服务单元总数基本一致。如此,便可保证CPU占用的均衡。
执行上述步骤S201至S205之后,便可对音频码流进行解码。具体的解码过程可参考图3,图3为本发明实施例中一种音频码流分发流程图。解码过程,包括:
S301:网络收取各个参会终端发送过来的音频码流Data_x,并将音频码流回调给数据处理系统。
S302:数据处理系统根据码流信息确认对应的音频解码服务单元Dec_x,再根据Dec_x中的序号x确认对应的处理线程P_y。
其中,码流信息包括端口,IP。序号确定对应处理线程的确定方式可对应参照音频解码服务单元分配确定方式,在此不再一一赘述。
S303:根据序号y来将音频码流放入对应的对立Q_y,同时插入标记Flag_x标识该数据属于音频解码服务单元Dec_x。
其中,Q_y为序号为y的音频解码线程的缓存列表。插入标记的该数据可表示为数据Data_x。
S304:根据序号y给线程P_y发送信号(signal),表示有数据需要处理。
S305:处理线程P_y创建后处于等待信号状态,直到有信号过来才进行下一步处理。
S306:线程P_y从队列Q_y中获取数据Data_x。
S307:根据数据Data_x中的标记Flag_x获取对应的音频解码服务单元Dec_x。
S308:最后调用音频解码服务单元Dec_x的解码函数进行解码处理。
关于音频解码线程饱和处理过程,请参考图4,图4为本发明实施例中一种线程过饱和处理流程图。该处理过程,包括:
S401:在音频解码线程对音频码流进行解码时,获取当前数据列表中缓冲数量Buf_total。
S402:将Buf_total与阈值门限Buf_thrshld进行比较,小于门限继续进行,超过门限发送信号给主控业务进行过饱和处理。
其中,阈值门限Buf_thrshld可预先设置,如可设置为95%,即Buf_thrshld=0.95xBuf_total。
步骤S401和步骤S402由音频解码线程执行。
S403:等待信号。
S404:收到信号后首先查找是否有存在额外空闲线程。
如果不存在,则执行步骤S405;如果存在则执行步骤S406。
S405:创建线程及其所有资源。
S406:获取线程对应的解码器列表。
S407:将饱和线程中的正在解码的音频解码服务单元分离出来,并放入空闲线程的解码器列表中。
S408:更新空闲线程状态。
其中,空闲线程状态包括目前音频解码服务单元数量等用来标识该线程是否为空闲的标识信息。
步骤S403至步骤S408由主控业务来执行。
实施例二:
相应于上面的方法实施例,本发明实施例还提供了一种会议音频解码装置,下文描述的会议音频解码装置与上文描述的会议音频解码方法可相互对应参照。
参见图5所示,该装置包括以下模块:
音频解码服务单元创建模块101,用于接收视频会议的解码服务请求,并利用解码服务请求创建与参会终端具有映射关系的音频解码服务单元;
音频解码线程创建模块102,用于创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;
音频解码线程设置模块103,用于按照均匀分布规则,将各个音频解码服务单元添加在音频解码线程的对象列表中,并记录线程对应关系;
音频码流接收模块104,用于接收各个参会终端的音频码流,利用映射关系确定各个音频码流分别对应的音频解码服务单元;
音频码流解码模块105,用于利用线程对应关系,将各个音频码流发送给对应的音频解码线程以进行解码。
应用本发明实施例所提供的装置,接收视频会议的解码服务请求,并利用解码服务请求创建与参会终端具有映射关系的音频解码服务单元;创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;按照均匀分布规则,将各个音频解码服务单元添加在音频解码线程的对象列表中,并记录线程对应关系;接收各个参会终端的音频码流,利用映射关系确定各个音频码流分别对应的音频解码服务单元;利用线程对应关系,将各个音频码流发送给对应的音频解码线程以进行解码。
在视频会议中,往往涉及音频解码和视频解码,相当于视频解码而言,音频解码则相对稳定,即CPU消耗起伏较小。为保障视频会议中心节点的稳定性,将音频解码服务单元均匀分配在多个音频解码线程中,保证系统的稳定性。具体的,即在接收到解码服务请求后,首先利用解码服务请求创建出与参会终端具有映射关系的音频解码服务单元,然后创建出多个音频解码线程,将音频解码服务单元均匀分布在音频解码线程中。如此,在接收到各个参会终端发送的音频码流时,便可采用不同的音频解码线程中的各个音频解码服务单元对相应的音频码流进行解码。与现有的会议系统相比,该装置可降低单个解码的CPU负载,提升CPU的利用效率,且相较于对视频码流进行多线程处理的方式而言,对音频码流进行多线程处理对保障系统稳定性的效果更佳。进一步,可增加可呼入终端的数量,即参会终端数量,为整个会议系统降低成本。
在本发明的一种具体实施方式中,音频解码服务单元创建模块101,具体用于对解码服务请求进行解析,确定会议视频的参会终端总数,以及各个参会终端的ID;创建与参会终端总数相同数目的音频解码服务单元;利用ID对音频解码服务单元进行标记,获得映射关系。
在本发明的一种具体实施方式中,音频解码线程创建模块102,具体用于获取单个音频解码线程的容纳量,以及音频解码服务单元的总数量;利用容纳量与总数量,创建容量总量大于总数量的多个音频解码线程。
在本发明的一种具体实施方式中,音频解码线程设置模块103,具体用于按照线程轮转顺序,将各个音频解码服务单元逐个添加在音频解码线程的对象列表中,并记录线程对应关系。
在本发明的一种具体实施方式中,音频解码线程设置模块103,具体用于利用总数量和音频解码线程的总个数,按照均匀分布规则计算出每个音频解码线程应添加的音频解码服务单元数;按照音频解码服务单元数,在各个音频解码线程的对象列表中添加音频解码服务单元。
在本发明的一种具体实施方式中,音频码流解码模块105,具体用于按照线程对应关系,将音频码流发送给相应音频解码线程的缓存队列中,以便各个音频解码线程中的音频解码服务单元对音频码流进行解码。
在本发明的一种具体实施方式中,还包括:
过饱和线程处理模块,用于对各个缓存队列的缓存数量进行监测;在目标缓存队列的缓存数量大于预设缓存阈值时,将目标缓存队列所属的目标音频解码线程确定为饱和线程;获取空闲线程,并将目标音频解码线程的对象列表中目标音频解码服务单元移至空闲线程的对象列表中。
实施例三:
相应于上面的方法实施例,本发明实施例还提供了一种会议音频解码设备,下文描述的一种会议音频解码设备与上文描述的一种会议音频解码方法可相互对应参照。
参见图6所示,该会议音频解码设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的会议音频解码方法的步骤。
具体的,请参考图7,图7为本实施例提供的一种会议音频解码设备的具体结构示意图,该会议音频解码设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在会议音频解码设备301上执行存储介质330中的一系列指令操作。
会议音频解码设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
上文所描述的会议音频解码方法中的步骤可以由会议音频解码设备的结构实现。
实施例四:
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种会议音频解码方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的会议音频解码方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (10)
1.一种会议音频解码方法,其特征在于,包括:
接收视频会议的解码服务请求,并利用所述解码服务请求创建与参会终端具有映射关系的音频解码服务单元;
创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;
按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,并记录线程对应关系;
接收各个所述参会终端的音频码流,利用所述映射关系确定各个所述音频码流分别对应的所述音频解码服务单元;
利用所述线程对应关系,将各个所述音频码流发送给对应的所述音频解码线程以进行解码。
2.根据权利要求1所述的会议音频解码方法,其特征在于,利用所述解码服务请求创建与参会终端具有映射关系的音频解码服务单元,包括:
对所述解码服务请求进行解析,确定所述会议视频的参会终端总数,以及各个所述参会终端的ID;
创建与所述参会终端总数相同数目的所述音频解码服务单元;
利用所述ID对所述音频解码服务单元进行标记,获得所述映射关系。
3.根据权利要求1所述的会议音频解码方法,其特征在于,所述创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程,包括:
获取单个所述音频解码线程的容纳量,以及所述音频解码服务单元的总数量;
利用所述容纳量与所述总数量,创建所述容量总量大于所述总数量的多个所述音频解码线程。
4.根据权利要求1所述的会议音频解码方法,其特征在于,按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,包括:
按照线程轮转顺序,将各个所述音频解码服务单元逐个添加在所述音频解码线程的对象列表中。
5.根据权利要求1所述的会议音频解码方法,其特征在于,所述按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,包括:
利用所述总数量和所述音频解码线程的总个数,按照均匀分布规则计算出每个所述音频解码线程应添加的所述音频解码服务单元数;
按照所述音频解码服务单元数,在各个所述音频解码线程的所述对象列表中添加所述音频解码服务单元。
6.根据权利要求1至5任一项所述的会议音频解码方法,其特征在于,所述利用所述线程对应关系,将各个所述音频码流发送给对应的所述音频解码线程以进行解码,包括:
按照所述线程对应关系,将所述音频码流发送给相应所述音频解码线程的缓存队列中,以便各个所述音频解码线程中的所述音频解码服务单元对音频码流进行解码。
7.根据权利要求6所述的会议音频解码方法,其特征在于,还包括:
对各个所述缓存队列的缓存数量进行监测;
在目标缓存队列的所述缓存数量大于预设缓存阈值时,将所述目标缓存队列所属的目标音频解码线程确定为饱和线程;
获取空闲线程,并将所述目标音频解码线程的对象列表中目标音频解码服务单元移至所述空闲线程的对象列表中。
8.一种会议音频解码装置,其特征在于,包括:
音频解码服务单元创建模块,用于接收视频会议的解码服务请求,并利用所述解码服务请求创建与参会终端具有映射关系的音频解码服务单元;
音频解码线程创建模块,用于创建容纳总量与音频解码服务单元总数量匹配的多个音频解码线程;
音频解码线程设置模块,用于按照均匀分布规则,将各个所述音频解码服务单元添加在所述音频解码线程的对象列表中,并记录线程对应关系;
音频码流接收模块,用于接收各个所述参会终端的音频码流,利用所述映射关系确定各个所述音频码流分别对应的所述音频解码服务单元;
音频码流解码模块,用于利用所述线程对应关系,将各个所述音频码流发送给对应的所述音频解码线程以进行解码。
9.一种会议音频解码设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述会议音频解码方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述会议音频解码方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910357861.8A CN110087019B (zh) | 2019-04-29 | 2019-04-29 | 一种会议音频解码方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910357861.8A CN110087019B (zh) | 2019-04-29 | 2019-04-29 | 一种会议音频解码方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110087019A true CN110087019A (zh) | 2019-08-02 |
CN110087019B CN110087019B (zh) | 2021-03-19 |
Family
ID=67417850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910357861.8A Active CN110087019B (zh) | 2019-04-29 | 2019-04-29 | 一种会议音频解码方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110087019B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112543165A (zh) * | 2019-09-20 | 2021-03-23 | 浙江宇视科技有限公司 | 一种解码方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206016B2 (en) * | 2000-05-01 | 2007-04-17 | Polycom, Inc. | Filtering artifacts from multi-threaded video |
CN101707687A (zh) * | 2009-11-10 | 2010-05-12 | 中兴通讯股份有限公司 | 一种会议电视业务调度方法和会议电视系统 |
CN103024388A (zh) * | 2012-12-17 | 2013-04-03 | 广东威创视讯科技股份有限公司 | 多画面的视频实时解码方法及系统 |
CN105391968A (zh) * | 2015-11-03 | 2016-03-09 | 浙江大华技术股份有限公司 | 一种视频会话分配方法及装置 |
CN108882021A (zh) * | 2017-10-20 | 2018-11-23 | 北京视联动力国际信息技术有限公司 | 一种视频播放方法和装置 |
-
2019
- 2019-04-29 CN CN201910357861.8A patent/CN110087019B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206016B2 (en) * | 2000-05-01 | 2007-04-17 | Polycom, Inc. | Filtering artifacts from multi-threaded video |
CN101707687A (zh) * | 2009-11-10 | 2010-05-12 | 中兴通讯股份有限公司 | 一种会议电视业务调度方法和会议电视系统 |
CN103024388A (zh) * | 2012-12-17 | 2013-04-03 | 广东威创视讯科技股份有限公司 | 多画面的视频实时解码方法及系统 |
CN105391968A (zh) * | 2015-11-03 | 2016-03-09 | 浙江大华技术股份有限公司 | 一种视频会话分配方法及装置 |
CN108882021A (zh) * | 2017-10-20 | 2018-11-23 | 北京视联动力国际信息技术有限公司 | 一种视频播放方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112543165A (zh) * | 2019-09-20 | 2021-03-23 | 浙江宇视科技有限公司 | 一种解码方法、装置、设备和介质 |
CN112543165B (zh) * | 2019-09-20 | 2022-11-15 | 浙江宇视科技有限公司 | 一种解码方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110087019B (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110769278B (zh) | 一种分布式视频转码方法及系统 | |
CN107018175B (zh) | 移动云计算平台的调度方法和装置 | |
CN107241281B (zh) | 一种数据处理方法及其装置 | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
US6606306B1 (en) | System and method for supporting a plurality of media conferences | |
US20240118928A1 (en) | Resource allocation method and apparatus, readable medium, and electronic device | |
CN105471950A (zh) | 分布式计算方法及系统 | |
CN113419846B (zh) | 资源配置方法和装置、电子设备及计算机可读存储介质 | |
CN114155026A (zh) | 一种资源分配方法、装置、服务器及存储介质 | |
CN102891809A (zh) | 多核网络设备报文按接口保序方法及系统 | |
CN110048882A (zh) | 一种基于边缘计算的资源分配的方法和装置 | |
RU2571398C2 (ru) | Способ и устройство для осуществления службы групповой передачи | |
CN113285886A (zh) | 一种带宽分配的方法、装置、电子设备及可读存储介质 | |
CA2697994C (en) | Method and apparatus for data processing using queuing | |
CN110087019A (zh) | 一种会议音频解码方法、装置、设备及可读存储介质 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN111585999B (zh) | 一种数据转换方法、系统及存储介质 | |
CN109951532B (zh) | 一种基于dpdk的流量模型自动变换装置 | |
CN110427273A (zh) | 内存调度方法、装置、设备及存储介质 | |
CN114205359A (zh) | 视频渲染协同方法、装置及设备 | |
CN109246387B (zh) | 一种远程会议账号资源转换计算方法、装置及存储介质 | |
CN111488222B (zh) | 一种流聚合方法、装置及电子设备 | |
CN109412973B (zh) | 一种音频处理方法、装置及存储介质 | |
CN109547730A (zh) | 一种多点控制单元资源的调度方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |