直播编码方法、装置以及电子设备

文档序号:1357227 发布日期:2020-07-24 浏览:23次 >En<

阅读说明:本技术 直播编码方法、装置以及电子设备 (Live broadcast encoding method and device and electronic equipment ) 是由 郭志鸣 时杰 于 2020-04-03 设计创作,主要内容包括:本申请提供了一种直播编码方法、装置以及电子设备,涉及直播技术领域,解决了对用于直播的视频进行编码的效率较低,导致直播延时的技术问题。该方法包括:接收主播终端录制并发送的待编码视频的数据流;根据第一直播服务器中的CPU和GPU的利用率,动态调整所述待编码视频的数据流的第一目标编码方式;所述第一目标编码方式为硬编码或软编码;基于所述第一目标编码方式,对所述待编码视频的数据流进行编码,将编码后的视频发送至观众客户端。(The application provides a live broadcast encoding method and device and electronic equipment, relates to the technical field of live broadcast, and solves the technical problem that live broadcast delay is caused by low efficiency of encoding videos for live broadcast. The method comprises the following steps: receiving a data stream of a video to be coded, which is recorded and transmitted by a main broadcasting terminal; dynamically adjusting a first target coding mode of the data stream of the video to be coded according to the utilization rates of a CPU and a GPU in a first direct-broadcasting server; the first target coding mode is hard coding or soft coding; and coding the data stream of the video to be coded based on the first target coding mode, and sending the coded video to a viewer client.)

直播编码方法、装置以及电子设备

技术领域

本申请涉及直播技术领域,尤其是涉及一种直播编码方法、装置以及电子设备。

背景技术

随着移动互联网的发展,直播软件越来越受欢迎,越来越多的主播利用直播平台向观众播放各种内容。在移动直播中,主播的主播客户端可以通过直播软件向观众进行现场直播。

目前,直播服务器需要先对用于直播的视频进行编码,编码后的视频才可以向观众进行现场直播。但是,目前对视频进行编码过程的编码效率较低,导致直播延时,容易降低直播过程中的客户体验。

发明内容

本发明的目的在于提供一种直播编码方法、装置以及电子设备,以解决对用于直播的视频进行编码的效率较低,导致直播延时的技术问题。

第一方面,本申请实施例提供了一种直播编码方法,应用于第一直播服务器,所述方法包括:

接收主播终端录制并发送的待编码视频的数据流;

根据所述第一直播服务器中的中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit,GPU)的利用率,动态调整所述待编码视频的数据流的第一目标编码方式;所述第一目标编码方式为硬编码或软编码;

基于所述第一目标编码方式,对所述待编码视频的数据流进行编码,将编码后的视频发送至观众客户端。

在一个可能的实现中,根据所述第一直播服务器中的CPU和GPU的利用率,动态调整所述待编码视频的数据流的第一目标编码方式的步骤之前,包括:

通过硬编码的方式,对所述待编码视频的数据流进行编码;

实时监测所述GPU和所述CPU的利用率。

在一个可能的实现中,根据所述第一直播服务器中的CPU和GPU的使用率,动态调整所述待编码视频的数据流的第一目标编码方式的步骤,包括:

在所述GPU的利用率超过第一阈值时,确定通过软编码的方式,对所述待编码视频的部分数据流进行编码;

在所述GPU的利用率降低至所述第一阈值以下时,确定通过硬编码的方式,对所述待编码视频的部分数据流进行编码。

在一个可能的实现中,还包括:

基于所述待编码视频的待处理任务量,预测所述GPU的利用率;

在所述利用率未超过第一阈值时,确定通过硬编码的方式对所述待编码视频进行编码;

在所述利用率超过所述第一阈值时,基于所述待编码视频的业务属性,确定第二目标编码方式;如果所述业务属性对应的分辨率或码率达到预设值,则确定所述第二目标编码方式为硬编码;如果所述业务属性对应的分辨率或码率未达到所述预设值,则确定所述第二目标编码方式为软编码。

在一个可能的实现中,所述业务属性包括业务类型,所述业务类型包括综艺类、游戏类、运动类以及视频类中的至少一种。

在一个可能的实现中,所述方法包括:

在所述第一直播服务器处理的编码任务量大于第三阈值时,与除所述第一直播服务器之外的第二直播服务器进行负载平衡切换,以通过所述第二直播服务器进行新增编码任务量的处理。

第二方面,提供了一种直播编码装置,应用于第一直播服务器,所述装置包括:

接收模块,用于接收主播终端录制并发送的待编码视频的数据流;

调整模块,用于根据所述第一直播服务器中的CPU和GPU的利用率,动态调整所述待编码视频的数据流的第一目标编码方式;所述第一目标编码方式为硬编码或软编码;

编码模块,用于基于所述第一目标编码方式,对所述待编码视频的数据流进行编码,将编码后的视频发送至观众客户端。

在一个可能的实现中,所述装置还包括:

确定判断模块,用于基于所述待编码视频的业务属性,确定第二目标编码方式;

不同的所述业务属性对应的视频的分辨率或码率不同;如果所述待编码视频的业务属性对应的分辨率或码率达到阈值,则确定所述第二目标编码方式为硬编码;如果所述待编码视频的业务属性对应的分辨率或码率未达到阈值,则确定所述第二目标编码方式为软编码。

第三方面,本申请实施例又提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的第一方面所述方法。

第四方面,本申请实施例又提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述的第一方面所述方法。

本申请实施例带来了以下有益效果:

本申请实施例提供的一种直播编码方法、装置以及电子设备,能够接收主播终端录制并发送的待编码视频的数据流,再根据服务器中的CPU和GPU的利用率,动态调整待编码视频的数据流的第一目标编码方式,其中,第一目标编码方式为硬编码或软编码,然后,基于第一目标编码方式,对待编码视频的数据流进行编码,将编码后的视频发送至观众客户端,本方案中,通过基于GPU和CPU的利用率来动态调整第一目标编码方式为硬编码或软编码,避免由于GPU或CPU利用率而影响编码效率,实现了视频直播中编码过程的优化,提高了编码过程的效率,以降低直播延时,提升客户端的客户体验。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请

具体实施方式

或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的应用场景示意图;

图2为本申请实施例提供的直播编码方法的流程示意图;

图3为本申请实施例提供的一种直播编码装置的结构示意图;

图4为示出了本申请实施例所提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

目前,在直播应用程序工作的过程中,直播服务器通常会使用软编码或硬编码方式对视频数据进行编码后发送出去。软编码,是使用中央处理器(Central ProcessingUnit,CPU)进行编码,实现方式简单,参数调整方便,升级容易,但CPU负载重,性能比硬编码低;硬编码,是使用图形处理器(Graphics Processing Unit,GPU)进行编码,性能比软编码高。

因此,直播服务器在整个直播过程中一般全程使用软编码或者硬编码方式进行编码直播。由于在直播服务器的应用中,CPU以及GPU都是共享资源。假设一个只支持软编码的应用在执行的时候,遇到其他应用抢占CPU资源,就会导致视频直播卡顿,播放效果差;而对于只使用硬编码的应用,如果GPU由于处理任务量较大而超过负载运行,会影响任务处理效率,而且也无法实现资源的充分利用。

而且,目前对用于直播的视频进行编码过程的编码效率较低,导致直播延时,容易降低直播过程中的客户体验。

基于此,本申请实施例提供了一种直播编码方法、装置以及电子设备。通过该方法可以解决对用于直播的视频进行编码的效率较低,导致直播延时的技术问题。

本申请实施例中的待编码视频的录制过程可以由终端完成。其中,该终端包括图像采集器(例如,摄像头)和处理器,该图像采集设备用于采集用户的实时动态图像数据。

在一些实施例中,通过该终端录制完成直播视频后,可以通过有线或无线通信将该录制完成的直播视频发送至直播服务器,由直播服务器对其进行编码。

例如,如图1所示,图1为本申请实施例提供的应用场景示意图。该应用场景可以包括第一直播服务器101和终端(例如,手机102),该终端可以通过有线网络或无线网络与第一直播服务器101进行通信。

当然,本申请实施例提供的直播场景中的终端可以有多个,如主播客户端的终端和若干个观众客户端的终端,都可以通过网络与图1中的第一直播服务器101通信。其中,第一直播服务器101可以为内容分发网络(Content Delivery Network,CDN)服务器。

下面结合附图对本发明实施例进行进一步地介绍。

图2为本申请实施例提供的一种直播编码方法的流程示意图。其中,该方法应用于第一直播服务器。如图2所示,该方法包括:

步骤S210,接收主播终端录制并发送的待编码视频的数据流。

其中,待编码视频可以是通过主播客户端录制的用于直播的实时视频,也可以是通过其他终端录制的用于直播的实时视频。

在实际应用中,第一直播服务器可以与主播客户端之间有线通信,也可以无线通信。

步骤S220,根据第一直播服务器中的CPU和GPU的利用率,动态调整待编码视频的数据流的第一目标编码方式。

步骤S230,基于第一目标编码方式,对待编码视频的数据流进行编码,将编码后的视频发送至观众客户端。

通过基于GPU和CPU的利用率来动态调整第一目标编码方式为硬编码或软编码,避免由于GPU或CPU利用率而影响编码效率,实现了视频直播中编码过程的优化,提高了编码过程的效率,以降低直播延时,提升客户端的客户体验。

下面对上述步骤进行详细介绍。

在一些实施例中,在步骤S220之前,该方法还可以包括以下步骤:

步骤a),通过硬编码的方式,对待编码视频的数据流进行编码;

步骤b),实时监测GPU和CPU的利用率。

在实际应用中,可以优先采用GPU的硬编码方式,具体的,可以先判断本地是否插了GPU硬件,如果插了GPU硬件则优先采用硬编码,以实现GPU的优先有效使用。

基于上述步骤a)和步骤b),上述步骤S220可以包括如下步骤:

步骤c),在GPU的利用率超过第一阈值时,确定通过软编码的方式,对待编码视频的部分数据流进行编码;

步骤d),在GPU的利用率降低至第一阈值以下时,确定通过硬编码的方式,对待编码视频的部分数据流进行编码。

当GPU被分配到的任务量达到GPU所对应的第一阈值时,后续任务分配到对应第一直播服务器的CPU。当后续CPU被分配到的任务量达到CPU所对应的第二阈值时,且GPU被分配到的任务量下降到了一定程度时,后续新的任务可以再分配到该GPU,以实现负载均衡。

例如,在对直播视频使用硬编码的时候,如果检测到当前第一直播服务器的GPU利用率超过第一阈值,如超过GPU负载的65%时候,后续编码任务分配到对应第一直播服务器的CPU,防止GPU超负载运行以免影响编码质量。

再例如,在对直播视频使用软编码的时候,如果检测到当前第一直播服务器的CPU利用率超过第二阈值,如超过CPU负载的60%时候,而且GPU的利用率下降到了第一阈值以下的时候,后续新的任务可以再继续分配到该GPU,防止CPU超负载运行以免影响编码质量。

在实际应用中,可以优先采用硬编码。具体的,如果判断出GPU为可使用状态,则优先采用硬编码,也就是使用GPU进行硬编码。在GPU的使用过程中,可以判断该GPU硬件的实际负载情况是否达到了提前预设的第一阈值,如果达到了第一阈值则将编码方式从硬编码陆续转为分配至软编码,也就是使用CPU进行软编码。接下来,对于待处理任务,在将要使用CPU进行软编码任务处理时,可以通过监测判断GPU处理任务的利用率是否下降到了第一阈值以下,如果降到了第一阈值以下则该待处理任务以及接下来任务将陆续转为分配至硬编码进行任务处理,从而能够实现负载均衡。

在一些实施例中,该方法还可以包括以下步骤:

步骤e),基于待编码视频的待处理任务量,预测GPU的利用率。

步骤f),在利用率超过第一阈值时,基于待编码视频的业务属性,确定第二目标编码方式;如果业务属性对应的分辨率或码率达到预设值,则确定第二目标编码方式为硬编码;如果业务属性对应的分辨率或码率未达到预设值,则确定第二目标编码方式为软编码。

步骤g),在利用率未超过第一阈值时,确定通过硬编码的方式对待编码视频进行编码。

不同的业务属性对应的视频的分辨率或码率不同;在GPU的利用率超过第一阈值的情况下,如果待编码视频的业务属性对应的分辨率或码率达到较高,则确定第二目标编码方式为硬编码;如果待编码视频的业务属性对应的分辨率或码率较低,则确定第二目标编码方式为软编码。

当然,在GPU的利用率未超过第一阈值时,还是优先利用GPU通过硬编码的方式对待编码视频进行编码。

通过根据待编码视频的业务属性来确定第二目标编码方式,即根据待编码视频的业务属性对应的分辨率或码率的高低情况,来确定进行硬编码或软编码,能够使确定并使用的编码方式更加适合待编码视频的业务属性,实现了视频直播中编码过程的优化,提高了编码过程的效率,以降低直播延时,提升客户端的客户体验。

在实际应用中,可以是视频的业务属性对应的分辨率越大,或者码率越大,越可能确定第二目标编码方式为硬编码;视频的业务属性对应的分辨率越小,或者码率越小,越可能确定第二目标编码方式为软编码。

通过根据待编码的视频的业务属性对应的分辨率、码率等的大小来确定第二目标编码方式为硬编码或软编码,能够使编码过程更加适合待编码的视频的业务情况,更具有针对性,更加提升了编码效率。

基于上述步骤e)和步骤f),业务属性包括业务类型,业务类型包括综艺类、游戏类、运动类以及视频类中的至少一种。

待编码的视频的业务属性可以包括多种,可以不限于综艺类、游戏类、运动类以及视频类。随着业务、环境、场景等不断增加,视频的业务属性也可以随着不断更新,以适应主播客户和观众客户端的更多需求。

在一些实施例中,该方法还可以包括以下步骤:

步骤g),第一直播服务器在处理的编码任务量大于第三阈值时,与除第一直播服务器之外的第二直播服务器进行负载平衡切换,以通过第二直播服务器进行新增编码任务量的处理。

例如,第一服务器的GPU和CPU的利用率都超过各自的阈值了,便可以由第二服务器的GPU进行编码处理,在第二服务器的GPU利用率超过其自身阈值时,还可以再由第二服务器的CPU进行编码处理,以实现多个服务器之间的负载均衡。

图3提供了一种直播编码装置的结构示意图。该装置可以应用于第三直播服务器。如图3所示,直播编码装置300包括:

接收模块301,用于接收主播终端录制并发送的待编码视频的数据流;

调整模块302,用于根据第三直播服务器中的CPU和GPU的利用率,动态调整待编码视频的数据流的第一目标编码方式;第一目标编码方式为硬编码或软编码;

编码模块303,用于基于第一目标编码方式,对待编码视频的数据流进行编码,将编码后的视频发送至观众客户端。

在一些实施例中,装置还包括:

GPU模块,用于通过硬编码的方式,对待编码视频的数据流进行编码;

监测模块,用于实时监测GPU和CPU的利用率。

在一些实施例中,装置还包括:

CPU模块,用于在GPU的利用率超过第一阈值时,确定通过软编码的方式,对待编码视频的部分数据流进行编码;

GPU模块在CPU的利用率超过第二阈值时,确定通过硬编码的方式,对待编码视频的部分数据流进行编码。

在一些实施例中,装置还包括:

确定判断模块,用于基于待编码视频的业务属性,确定第二目标编码方式;

不同的业务属性对应的视频的分辨率或码率不同;如果待编码视频的业务属性对应的分辨率或码率达到阈值,则确定第二目标编码方式为硬编码;如果待编码视频的业务属性对应的分辨率或码率未达到阈值,则确定第二目标编码方式为软编码。

在一些实施例中,业务属性包括业务类型,业务类型包括综艺类、游戏类、运动类以及视频类中的至少一种。

在一些实施例中,装置还包括:

切换模块,用于在第三直播服务器处理编码任务量大于第三阈值时,与除第三直播服务器之外的第四直播服务器进行负载平衡切换,以通过第四直播服务器进行新增编码任务量的处理。

本申请实施例提供的直播编码装置,与上述实施例提供的直播编码方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本申请实施例提供的一种电子设备,如图4所示,电子设备400包括存储器401、处理器402和图像采集器405。其中,图像采集器405可以通过采集图像得到待编码的视频,存储器401中存储有可在处理器402上运行的计算机程序,处理器402执行所述计算机程序时实现上述实施例提供的方法的步骤。

参见图4,电子设备还包括:总线403和通信接口404,处理器402、通信接口404和存储器401通过总线403连接;处理器402用于执行存储器401中存储的可执行模块,例如计算机程序。

其中,存储器401可能包含高速随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口404(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线403可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器401用于存储程序,所述处理器402在接收到执行指令后,执行所述程序,前述本申请任一实施例揭示的过程定义的装置所执行的方法可以应用于处理器402中,或者由处理器402实现。

处理器402可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器402可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器402读取存储器401中的信息,结合其硬件完成上述方法的步骤。

对应于上述直播编码方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述直播编码方法的步骤。

本申请实施例所提供的直播编码装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述直播编码方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于用户体验与终端能耗的DASH视频码率选择方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类