掌桥专利:专业的专利平台
掌桥专利
首页

直播转码方法及系统

文献发布时间:2023-06-19 19:28:50


直播转码方法及系统

技术领域

本申请涉及视频处理技术领域,特别涉及一种直播转码方法。本申请同时涉及一种直播转码系统,一种计算设备,以及一种计算机可读存储介质。

背景技术

随着网络的迅速发展及普及,网络直播已成为潮流,越来越多的用户通过移动终端进行直播或者观看直播,直播已经发展成为了一种职业,同时直播过程中大量用户端拉流产生的带宽消耗也是非常高的。

为解决上述问题,在直播间开播后,为进入直播间的用户提供源流,在进入的用户达到一定数量时,对源流进行转码,获得转码流,降低直播流的码率,为后面再进入直播间的用户提供转码流,以使用户通过用户端观看直播,虽然在一定程度上节省了带宽消耗,但是在直播间开播后,达到一定数量之前的用户观看的还是源流,这一部分用户的带宽消耗依然很高,因此,亟需一种节省带宽消耗的直播转码方法。

发明内容

有鉴于此,本申请实施例提供了一种直播转码方法。本申请同时涉及一种直播转码系统,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的直播过程中带宽消耗过高的问题。

根据本申请实施例的第一方面,提供了一种直播转码方法,包括:

在直播间开播之前,获取所述直播间的流量信息;

在所述流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,所述至少一个预转码任务用于生成至少一路转码流;

在所述直播间开播时,拉取所述直播间的源流,基于所述源流和所述至少一个预转码任务,生成至少一路转码流。

根据本申请实施例的第二方面,提供了一种直播转码系统,所述直播转码系统包括流状态服务和转码服务;

所述流状态服务,被配置为在直播间开播之前,获取所述直播间的流量信息,并确定所述流量信息是否满足预转码条件;

所述转码服务,被配置为在所述流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,所述至少一个预转码任务用于生成至少一路转码流;在所述直播间开播时,拉取所述直播间的源流,基于所述源流和所述至少一个预转码任务,生成至少一路转码流。

根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述直播转码方法的步骤。

根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述直播转码方法的步骤。

本申请实施例提供的直播转码方法,在直播间开播之前,获取直播间的流量信息;在流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,至少一个预转码任务用于生成至少一路转码流;在直播间开播时,拉取直播间的源流,基于源流和至少一个预转码任务,生成至少一路转码流。

本申请一实施例在直播间开播之前,若确定该直播间的流量信息满足预转码条件,则为该直播间创建预转码任务,在直播间开播时,可直接基于预转码任务和源流,生成转码流,通过基于直播间开播前流量信息的情况,预先创建预转码任务,在开播时基于预转码任务进行相应的处理,使得在开播后拉取到源流的短时间内,各预转码任务对应的转码流直播画面已生成,并分配到对应的用户端,以使各用户直接观看转码流对应的画面,避免了在开播时才进行是否生成转码流的判断以及转码,减少了带宽的消耗,降低了直播播放的成本。

附图说明

图1是现有技术的一种直播转码的逻辑框架图;

图2是本申请一实施例提供的一种直播转码方法的流程图;

图3是本申请一实施例提供的一种应用于直播视频的直播转码方法的处理流程图;

图4a是本申请一实施例提供的一种直播转码方法中候选流状态显示示意图;

图4b是本申请一实施例提供的一种直播转码方法在直播间开播之前的逻辑框架图;

图4c是本申请一实施例提供的一种直播转码方法在直播间开播时的逻辑框架图;

图5是本申请一实施例提供的一种直播转码系统的结构示意图;

图6是本申请一实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本申请一个或多个实施例涉及的名词术语进行解释。

直播流:直播音视频数据的传输,它能够被作为一个稳定的和连续的流通过网络传输给观众观看,比如,源流、转码流,源流的带宽高于转码流。

直播房间:直播服务中,每个主播会有一个唯一标识符,以标识符可以进入该主播的直播观看页面,直播房间和流的关系:一般而言,一个房间对应一个直播流,流是对于CDN而言的,房间是对于直播平台而言。

内容分发网络(Content Delivery Network,内容分发网络):是构建在网络之上的内容分发网络,依靠部署在各地的边缘节点(即边缘服务器),通过中心调度服务器的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

Pod:是一个或一个以上的容器(例如Docker容器)组成的,且具有共享存储/网络的能力,以及运行容器的规范。

边缘计算:是一种分布式运算的架构,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理。

边缘计算上行:接收用户推流的服务器,服务器用于响应终端的服务请求,并进行处理。

转码:是指为了适应不同的网络带宽、不同的终端处理能力和不同的用户需求,将已经压缩编码的视频码流转换成另一个视频码流。

码率:是视频或者音频单位时间内传递的数据量。

推流:是指将直播内容推送至服务器的过程。

拉流:是指服务器已有直播内容,用指定地址进行拉取的过程。

参见图1,图1示出了现有技术的一种直播转码的逻辑框架图:

现有技术中为节省带宽的消耗,按照下述流程进行直播转码,(1):主播开播,推流(源流)到边缘计算上行;(2)边缘计算上行接收到源流后,会向流状态服务更新状态,同时将源流转推至CDN,也即源流已产生画面(原画),可以被调度,此时流状态服务中记录的可调度的流状态有:【原画】;(3)用户进入直播间后,向调度系统请求观看地址,调度服务向流状态服务询问流状态,获得存在的流状态有【原画】,则向用户分配原画的观看地址;(4)随着进入直播间使用源流进行观看的人数增多,直播间将心跳上报至人数服务,人数服务确定出人数达到一定条件,向转码服务发送信息,转码服务根据信息向转码集群下发转码任务,转码集群包括多个POD,以使转码任务基于源流生产出多条不同码率的转码流,生成完成后,推【转码流:高清、蓝光、超清】到边缘计算上行,边缘计算上行接收到【转码流:高清、蓝光、超清】后,向流状态服务更新状态,也即转码流已产生画面,此时流状态服务中记录的可调度的流状态有:【原画、高清、蓝光、超清】;(5)后续新进入直播间的用户,向调度系统请求观看地址时,调度服务向流状态服务询问流状态,获得存在的流状态有【原画、高清、蓝光、超清】,则向用户分配转码流的观看地址。

上述现有技术中,没有办法应对在转码任务启动之前,人们观看的都是源流,带来的带宽高消耗的成本压力,比如,在直播开始前进入直播间的有1万人,而设置的转码条件对应的阈值为2000人,但是现有技术中,是开播后才进行是否转码的判断以及转码,相应地,开播之后,1万人观看的是源流对应的原画,之后观看的人才会是转码流对应的画面,即使设置了转码条件,但是由于是开播之后判断的,所以对带宽的消耗还是非常大的。因此本申请在直播间开播之前,若确定该直播间的流量信息满足预转码条件,则为该直播间创建预转码任务,在直播间开播时,可直接基于预转码任务和源流,生成转码流,通过基于直播间开播前流量信息的情况,预先创建预转码任务,在开播时基于预转码任务进行相应的处理,使得在开播后拉取到源流的短时间内,各预转码任务对应的转码流直播画面已生成,并分配到对应的用户端,以使各用户直接观看转码流对应的画面,避免了在开播时才进行是否生成转码流的判断以及转码,减少了带宽的消耗,降低了直播播放的成本。

在本申请中,提供了一种直播转码方法,本申请同时涉及一种直播转码系统,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

图2示出了根据本申请一实施例提供的一种直播转码方法的流程图,应用于直播转码系统,直播转码系统包括流状态服务、转码服务和调度服务,具体包括以下步骤:

步骤202:在直播间开播之前,获取所述直播间的流量信息。

在直播间开播之前,通过流状态服务对直播间的流量信息进行获取,以便于后续基于获取的流量信息预估直播间的热度,进而基于预估结果进行相应的处理。

具体地,流量信息是指表征直播间热度的信息,如历史用户访问量、历史观看量、预约量、等待量等信息。作为一种示例,流量信息通常可以包括直播间开播前的等待信息、直播间主播的属性信息等。

实际应用中,用户在直播间里等待开播时,房间页会向人数服务定时上报心跳,人数服务进行数据汇总,进而获得直播间内在线等待的人数,因为转码集群的资源是有限的,不可能给每个主播的源流都进行转码,所以需要对各主播的流量信息进行获取并进行判断,确定出流量较高的主播对应的直播间,为确定出的主播的直播间配置转码,以更有效的方式实现对资源的利用。

在本申请实施例中,获取到直播间的流量信息后,对流量信息进行判断,确定各直播间的流量信息是否达到一定的要求,若未达到则不对直播间进行处理,若达到了,则对该直播间的源流进行相应的处理,进而节省该直播间在直播过程中对带宽的消耗。

步骤204:在所述流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,所述至少一个预转码任务用于生成至少一路转码流。

在流状态服务确定直播间的流量信息满足预转码条件的情况下,流状态服务通知转码系统进行预转码,转码服务创建至少一个预转码任务。

具体地,预转码条件是指预先设置的对源流是否进行转码的设定条件,该预转码条件可以用于确定直播间的热度是否需要进行预转码,比如,预转码条件是在线等待人数超过1000人,则若是某直播间的在线等待人数超过1000人时,则确定该直播间的流量信息达到预转码条件。预转码任务是指在满足预转码条件的情况下设定的预转码任务,预转码任务通常用于将源流转码为转码流,转码流的码率通常是低于源流的码率。

示例性地,预转码任务可以是将码率为10M的源流转码为码率为8M的高清转码流。

可选地,至少一个预转码任务用于生成至少一路转码流,可以是一个预转码任务用于生成一路转码流,比如设定一个预转码任务用于转出一路转码流,需要多路转码流时设定多个预转码任务;也可以是一个预转码任务用于生成多路转码流,比如,在一个预转码任务中设定需要转出的转码流为多个;还可以是多个预转码任务用于生成一路转码流,比如,设定多个预转码任务转码出一路转码流。

实际应用中,流量信息和预转码条件是相对应的,若流量信息为直播间开播前,直播间的在线等待人数时,预转码条件是人数阈值;若流量信息为直播间开播前,系统调度次数时,预转码条件是次数阈值;若流量信息为直播间对应主播的主播属性时,预转码条件是指定属性。

在流量信息满足预转码条件的情况下,创建至少一个预转码任务,可以是基于直播间的历史直播记录设定预转码任务,也可以是根据直播平台的要求,设定预转码任务,具体设定情况可根据实际情况进行确定,本申请在此不作任何限定。

本实施例一种可能的实现方式中,可以是基于该直播间历史直播中所出现的转码流信息,创建至少一个预转码任务。例如,获取该直播间前5场进行直播播放的用户端使用的直播流有标清和流畅,则根据标清和流畅,创建两个预转码任务,一个用于转码得到标清,一个用于转码得到流畅。

本实施例另一种可能的实现方式中,可以是基于该直播间所述平台可以支持的转码流,创建至少一个预转码任务。例如,该直播间播放的平台是平台A,平台A只支持流畅和蓝光,则根据流畅和蓝光,创建两个预转码任务,一个用于转码得到流畅,一个用于转码得到蓝光。

可选地,创建至少预转码任务是需要为预转码任务对应的转码流分配拉流地址的,拉流地址是依据直播间的直播间标识预先分配的,在创建预转码任务时,为对应的转码流分配该预分配的拉流地址,以创建预转码任务。

本实施例一个可选的实施方式中,流量信息包括在线等待信息,在线等待信息包括在线等待人数和系统调度次数;在上述步骤204之前,还包括如下具体步骤:

在所述在线等待人数超过第一设定阈值、和/或所述系统调度次数超过第二设定阈值的情况下,确定所述流量信息满足所述预转码条件。

流状态服务从人数服务中获取在线等待人数,并从调度服务中获取系统调度次数,在确定在线等待人数超过第一设定阈值、和/或系统调度次数超过第二设定阈值的情况下,流状态服务可确定流量信息满足预转码条件。

具体地,在线等待信息是指在直播间未开播前实时统计到的直播间的访问情况,用于表征直播间在未开播之前的热度,在线等待信息通常包括在线等待人数和系统调度次数。在线等待人数是指在直播间未开播前,实时统计到的在直播间进行等待的人数。系统调度次数是指在直播间未开播前单位时间内用户端向调度服务发起调度请求的次数。第一设定阈值是指预先对在线等待人数设置的数量阈值,若达到该第一设定阈值,则确定流量信息满足预转码条件。第二设定阈值是指预先对系统调度次数设置的数量阈值,若达到该第二设定阈值,则确定流量信息满足预转码条件。

实际应用中,对未开播前直播间的在线等待人数和系统调度次数获取之后,将获取到的信息与预转码条件进行比对,可以是只将在线等待人数和第一预设阈值进行比较,若满足,则确定该直播间的流量信息满足预转码条件;也可以是只将系统调度次数和第二预设阈值进行比较,若满足,则确定该直播间的流量信息满足预转码条件;还可以是在上述两种情况均满足对应的设定阈值的情况下,才确定该直播间的流量信息满足预转码条件,具体的判断条件可根据实际情况进行确定,本申请在此不作任何限定。

本申请实施例中,流量信息包括在线等待信息,在线等待信息包括在线等待人数和系统调度次数,在等待人数超过第一设定阈值、和/或系统调度次数超过第二设定阈值的情况下,确定流量信息满足预转码条件,之后可以基于确定出的结果进行相应的处理,以使满足预转码条件的流量信息对应的直播间可以在未开播前,创建预转码任务,进而减少开播后带宽的消耗。

本实施例一个可选的实施方式中,流量信息包括直播间的主播属性;在上述步骤204之前,还包括如下具体步骤:

在所述主播属性为所述预转码条件中指定属性的情况下,确定所述流量信息满足所述预转码条件。

流状态服务从主播首页或存储主播属性信息的位置获取该直播间的主播属性,在该主播属性为预转码条件中指定属性的情况下,确定流量信息满足预转码条件。

具体地,主播属性是指表征主播的流量的属性,比如主播属性可以是头部主播,中部主播和底部主播,其中头部主播是指所有主播之中流量占比前20%的主播,中部主播是指流量占比前20%到70%的主播,底部主播是指流量占比后30%的主播,可以确定的是头部主播所占流量较多,也即头部主播在直播时观看的用户较多。指定属性是指预转码条件的一种,比如预转码条件是指头部主播,则若是某直播间对应的主播属于头部主播,则该直播间的流量信息满足预转码条件。

本申请实施例中,流量信息包括主播属性,在主播属性为预转码条件中指定属性的情况下,说明主播的直播间的热度较高,此时可以确定流量信息满足预转码条件,之后可以基于确定出的结果进行相应的处理,以使满足预转码条件的流量信息对应的直播间可以在未开播前,创建预转码任务,进而减少开播后带宽的消耗。

本实施例一个可选的实施方式中,上述步骤204中的创建至少一个预转码任务,包括如下具体步骤:

获取所述直播间的历史码率信息,确定出至少一个码率;

针对每个码率,创建对应的预转码任务。

转码服务获取直播间的历史码率信息,确定出至少一个码率,并针对每个码率,创建对应的预转码任务。

具体地,历史码率信息是指直播间在当前时刻之前进行直播所提供的码率的信息,比如,历史码率信息包括历史码率种类和历史码率大小、还可以包括与历史码率种类和历史码率大小对应的历史直播时间。

示例性地,获取直播间1的历史码率信息为:晚上,4种,历史码率分别为10M、8M、5M、3M;早上,2种,历史码率分别为10M、8M,其中,10M为源流对应的码率,根据当前时刻为晚上,故确定出码率为8M、5M、3M,根据该些码率,针对每个码率,创建对应的3个预转码任务。

本申请实施例中,基于获取到的直播间的历史码率信息,确定出至少一个码率,并针对每个码率,创建对应的预转码任务,使得预转码任务是基于直播间的历史码率信息确定出来的,故确定出来的码率较为准确,进而提高了预转码任务创建的准确性。

本实施例一个可选的实施方式中,在上述步骤204中的创建至少一个预转码任务之后,还包括如下具体步骤:

根据所述至少一个预转码任务,更新候选流状态,其中,所述候选流状态包括至少一个预转码任务对应的至少一路转码流;

在目标用户进入所述直播间的情况下,查询当前候选流状态,并基于所述当前候选流状态,从所述至少一路转码流中确定目标转码流,将所述目标转码流的存储地址分配给所述目标用户,其中,所述目标转码流的存储地址用于所述目标用户拉取并播放所述目标转码流。

流状态服务根据至少一个预转码服务,更新候选流状态,其中,候选流状态包括至少一个预转码任务对应的至少一路转码流;调度服务在目标用户进入直播间的情况下,从流状态服务查询当前候选流状态,并基于当前候选流状态,从至少一路转码流中确定目标转码流,将目标转码流的存储地址分配给目标用户,其中,目标转码流的存储地址用于目标用户拉取并播放目标转码流。

具体地,候选流状态是指包含直播间当前可使用的观看地址对应的直播流标识,通过候选流状态可直观的获知可选取的直播流有哪些,在用户端向调度服务发起调度请求时,调度请求可以携带有想要观看的转码流标识,调度服务根据转码流标识,查找对应的存储地址,并将存储地址分配给对应的用户端。目标转码流是指从预转码任务对应的转码流中确定出来的与用户端对应的转码流,比如,用户端发起的调度请求中携带有高清标识,则调度服务查询当前候选流状态,若当前候选流状态中存在高清转码流,则确定高清转码流为目标转码流。存储地址是指预设的存储转码流的地址,在直播前为用户分配目标转码流以及目标转码流对应的存储地址,在直播开始时,可直接从对应的存储地址处提取目标转码流,即可产生画面。

根据所述至少一个预转码任务,更新候选流状态,具体是,在生成预转码任务之前,候选流状态只有源流,在生成预转码任务之后,将预转码任务对应的转码流,也作为开播后可以用于播放画面的流,故将候选流状态进行更新,也即将预转码任务中对应的转码流添加进候选流状态中,以得到更新后的当前候选流状态,进而在用户进入直播间中,可以从当前候选流状态中确定与各用户对应的目标流状态。

在目标用户进入所述直播间的情况下,查询当前候选流状态,并基于所述当前候选流状态,从所述至少一路转码流中确定目标转码流,将所述目标转码流的存储地址分配给所述目标用户,具体是在用户进入直播间是需要向调度服务请求拉流地址,调度服务接收到该请求后,从当前候选流状态中确定一路转码流作为目标转码流,并将该转码流的地址分配给用户,以使用户在直播开始时,从该分配的地址拉取对应的转码流进行直播的观看。

可选地,在直播间未开播前,用户进入直播间的情况下,查询当前候选流状态,并基于所述当前候选流状态,从所述至少一路转码流中确定目标转码流的方式有很多种,其中,用户进入直播间通常是用户通过用户端向调度服务发起调度请求,调度服务基于调度请求以及当前候选流状态,确定目标转码流。

可选地,基于设定的预转码任务与生成转码流的对应关系不同,可以是一个预转码任务对应一路转码流,也可以是一个预转码任务对应多路转码流,还可以是多个预转码任务对应一路转码流。

本实施例一种可能的实现方式中,可以是用户在进入直播间进行等待时,由用户通过用户端选定一个直播流,并基于该清晰度向调度服务发起调度请求,由调度服务基于调度请求,从当前候选流状态的转码流中确定一个转码流作为目标转码流;另一种可能的实现方式中,可以是用户通过用户端在其他直播间已经选定过直播流A,则在进入当前直播间时,直接基于用户之前选定过的直播流A向调度服务发起调度请求,调度服务基于调度请求中携带的直播流A从当前候选流状态中的转码流进行查询,若有相匹配的则直接确定目标转码流,若没有则选择与之前选定的转码流的码率相近的码率对应的转码流为目标转码流;还有一种可能的实现方式,可以是用户进入直播间后,直接通过用户端向调度服务发起调度请求,调度请求中可以携带有用户端所支持的码率,调度服务根据调度请求以及用户端所支持的码率,为该用户端分配该用户端支持播放的清晰度对应的转码流作为目标转码流。

本申请实施例中,在创建至少一个预转码任务之后,根据至少一个预转码任务,更新候选流状态,在目标用户进入直播间的情况下,查询当前候选流状态,并基于当前候选流状态,从至少一路转码流中确定目标转码流,将目标转码流的存储地址分配给目标用户,后续在直播间开播时,获取的是目标流状态对应的直播画面,实现了在直播间的目标用户在直播间开播时观看的就是转码流对应的直播画面,既节省了带宽的消耗,又避免了为目标用户造成不好的用户体验。

步骤206:在所述直播间开播时,拉取所述直播间的源流,基于所述源流和所述至少一个预转码任务,生成至少一路转码流。

在直播间开播时,主播端会向边缘计算上行推送源流,转码系统可以从边缘计算上行拉取主播推送的源流,并根据源流和至少一个预转码任务,生成至少一路转码流。

实际应用中,拉取直播间的源流,基于源流和至少一个预转码任务,生成至少一路转码流,通常是需要从该直播间的源流对应的存储地址去进行拉取的,并从至少一个预转码任务中确定转码流有哪些,将拉取到的源流通过转码技术转码为至少一个预转码任务中对应的转码流。

直播转码通常是通过充分利用所需转换编码的特征,尽量减少编解码带来的图像质量损失,同时达到时间和资源消耗的平衡,转码具体是先将待转码的源流,解压缩成单帧的图像序列,再将其重新编码为转码流对应的视频数据。

本实施例一个可选的实施方式中,上述步骤206中的基于所述源流和所述至少一个预转码任务,生成至少一路转码流,包括如下具体步骤:

针对第一预转码任务,确定所述第一预转码任务的目标码率,其中,所述第一预转码任务为所述至少一个预转码任务中的任一个;

将所述源流由当前码率转码为所述目标码率,获得所述第一预转码任务对应的转码流。

具体地,目标码率是指第一预转码任务对应的码率,比如,第一预转码任务是转换得到8M码率的转码流,则确定8M为目标码率。当前码率是指直播间中源流对应的码率,比如,源流对应的码率为10M,则确定当前码率为10M。

针对第一预转码任务,确定第一预转码任务的目标码率,将源流有当前码率转换为目标码率,获得第一预转码任务对应的转码流,具体是,针对任一个预转码任务,确定出该预转码任务对应的目标码率,将源流从当前码率通过转码生成与目标码率对应的转码流,依次获得其他预转码任务的目标码率对应的转码流。

示例性地,直播间的源流的码率为10M,预转码任务有2个,第一预转码任务为转换得到8M码率的转码流、第二预转码任务为转换得到5M码率的转码流,将源流从码率10M转码为8M,得到第一转码流,将源流从码率10M转码为5M,得到第二转码流。

本申请实施例中,针对第一预转码任务,确定第一预转码任务的目标码率,并将源流从当前码率转码为目标码率,进而获得与第一预转码任务对应的转码流,通过转码技术,将高码率的源流转码为低码率的转码流,以使直播开始时用户观看的是低码率的转码流提供的直播画面,降低了直播带宽的消耗。

本实施例一个可选的实施方式中,上述步骤206中的在所述直播间开播时,拉取所述直播间的源流,包括如下具体步骤:

在所述直播间开播时,获取源流的存储地址,将所述至少一个预转码任务的拉流地址更新为所述源流的存储地址;

基于所述源流的存储地址,拉取所述源流。

具体地,拉流地址是指拉取直播流的地址,若拉取的直播流为源流,则确定源流的存储地址为拉流地址。

实际应用中,在直播间开播时,主播会推送源流,将源流推送至边缘计算上行,边缘计算上行会将源流和源流的存储地址上报给流状态服务,由流状态服务向转码服务下发源流的存储地址作为拉流地址,转码服务从拉流地址处进行拉流,拉取到源流,进而对源流进行转码。

可选地,在直播间开播前可以是为各预转码任务设定源流的任意一个原始地址作为拉流地址,也可以是为各预转码任务设定该直播间上次直播时源流的存储地址作为拉流地址。在直播间开播时,基于当前推送的源流的存储地址对开播前设定的拉流地址进行更新。

实际应用中,主播在推送源流时,具体推送的地址,可根据实际情况进行确定,在根据预转码任务启动转码时,预转码任务的拉流地址会更新为主播推送源流的推送地址,即源流的存储地址,之后从源流的存储地址进行拉流。

本申请实施例中,在直播间开播时,将获取到的源流的存储地址更新为至少一个预转码任务的拉流地址,并基于该更新后的拉流地址,拉取到源流,以使开播时,各预转码任务对应进行转码是基于当前推送的源流进行转码的,提高了转码的成功率。

本实施例一个可选的实施方式中,在上述步骤206中的生成至少一路转码流之前,还包括如下具体步骤:

接收用户端发起的地址更新请求,其中,所述地址更新请求中携带用户端标识;

查询当前候选流状态,并从所述当前候选流状态包括的各个流中确定更新流;

根据所述用户端标识,将所述更新流的存储地址分配给所述用户端。

调度服务接收用户端发起的地址更新请求,其中地址更新请求中携带用户端标识,从流状态服务中查询当前候选流状态,并从当前候选流状态中包括的各个流中确定更新流,根据用户端标识,将更新流的存储地址分配给用户端。

具体地,地址更新请求可以是转码流更新请求,也即是将当前转码流对应的存储地址进行更新,更新得到其他转码流对应的地址,进而得到其他转码流。更新流是指与更新前的流不同的流,以用于在用户端展示更新流对应的直播画面。用户端标识是指表征用户端的标识,用户端与用户端标识是一一对应的。

可选地,用户端发起地址更新请求的原因有很多种,一种可能的实现方式中,可以是在直播间开播时,用户迟迟未从用户端观看到直播画面,则用户可以在用户端选定其他转码流,进而基于选定的转码流,基于选定的转码流发起地址更新请求;还有一种可能的实现方式中,可以是用户端自行判断出一段时间后还未播放直播画面,则自动触发调度请求,调度请求中可以是携带流状态服务中的任意一个出之前的转码流之外的转码流的存储地址获取需求,用以在用户端播放直播画面。

调度服务查询当前候选流流状态,并从当前候选流状态包括的各个流中确定更新流,具体是,调度服务查询当前候选流状态中的转码流,选定出与原来的流不同的转码流作为更新流。

根据用户端标识,将更新流的存储地址分配给用户端,具体是,用户端发起地址更新请求,在调度服务返回响应时,基于用户端的标识,将相应的更新流的存储地址分配给对应的用户端。

本申请实施例中,接收用户端发起的地址更新请求,并且地址更新请求中携带有用户端标识,通过查询当前候选流状态,从当前候选流状态包括的各个流中确定更新流,根据用户端标识,将更新流的存储地址分配给用户端,使得在用户端发起地址更新请求时,当产生相应的请求反馈时,基于用户端标识,将用户端、地址更新请求、请求反馈通过用户端标识进行对应,提高了地址分配的准确率,进而提高了转码的效率,以使用户端获得对应的转码流的直播画面。

下述结合附图3,以本申请提供的直播转码方法在直播视频的应用为例,对所述直播转码方法进行进一步说明。其中,图3示出了本申请一实施例提供的一种应用于直播视频的直播转码方法的处理流程图,具体包括以下步骤:

步骤302:在直播间开播之前,获取直播间的流量信息。

第一设定阈值为500,第二设定阈值为100次,在开播之前,获取直播间1:在线等待人数为800、系统调度次数为200次;直播间2:在线等待人数为400、系统调度次数为50;直播间3:在线等待人数为200、系统调度次数为30。

步骤304:在流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,至少一个预转码任务用于生成至少一路转码流。

经过判断,确定直播间1的在线等待人数800、系统调度次数200次,分别满足第一设定阈值为500,第二设定阈值为100次,则获取直播间1在历史直播中所使用的码率为8M和5M,则针对8M创建一个预转码任务,针对5M创建一个预转码任务。

步骤306:根据至少一个预转码任务,更新候选流状态,其中,候选流状态包括至少一个预转码任务对应的至少一路转码流;在目标用户进入直播间的情况下,查询当前候选流状态,并基于当前候选流状态,从至少一路转码流中确定目标转码流,将目标转码流的存储地址分配给目标用户,其中,目标转码流的存储地址用于目标用户拉取并播放目标转码流。

参见图4a,图4a示出了本申请一实施例提供的一种直播转码方法中候选流状态显示示意图,源流的码率为10M、(原画),针对8M(超清)和5M(高清)的预转码任务,更新候选流状态为:【原画、超清、高清】,在目标用户A进入直播间,通过图4a示出的候选流状态显示示意图中,选择目标转码流为超清,则将超清对应的存储地址分配给目标用户A。

参见图4b,图4b示出了本申请一实施例提供的一种直播转码方法在直播间开播之前的逻辑框架图。

综合上述步骤302至306,在直播间开播前,存在用户预先进入直播间进行等待,同时也存在部分用户通过点击直播间以此次访问(调度服务被异步记录调度次数),直播间向人数服务上报心跳,流状态服务从人数服务和系统调度次数中获取流量信息,在确定出直播间的流量信息满足预转码条件时(即确定直播间为热流),流状态服务通知转码服务进行转码,也即下发预转码任务,转码服务确定出需要超清和高清的清晰度,转码服务基于上述两个清晰度,向转码集群下发超清和高清2路预转码任务,转码完成之后,转码服务更新流状态服务,流状态更新为【原画、超清、高清】;用户进入直播间,请求观看地址,调度服务向状态流服务询问流状态,获得流状态为【原画、超清、高清】,则会默认调度超清和高清。

步骤308:在直播间开播时,获取源流的存储地址,将至少一个预转码任务的拉流地址更新为源流的存储地址,基于源流的存储地址,拉取源流。

在直播间开播时,主播会将源流推流到边缘计算上行,边缘计算上行会将源流的存储地址推送到转码服务,转码服务将该存储地址更新为各预转码任务对应的拉流地址,并在该更新后的拉流地址处,拉取得到源流。

步骤310:针对第一预转码任务,确定第一预转码任务的目标码率,其中,第一预转码任务为至少一个预转码任务中的任一个;将源流由当前码率转码为目标码率,获得第一预转码任务对应的转码流。

针对8M超清的预转码任务,确定该预转码任务对应的目标码率为8M,则对源流进行转码,将源流从10M转码为8M,获得8M超清的预转码任务对应的转码流;同样针对5M超清的预转码任务,确定该预转码任务对应的目标码率为5M,则对源流进行转码,将源流从10M转码为5M,获得5M高清的预转码任务对应的转码流。

步骤312:为目标用户播放目标转码流对应的直播画面。

参见图4c,图4c示出了本申请一实施例提供的一种直播转码方法在直播间开播时的逻辑框架图。

综合上述步骤308至312,在直播开始时,主播推流源流到边缘计算上行,边缘计算上行接收到源流后,会向流状态服务更新流状态,流状态服务向转码服务下发拉流地址,转码服务给超清和高清下发拉流地址,超清和高清POD获取到拉流地址后,向边缘计算上行拉取源流画面,并进行转码,转码后获得的转码流,并将转码流存储到对应的存储地址,直播间按照分配的存储地址拉取对应的转码流,以使用户在直播间观看到正常直播画面。

应用本申请实施例的方案,在直播间开播之前,获取直播间的流量信息;在流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,至少一个预转码任务用于生成至少一路转码流;在直播间开播时,拉取直播间的源流,基于源流和至少一个预转码任务,生成至少一路转码流。也即在直播间开播之前,若确定该直播间的流量信息满足预转码条件,则为该直播间创建预转码任务,在直播间开播时,可直接基于预转码任务和源流,生成转码流,通过基于直播间开播前流量信息的情况,预先创建预转码任务,在开播时基于预转码任务进行相应的处理,使得在开播后拉取到源流的短时间内,各预转码任务对应的转码流直播画面已生成,并分配到对应的用户端,以使各用户直接观看转码流对应的画面,避免了在开播时才进行是否生成转码流的判断以及转码,减少了带宽的消耗,降低了直播播放的成本。

与上述方法实施例相对应,本申请还提供了直播转码系统实施例,图5示出了本申请一实施例提供的一种直播转码系统的结构示意图。如图4所示,该直播转码系统510包括流状态服务502、转码服务504和调度服务506;

流状态服务502,被配置为在直播间开播之前,获取直播间的流量信息,并确定流量信息是否满足预转码条件;

转码服务504,被配置为在流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,至少一个预转码任务用于生成至少一路转码流;在直播间开播时,拉取直播间的源流,基于源流和至少一个预转码任务,生成至少一路转码流。

可选地,流状态服务502,进一步被配置为根据转码服务504创建的至少一个预转码任务,更新候选流状态,其中,候选流状态包括至少一个预转码任务对应的至少一路转码流;

可选地,调度服务506,被配置为在目标用户进入直播间的情况下,从流状态服务502中查询当前候选流状态,并基于当前候选流状态,从至少一路转码流中确定目标转码流,将目标转码流的存储地址分配给目标用户。

可选地,流量信息包括在线等待信息,在线等待信息包括在线等待人数和系统调度次数;流状态服务502,进一步被配置为在在线等待人数超过第一设定阈值、和/或系统调度次数超过第二设定阈值的情况下,确定流量信息满足预转码条件。

可选地,流量信息包括直播间的主播属性;流状态服务502,进一步被配置为在主播属性为预转码条件中指定属性的情况下,确定流量信息满足预转码条件。

可选地,转码服务504,进一步被配置为获取直播间的历史码率信息,确定出至少一个码率;针对每个码率,创建对应的预转码任务。

可选地,转码服务504,进一步被配置为针对第一预转码任务,确定第一预转码任务的目标码率,其中,第一预转码任务为至少一个预转码任务中的任一个;将源流由当前码率转码为目标码率,获得第一预转码任务对应的转码流。

可选地,转码服务504,进一步被配置为在直播间开播时,获取源流的存储地址,将至少一个预转码任务的拉流地址更新为源流的存储地址;基于源流的存储地址,拉取源流。

可选地,调度服务506,进一步被配置为接收用户端发起的地址更新请求,其中,所述地址更新请求中携带用户端标识;查询当前候选流状态,并从所述当前候选流状态包括的各个流中确定更新流;根据所述用户端标识,将所述更新流的存储地址分配给所述用户端。

应用本申请实施例的方案,在直播间开播之前,获取直播间的流量信息;在流量信息满足预转码条件的情况下,创建至少一个预转码任务,其中,至少一个预转码任务用于生成至少一路转码流;在直播间开播时,拉取直播间的源流,基于源流和至少一个预转码任务,生成至少一路转码流。也即在直播间开播之前,若确定该直播间的流量信息满足预转码条件,则为该直播间创建预转码任务,在直播间开播时,可直接基于预转码任务和源流,生成转码流,通过基于直播间开播前流量信息的情况,预先创建预转码任务,在开播时基于预转码任务进行相应的处理,使得在开播后拉取到源流的短时间内,各预转码任务对应的转码流直播画面已生成,并分配到对应的用户端,以使各用户直接观看转码流对应的画面,避免了在开播时才进行是否生成转码流的判断以及转码,减少了带宽的消耗,降低了直播播放的成本。

上述为本实施例的一种直播转码系统的示意性方案。需要说明的是,该直播转码系统的技术方案与上述的直播转码方法的技术方案属于同一构思,直播转码系统的技术方案未详细描述的细节内容,均可以参见上述直播转码方法的技术方案的描述。

图6示出了根据本申请一实施例提供的一种计算设备的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。

计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,NetworkInterface Controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。

在本申请的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。

其中,处理器620执行所述计算机指令时实现所述直播转码方法的步骤。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的直播转码方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述直播转码方法技术方案的描述。

本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述直播转码方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的直播转码方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述直播转码方法的技术方案的描述。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

技术分类

06120115926284