推送流媒体数据的方法、系统和服务器与流程

文档序号:19150424发布日期:2019-11-16 00:01阅读:373来源:国知局
推送流媒体数据的方法、系统和服务器与流程

本发明涉及互联网技术领域,特别涉及一种推送流媒体数据的方法、系统和服务器。



背景技术:

随着网络直播业务的快速发展,直播观众对于直播实时性和流畅性等要求也在不断提高。为了提升直播观众的观看体验,可以通过cdn(contentdeliverynetwork,内容分发网络)技术对直播业务进行加速。现有的cdn直播加速服务主要采用主动推送的服务模式,少数采用被动推送的服务模式。

在主动推送的服务模式下,推流服务器接收推流器推送的流媒体数据后,可以主动将流媒体数据转推至源服务器。这样,拉流服务器在接收到播放器发送的该流媒体数据的观看请求后,可以向cdn源服务器发送拉流请求,并从cdn源服务器处直接获取到该流媒体数据,然后将该流媒体数据反馈给直播观众的播放器。在被动推送的服务模式下,推流服务器接收推流器推送的流媒体数据后,不主动向cdn源服务器推送流媒体数据,只有在cdn源服务器接收到该流媒体数据对应的拉流请求,并通知推流服务器可以推送该流媒体数据之后,推流服务器才向cdn源服务器推送该流媒体数据。之后,拉流服务器才可以从cdn源服务器处获取到该流媒体数据,并将该流媒体数据反馈给直播观众的播放器。

本专利申请的发明人,通过研究现有的cdn直播加速的过程,发现现有技术至少存在以下问题:cdn直播加速服务采用主动推送的服务模式时,推流服务器将所有流媒体数据均主动推送至cdn源服务器,耗费大量带宽资源。cdn直播加速服务采用被动推送的服务模式时,直播观众的播放器首屏加载时间较长,直播观众体验不佳,直播加速服务的质量低下。



技术实现要素:

本申请的目的在于提供一种推送流媒体数据的方法、系统和服务器,以解决现有技术存在的部分或全部问题。所述技术方案如下:

第一方面,提供了一种推送流媒体数据的方法,所述方法包括:

推流服务器接收推流器发送的推流请求,并基于所述推流请求向源服务器发送数据转推请求;

所述推流服务器对所述推流请求进行解析,判断是否主动推送所述推流请求对应的流媒体数据;

若判断结果为主动推送,或接收到所述源服务器对所述数据转推请求反馈的推送确认消息,所述推流服务器则向所述源服务器推送所述流媒体数据。

为实现上述目的,本实施例可以针对热流主动推送,针对冷流被动推送。这样,一方面保证了热流观众的观看体验,另一方面可以节约推送无人观看的冷流所消耗的带宽资源。

可选的,所述推流服务器对所述推流请求进行解析,判断是否主动推送所述推流请求对应的流媒体数据,包括:

所述推流服务器解析所述推流请求,获取所述推流请求的域名、频道名和流名称;

若所述推流服务器查询到,在第一预设时间内所述域名对应的过往流媒体数据的访问比例超过预设比例,或在第二预设时间内所述频道名对应的过往流媒体数据的首包访问平均时间差低于预设时间差,或在第三预设时间内所述流名称对应的过往流媒体数据的访问次数超过预设次数,则判断结果为主动推送。

为实现上述目的,本实施例中的推流服务器可以根据推流请求常规携带的相关参数,结合过往访问数据来预测热流。进而主动推送热流,保证观众体验。

可选的,所述推流服务器对所述推流请求进行解析,判断是否主动推送所述推流请求对应的流媒体数据,包括:

所述推流服务器解析所述推流请求,获取所述推流请求的自定义标识;

若所述自定义标识表示主动推送所述流媒体数据,则判断结果为主动推送。

为实现上述目的,本实施例中的推流服务器可以根据推流请求携带的由推流器自定义的相关参数来识别热流。进而主动推送热流,保证观众体验。

可选的,所述方法还包括:

若检测到与所述源服务器之间建立的数据转推连接断开,所述推流服务器则重新向所述源服务器发送所述数据转推请求。

为实现上述目的,本实施例中的推流服务器在检测到数据转推连接因故断开之后,可以重新发起数据转推请求,进而继续推送与该数据转推连接对应的具有推送需求的流媒体数据,进一步保证观众体验。

第二方面,提供了一种推送流媒体数据的方法,所述方法包括:

源服务器接收推流服务器发送的数据转推请求;

当检测到所述数据转推请求对应的流媒体数据的实时拉流连接数大于零时,所述源服务器向所述推流服务器反馈所述流媒体数据的推送确认消息;

所述源服务器接收并维护所述推流服务器推送的所述流媒体数据,其中,所述流媒体数据由所述推流服务器主动推送或在接收到所述推送确认消息后推送。

为实现上述目的,本实施例中的源服务器检测到实时拉流连接数大于零时才向推流服务器反馈推送确认消息。同时,源服务器也可以接收推流服务器主动推送的流媒体数据。这样,可以既节约带宽资源,又保证观众体验。

可选的,所述方法还包括:

所述源服务器在接收所述流媒体数据的过程中,当检测到所述实时拉流连接数持续为零的时间达到预设中断时间时,所述源服务器断开与所述推流服务器之间的所述数据转推连接或向所述推流服务器发送推送暂停消息。

为实现上述目的,本实施例中的源服务器可以对所有流媒体数据的实时拉流连接数进行检测。当确定某条流媒体数据在直播中途所有观众离开达到一定时间时,可以使推流服务器暂停推流任务。这样,可以进一步节约带宽资源。

可选的,所述方法还包括:

所述源服务器在接收由所述推流服务器在接收到所述推送确认消息后推送的流媒体数据的过程中,当检测到所述实时拉流连接数持续为零的时间达到预设中断时间时,所述源服务器断开与所述推流服务器之间的所述数据转推连接或向所述推流服务器发送推送暂停消息。

为实现上述目的,本实施例中的源服务器可以仅对冷流实时拉流连接数进行检测。当确定某条冷流在直播中途所有观众离开达到一定时间时,可以使推流服务器暂停推流任务。这样,可以进一步节约带宽资源以及保证热流的观众体验。

第三方面,提供了一种推送流媒体数据的系统,所述系统包括推流服务器和源服务器,所述推流服务器用于:

接收推流器发送的推流请求,并基于所述推流请求向源服务器发送数据转推请求;

对所述推流请求进行解析,判断是否主动推送所述推流请求对应的流媒体数据;

若判断结果为主动推送,或接收到所述源服务器对所述数据转推请求反馈的推送确认消息,则向所述源服务器推送所述流媒体数据。

可选的,所述推流服务器具体用于:

解析所述推流请求,获取所述推流请求的域名、频道名和流名称;

若所述推流服务器查询到,在第一预设时间内所述域名对应的过往流媒体数据的访问比例超过预设比例,或在第二预设时间内所述频道名对应的过往流媒体数据的首包访问平均时间差低于预设时间差,或在第三预设时间内所述流名称对应的过往流媒体数据的访问次数超过预设次数,则判断结果为主动推送。

可选的,所述推流服务器具体用于:

解析所述推流请求,获取所述推流请求的自定义标识;

若所述自定义标识表示主动推送所述流媒体数据,则判断结果为主动推送。

可选的,所述推流服务器还用于:

若检测到与所述源服务器之间建立的数据转推连接断开,则重新向所述源服务器发送所述数据转推请求。

可选的,所述源服务器用于:

接收推流服务器发送的数据转推请求;

当检测到所述推流请求对应的流媒体数据的实时拉流连接数大于零时,向所述推流服务器反馈所述推送确认消息;

所述源服务器接收并维护所述推流服务器推送的所述流媒体数据,其中,所述流媒体数据由所述推流服务器主动推送或在接收到所述推送确认消息后推送。

可选的,所述源服务器还用于:

在接收所述流媒体数据的过程中,当检测到所述实时拉流连接数持续为零的时间达到预设中断时间时,断开与所述推流服务器之间的所述数据转推连接或向所述推流服务器发送推送暂停消息。

可选的,所述源服务器还用于:

在接收由所述推流服务器在接收到所述推送确认消息后推送的流媒体数据的过程中,当检测到所述实时拉流连接数持续为零的时间达到预设中断时间时,断开与所述推流服务器之间的所述数据转推连接或向所述推流服务器发送推送暂停消息。

第四方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行,以实现如第一方面所述的方法中推流服务器的处理,或者实现如第二方面所述的方法中源服务器的处理。

第五方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行,以实现如第一方面所述的方法中推流服务器的处理,或者实现如第二方面所述的方法中源服务器的处理。

由上可见,本发明实施例提供的技术方案带来的有益效果是:

第一,推流服务器通过解析推流请求来预测推流请求对应的流媒体数据是否为热流,针对热流将主动推送,针对冷流将根据源服务器下发的推送确认消息被动推送。这样,一方面可以保证热流的直播观众的首屏加载时间较低,确保直播观众体验良好,另一方面可以避免主动推送冷流消耗不必要的带宽资源。第二,源服务器在接收流媒体数据的过程中,可以定时检测该流媒体数据的实时拉流连接数是否为零,当实时拉流请求数持续为零超过一定时间,源服务器将主动断开该流媒体数据对应的推流连接或者指示推送该流媒体数据的推流服务器暂停推送该流媒体数据。这样,在推流过程中无人观看时,可以节省消耗带宽资源。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种推送流媒体数据的系统的结构示意图;

图2为本发明实施例提供的一种推送流媒体数据的方法的流程图;

图3为本发明实施例提供的一种以推流服务器为主体的推送流媒体数据的方法的流程图;

图4为本发明实施例提供的一种以源服务器为主体的推送流媒体数据的方法的流程图;

图5为本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种推送流媒体数据的方法、系统和服务器。参阅图1,本发明实施例提供的推送流媒体数据的系统可以是能够提供直播加速服务的cdn系统,该cdn系统包括推流服务器和源服务器,推流服务器可以是cdn系统中与推流器进行通信的任意边缘节点服务器。在本发明实施例提供的推送流媒体数据的方法中,推流服务器可以解析推流器发来的推流请求,判断是否主动向源服务器推送该推流请求对应的流媒体数据。若判断结果是主动推送,或者接收到源服务器下发的推送确认消息时,推流服务器则可以立即将推流器发来的流媒体数据推送至源服务器。若判断结果是不主动推送,且未收到源服务器下发的推送确认消息,推流服务器则不会向源服务器推送相应的流媒体数据。上述推流服务器和源服务器均可以包括处理器、存储器和收发器,处理器可以用于进行下述流程中推送流媒体数据的相关处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。

下面将结合具体实施方式,对本发明实施例提供的一种推送流媒体数据的方法进行详细的说明。为了便于理解,请结合参考图2、图3及图4。其中,图3中各项判断条件的先后关系仅为本发明的一个较佳实施例,并不用于限制本发明。

s201,推流服务器接收推流器发送的推流请求,并向源服务器发送数据转推请求。

在实施中,当主播发起直播时,cdn系统可以按照预设的负载均衡策略(例如就近)选择一个边缘节点服务器作为推流服务器来接收主播的推流器(例如手机或电脑等终端设备)发送的推流请求。当推流服务器接收到推流请求时,可以对推流请求进行解析,获取推流相关参数,并将推流相关参数封装在数据转推请求中发送至源服务器。其中,推流器向推流服务器发送的推流请求可以采用rtmp(realtimemessagingprotocol,实时消息传输协议)进行传输,也可以采用其他流媒体传输协议进行传输;推流服务器向源服务器发送的数据转推请求可以采用http(hypertexttransferprotocol,超文本传输协议)进行传输,也可以采用其他网络传输协议进行传输,本发明对此不作限制。

s202,源服务器接收推流服务器发送的数据转推请求。

在实施中,与推流服务器关联的源服务器可以接收推流服务器发送的数据转推请求,并与源服务器建立数据转推连接。

s203,推流服务器对推流请求进行解析,判断是否主动推送推流请求对应的流媒体数据。

在实施中,推流服务器对推流请求进行解析的过程中,可以对推流请求的相关参数进行分析,根据分析结果判断是否主动向源服务器推送该推流请求对应的流媒体数据。可以理解,如果判断结果为主动推送,推流服务器可以立即将推流器发来的流媒体数据转推给源服务器,如果判断结果为不主动推送,推流服务器将暂时不会向源服务器推送该推流请求对应的流媒体数据。其中,推流请求和流媒体数据之间可以通过流名称参数一一对应。

可选的,推流请求的相关参数通常可以包括域名参数(domain)、频道名参数(publish)和流名称参数(stream)。相应的,步骤203可以包括以下处理:推流服务器解析推流请求,获取推流请求的域名、频道名和流名称;若推流服务器查询到,在第一预设时间内域名对应的过往流媒体数据的访问比例超过预设比例,或在第二预设时间内频道名对应的过往流媒体数据的首包访问平均时间差低于预设时间差,或在第三预设时间内流名称对应的过往流媒体数据的访问次数超过预设次数,则判断结果为主动推送。

在实施中,为了将热流主动推送至源服务器,可以先预测推流请求对应的流媒体数据是否为热流。此时,推流服务器可以根据推流请求的相关参数对应的过往访问数据对流媒体数据进行预测。其中,过往访问数据是相对于当前时刻而言的,在当前时刻以前出现过的流媒体数据均为过往流媒体数据,过往流媒体数据的访问数据可称作过往访问数据。与域名对应的过往访问数据可以是在第一预设时间内该域名下的过往流媒体数据总数以及该域名下具有直播观众的过往流媒体数据的数目。可以理解,如果在第一预设时间内,某个域名下具有直播观众的过往流媒体数据的数目与过往流媒体数据总数的比(可称作访问比例)超过预设比例,说明该域名下的过往流媒体数据吸引到观众的概率较大,该域名下的流媒体数据在一定程度上可以看作热流。与频道名对应的过往访问数据可以是在第二预设时间内该频道名下的每条过往流媒体数据从发起直播到有直播观众观看的时间差(可称作首包访问时间差,firstaccesstime)。可以理解,如果在第二预设时间内,某个频道名下所有过往流媒体数据的首包访问时间差的平均值(可称作首包访问平均时间差,avg(firstaccesstime))低于预设时间差,说明该频道名下的过往流媒体数据通常可以迅速吸引到观众,该频道名下的流媒体数据在一定程度上可以看作热流。与流名称对应的过往访问数据可以是在第三预设时间内与该流名称相同的的过往流媒体数据的访问次数。可以理解,如果在第三预设时间内,与当前的推流请求的流名称相同的过往流媒体数据的访问次数超过预设次数,说明该过往流媒体数据在一定程度上是受欢迎的,该推流请求对应的流媒体数据也可以看作热流。基于上述分析,推流服务器可以对热流与冷流进行较为准确的预测。之后,推流服务器可以主动将热流转推至源服务器。其中,一个域名可以对应多个频道名,一个频道名可以对应多个流名称。

值得一提的是,第一预设时间、第二预设时间和第三预设时间分别为从当前时刻到过去某个时刻的时间差,它们的取值可以相同也可以不同。预设比例、预设时间差以及预设次数反映了对热流和冷流的划分标准。例如,第一预设时间和第二预设时间均可以设置为1小时,第三预设时间可以设置为1分钟,预设比例可以设置为90%,预设时间差可以设置为5秒,预设次数可以设置为100。以上数值仅为本发明的一个较佳实施例,并不用于限制本发明。

可选的,推流服务器还可以将具有立即推送需求的流媒体数据主动推送至源服务器。相应的,步骤203可以包括以下处理:推流服务器解析推流请求,获取推流请求的自定义标识;若自定义标识表示主动推送流媒体数据,则判断结果为主动推送。

在实施中,某些特殊流媒体数据(例如知名主播、重要赛事和节目对应的流媒体数据)可以被直接认定为热流,需要立即推送。因此,推流器发送至推流服务器的推流请求中可以携带有表示主动推送的自定义标识。这样,推流服务器可以通过解析推流请求的自定义标识来判断是否主动向源服务器推送流媒体数据。例如,自定义标识可以用push(推送)参数表示,当推流服务器解析出推流请求的push参数的值为true(真)时,该推流请求对应的流媒体数据需要立即推送,则推流服务器对该推流请求对应的流媒体数据的判断结果为主动推送。

s204,当检测到数据转推请求对应的流媒体数据的实时拉流连接数大于零时,源服务器向推流服务器反馈流媒体数据的推送确认消息。

在实施中,当直播观众请求观看直播时,cdn系统可以按照预设的负载均衡策略(例如就近)选择一个边缘节点服务器作为拉流服务器来接收直播观众的播放器发送的播放请求。当任意拉流服务器接收到播放请求时,可以解析该播放请求指向的流媒体数据,并向源服务器发送该流媒体数据的拉流请求,与源服务器建立与该流媒体数据对应的拉流连接。源服务器接收到推流服务器发送的数据转推请求之后,可以立即检测与该数据转推连接对应的流媒体数据在当前时刻的拉流连接的数量(可称作实时拉流连接数),若实时拉流连接数为零,说明该流媒体数据当前没有直播观众。之后,源服务器可以继续定时检测(例如,每隔30秒检测一次)该流媒体数据的实时拉流连接数。当检测到该流媒体数据的实时拉流连接数大于零时,源服务器则向推送该流媒体数据的推流服务器发送该流媒体数据对应的推送确认消息,以使推流服务器向源服务器推送相应的流媒体数据。其中,拉流请求和流媒体数据之间可以通过流名称参数一一对应。

需要说明的是,当拉流服务器接收到的来自不同播放器的多条播放请求均指向同一流媒体数据时,拉流服务器可以仅向源服务器发送一条拉流请求。之后,拉流服务器可以将获取到的流媒体数据提供给该拉流服务器所管辖的区域内的所有向其请求该流媒体数据的播放器。

值得一提的是,步骤203的执行主体为推流服务器,步骤204的执行主体为源服务器,步骤203与步骤204在图2中的先后顺序仅便于描述推流服务器与源服务器之间的交互,并不用于限制步骤203的处理与步骤204的处理之间的时间先后顺序。

s205,若判断结果为主动推送,或接收到源服务器对数据转推请求反馈的推送确认消息,推流服务器则向源服务器推送流媒体数据。

在实施中,推流服务器除了在对推流请求对应的流媒体数据的判断结果为主动推送时,立即将流媒体数据推送至源服务器之外,还可以在接收到源服务器下发的推送确认消息时,立即将流媒体数据推送至源服务器。当推流服务器接收到推送确认消息时,说明有直播观众请求观看该推送确认消息对应的流媒体数据,因此,该推送确认消息对应的流媒体数据需要立即推送。可以理解,如果某条推流请求对应的流媒体数据的判断结果为不主动推送,并且推流服务器未接收到相应的推送确认消息时,推流服务器不会将该流媒体数据推送至源服务器,这样,可以节省推流服务器向源服务器推送流媒体数据消耗的带宽资源。其中,推送确认消息可以是响应码为100continue的响应消息。

s206,源服务器接收并维护推流服务器推送的流媒体数据。

在实施中,推流服务器向源服务器推送流媒体数据后,源服务器可以接收该流媒体数据,并将该流媒体数据提供给向其请求该流媒体数据的所有拉流服务器。

可选的,推流服务器向源服务器发送流媒体数据的过程中,可能存在该流媒体数据的全部直播观众陆续退出或同时退出观看的情况。为了节省带宽资源,本发明中推送流媒体数据的方法还可以包括以下处理:源服务器在接收流媒体数据的过程中,当检测到实时拉流连接数持续为零的时间达到预设中断时间时,源服务器断开与推流服务器之间的数据转推连接或向推流服务器发送推送暂停消息。

在实施中,针对某条流媒体数据,如果每个拉流服务器对应直播观众均退出播放,所有拉流服务器与源服务器之间建立的该流媒体数据对应的拉流连接将全部断开。此时,该流媒体数据对应的实时拉流连接数为零。为了及时判断该流媒体数据的直播观众是否全部退出观看,源服务器在接收流媒体数据的过程中,可以定时检测该流媒体数据对应的实时拉流连接数。当检测到该流媒体数据对应的实时拉流请求数由大于零降为零时,源服务器可以开始计时。当该流媒体数据的实时拉流连接数持续为零的时间达到预设中断时间(例如2分钟)时,源服务器则可以断开与推流服务器之间建立的该流媒体数据对应的数据转推连接。这样,推流服务器则暂时无法向源服务器发送该流媒体数据。或者,当该流媒体数据的实时拉流连接数持续为零的时间达到预设中断时间时,源服务器可以向推流服务器发送该流媒体数据对应的推送暂停消息。这样,推流服务器则可以基于该推送暂停消息暂停向源服务器发送该推送暂停消息对应的流媒体数据。

值得一提的是,本发明的源服务器在接收流媒体数据的过程中,并非一旦检测到该流媒体数据的实时拉流连接数为零时立即断开相应的数据转推连接,而是实时拉流连接数持续为零的时间达到预设中断时间才断开相应的数据转推连接。这样,当出现源服务器与拉流服务器之间的通信网络突然发生异常又及时恢复的情况时,可以避免实时拉流连接数短暂为零时被误认为没有直播观众而断开相应的数据转推连接。进而在节省带宽资源的同时,保证直播观众的体验。

可选的,针对热流,推流服务器向源服务器发送流媒体数据的过程中,直播观众全部退出的情况极少发生。为了节省推流服务器向源服务器推送流媒体数据消耗的带宽资源,并且节省源服务器检测实时拉流连接数所消耗的服务器资源,可以仅对冷流的实时拉流连接数进行定时检测。相应的处理可以如下:源服务器在接收由推流服务器在接收到推送确认消息后推送的流媒体数据的过程中,当检测到实时拉流连接数持续为零的时间达到预设中断时间时,源服务器断开与推流服务器之间的数据转推连接或向推流服务器发送推送暂停消息。

在实施中,源服务器可以利用接收到流媒体数据的时间以及向推流服务器反馈推送确认消息的时间来区分热流和冷流。具体而言:如果源服务器在向推流服务器反馈某条流媒体数据对应的推送确认消息之前接收到该流媒体数据,则可以认为该流媒体数据是推流服务器主动推送的热流;如果源服务器在向推流服务器反馈某条流媒体数据对应的推送确认消息之后接收到该流媒体数据,则可以认为该流媒体数据是冷流。针对冷流,当实时拉流连接数持续为零的时间达到预设中断时间(例如2分钟)时,源服务器则可以断开与推流服务器之间建立的的该流媒体数据对应的数据转推连接或向推流服务器发送该流媒体数据对应的推送暂停消息。

值得一提的是,在某个主播发起直播后,对应的流媒体数据可能始终没有直播观众,针对这样的冷流,可以不必长时间维持当前推流服务器与源服务器之间建立的与该流媒体数据对应的数据转推连接。这样,可以在推流服务器上设置第一超时时间来维持连接。如果该推流服务器判断出不主动推送该流媒体数据,并且在第一超时时间内未接收到源服务器下发的与该流媒体数据对应的推送确认消息,该推流服务器则可以断开与源服务器之间建立的与该流媒体数据对应的数据转推连接。当然,断开数据转推连接的处理也可以由源服务器来执行。具体而言:可以在源服务器上设置第二超时时间来维持连接。如果源服务器在第二超时时间内未接收到推流服务器主动推送的该流媒体数据,也未向推流服务器反馈该流媒体数据对应的推送确认消息,源服务器则可以断开与该流媒体数据对应的数据转推连接。其中,在推流服务器上设置的第一超时时间的起算时刻可以是推流服务器向源服务器发出数据转推请求时,在源服务器上设置的第二超时时间的起算时刻可以是源服务器接收到数据转推请求时,第一超时时间与第二超时时间均可以记作connect_timeout,并且二者的取值可以相同。

可选的,为了在数据转推连接断开之后能够继续推送与该数据转推连接对应的具有推送需求的流媒体数据,源服务器与推流服务器之间的数据转推连接断开之后的处理可以如下:若检测到与源服务器之间建立的数据转推连接断开,推流服务器则重新向源服务器发送数据转推请求。

在实施中,源服务器与推流服务器之间的数据转推连接可能被源服务器与推流服务器任意一方主动断开,也可能因为源服务器处于异常状态或忙碌状态导致源服务器与推流服务器之间无法正常通信而断开。当推流服务器检测到与源服务器之间建立的数据转推连接断开时,可以立即或者间隔预设的重连时间重新向源服务器发送数据转推请求,并重新执行步骤202至206的相关处理。这样,当该流媒体数据具有推送需求时,该流媒体数据对应的推流服务器可以继续向源服务器推送该流媒体数据。

相较于现有技术,本发明实施例可以带来以下有益效果:第一,推流服务器通过解析推流请求来预测每条推流请求对应的流媒体数据是否为热流,针对热流将主动推送,针对冷流将根据源服务器下发的推送确认消息被动推送。这样,一方面可以保证主动推送热流,确保直播观众的首屏加载时间较低,直播观众体验良好,另一方面可以避免主动推送冷流消耗不必要的带宽资源。第二,源服务器在接收流媒体数据的过程中,可以定时检测该流媒体数据的实时拉流连接数是否为零,当实时拉流请求数持续为零超过一定时间,源服务器将主动断开该流媒体数据对应的推流连接或者指示推送该流媒体数据的推流服务器暂停推送该流媒体数据。这样,在推流过程中无人观看时,可以节省带宽资源。

基于相同的技术构思,本发明实施例还提供了一种推送流媒体数据的系统,所述系统包括推流服务器和源服务器,所述推流服务器用于:

接收推流器发送的推流请求,并基于所述推流请求向源服务器发送数据转推请求;

对所述推流请求进行解析,判断是否主动推送所述推流请求对应的流媒体数据;

若判断结果为主动推送,或接收到所述源服务器对所述数据转推请求反馈的推送确认消息,则向所述源服务器推送所述流媒体数据。

可选的,所述推流服务器具体用于:

解析所述推流请求,获取所述推流请求的域名、频道名和流名称;

若所述推流服务器查询到,在第一预设时间内所述域名对应的过往流媒体数据的访问比例超过预设比例,或在第二预设时间内所述频道名对应的过往流媒体数据的首包访问平均时间差低于预设时间差,或在第三预设时间内所述流名称对应的过往流媒体数据的访问次数超过预设次数,则判断结果为主动推送。

可选的,所述推流服务器具体用于:

解析所述推流请求,获取所述推流请求的自定义标识;

若所述自定义标识表示主动推送所述流媒体数据,则判断结果为主动推送。

可选的,所述推流服务器还用于:

若检测到与所述源服务器之间建立的数据转推连接断开,则重新向所述源服务器发送所述数据转推请求。

可选的,所述源服务器用于:

接收推流服务器发送的数据转推请求;

当检测到所述推流请求对应的流媒体数据的实时拉流连接数大于零时,向所述推流服务器反馈所述推送确认消息;

所述源服务器接收并维护所述推流服务器推送的所述流媒体数据,其中,所述流媒体数据由所述推流服务器主动推送或在接收到所述推送确认消息后推送。

可选的,所述源服务器还用于:

在接收所述流媒体数据的过程中,当检测到所述实时拉流连接数持续为零的时间达到预设中断时间时,断开与所述推流服务器之间的所述数据转推连接或向所述推流服务器发送推送暂停消息。

可选的,所述源服务器还用于:

在接收由所述推流服务器在接收到所述推送确认消息后推送的流媒体数据的过程中,当检测到所述实时拉流连接数持续为零的时间达到预设中断时间时,断开与所述推流服务器之间的所述数据转推连接或向所述推流服务器发送推送暂停消息。

相较于现有技术,本发明实施例可以带来以下有益效果:第一,推流服务器通过解析推流请求来预测每条推流请求对应的流媒体数据是否为热流,针对热流将主动推送,针对冷流将根据源服务器下发的推送确认消息被动推送。这样,一方面可以保证主动推送热流,确保直播观众的首屏加载时间较低,直播观众体验良好,另一方面可以避免主动推送冷流消耗不必要的带宽资源。第二,源服务器在接收流媒体数据的过程中,可以定时检测该流媒体数据的实时拉流连接数是否为零,当实时拉流请求数持续为零超过一定时间,源服务器将主动断开该流媒体数据对应的推流连接或者指示推送该流媒体数据的推流服务器暂停推送该流媒体数据。这样,在推流过程中无人观看时,可以节省带宽资源。

图5是本发明实施例提供的一种服务器的结构示意图。该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个以上中央处理器522(例如,一个以上处理器)和存储器532,一个以上存储应用程序542或数据544的存储介质530(例如一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个以上模块(图示没标出),每个模块可以包括对文本标注设备500中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。

服务器500还可以包括一个以上电源529,一个以上有线或无线网络接口550,一个以上输入输出接口558,一个以上键盘556,和/或,一个以上操作系统441,例如windowsserver,macosx,unix,linux,freebsd等等。

服务器500可以包括有存储器,以及一个以上的程序,其中一个以上程序存储于存储器中,且经配置以由一个以上处理器执行所述一个以上程序包含用于进行上述推送流媒体数据的指令。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1