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

流媒体内容传输、直播及拉取方法

文献发布时间:2023-06-19 16:08:01



技术领域

本公开涉及计算机技术领域,尤其涉及流媒体传输技术领域,具体涉及一种流媒体内容传输、直播及拉取方法、装置、电子设备、计算机可读存储介质和计算机程序产品。

背景技术

在流媒体直播过程中,直播用户将直播过程中的音视频数据作为一个稳定和连续的流,推送到服务端,以实现推流;观看直播的用户通过从服务端拉取包含音视频数据的流进行播放,以实现拉流。

在拉流过程中,服务端在接收到观看直播的用户的拉流指令时,为用户分发拉流地址,以使用户从边缘服务器拉取音视频数据。

在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。

发明内容

本公开提供了一种流媒体内容传输、直播及拉取方法、装置、电子设备、计算机可读存储介质和计算机程序产品。

根据本公开的一方面,提供了一种流媒体内容传输方法,包括:接收第一用户的拉取指令,并且接收直播用户的开启公网服务指令,其中,所述拉取指令指示所述第一用户拉取所述直播用户流媒体内容,所述开启公网服务指令指示所述直播用户允许所述第一用户基于所述直播用户的公网服务地址进行访问;响应于确定直播用户开启公网服务并且接收到来自第一用户的拉取指令响应于所述开启公网服务指令和所述拉取指令,获得所述直播用户的公网服务地址;以及向所述第一用户下发至少一个拉流地址,以使所述第一用户基于所述至少一个拉流地址中的一项进行访问,以获得所述流媒体内容,其中,所述至少一个拉流地址包括所述公网服务地址。

根据本公开的另一方面,还提供一种流媒体内容直播方法,包括:发送开启公网服务指令,以使所述服务端响应于所述开启公网服务指令获得公网服务地址并且向拉取流媒体内容的第一用户下发至少一个拉流地址,所述至少一个拉流地址包括所述公网服务地址,其中,所述开启公网服务指令指示允许所述第一用户基于所述公网服务地址进行访问。

根据本公开的另一方面,还提供一种流媒体内容拉取方法,包括:向服务端发送拉取指令,以拉取直播用户的流媒体内容;响应于接收到由所述服务端发送的至少一个拉流地址,从所述至少一个拉流地址中获取第一拉流地址,其中,所述至少一个拉流地址包括所述直播用户的公网服务地址,基于所述公网服务地址能够访问所述直播用户;以及基于所述第一拉流地址进行访问,以获得所述流媒体内容。

根据本公开的另一方面,还提供一种流媒体内容推送装置,包括:接收单元,被配置用于接收第一用户的拉取指令,并且接收直播用户的开启公网服务指令,其中,所述拉取指令指示所述第一用户拉取所述直播用户流媒体内容,所述开启公网服务指令指示所述直播用户允许所述第一用户基于所述直播用户的公网服务地址进行访问;获取单元,被配置用于响应于所述开启公网服务指令和所述拉取指令,获得所述公网服务地址;以及分发单元,被配置用于向所述第一用户下发至少一个拉流地址,以使所述第一用户基于所述至少一个拉流地址中的一项进行访问,以获得所述流媒体内容,其中,所述至少一个拉流地址包括所述公网服务地址。

根据本公开的另一方面,还提供一种流媒体内容直播装置,包括:启动单元,被配置用于发送开启公网服务指令,以使所述服务端响应于所述开启公网服务指令获得公网服务地址并且向拉取流媒体内容的第一用户下发至少一个拉流地址,所述至少一个拉流地址包括所述公网服务地址,其中,所述开启公网服务指令指示允许所述第一用户基于所述公网服务地址进行访问。

根据本公开的另一方面,还提供一种流媒体内容拉取装置,包括:指令发送单元,被配置用于向服务端发送拉取指令,以拉取直播用户的流媒体内容;地址获取单元,被配置用于响应于接收到由所述服务端发送的至少一个拉流地址,从所述至少一个拉流地址中获取第一拉流地址,其中,所述至少一个拉流地址包括所述直播用户的公网服务地址,基于所述公网服务地址能够访问所述直播用户;以及访问单元,被配置用于基于所述第一拉流地址进行访问,以获得所述流媒体内容。

根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据上述的方法。

根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据上述的方法。

根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据上述的方法。

根据本公开的一个或多个实施例,通过将直播用户的公网服务地址包含在至少一个拉流地址中下发给拉取所述直播用户的流媒体内容的用户,使用户可以基于公网服务地址访问直播用户,而拉取直播用户的流媒体内容,可以减少CDN带宽,进而减少直播成本。同时,由于流媒体内容直接从直播用户传输到拉取该流媒体内容的用户,相较于流媒体内容从直播用户传输到服务器,再从边缘服务器传输到拉取该流媒体内容的用户,缩短了流媒体内容传输的链路,可以减少延迟,并且可以减少因为网络抖动带来的直播抖动的问题。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。

图1示出了根据本公开的实施例的流媒体内容传输方法的流程图;

图2示出了根据本公开的实施例的流媒体内容传输方法中获得所述直播用户的公网服务地址的过程的流程图;

图3示出了根据本公开的实施例的流媒体内容传输方法中向第一用户下发至少一个拉流地址的过程的流程图;

图4示出了根据本公开的实施例的流媒体内容传输方法中获得第一检测结果的过程的流程图;

图5示出了根据本公开的实施例的流媒体内容传输方法中基于距离获得第一检测结果的过程的流程图;

图6示出了根据本公开的实施例的流媒体内容直播方法的流程图;

图7示出了根据本公开的实施例的流媒体内容直播方法的流程图;

图8示出了根据本公开的实施例的流媒体内容直播方法的流程图;

图9示出了根据本公开的实施例的流媒体内容拉取方法的流程图;

图10示出了根据本公开的实施例的流媒体内容传输、直播、拉取方法中,服务端、直播用户和拉取流媒体的用户之间的数据交互过程的示意图;

图11示出了根据本公开的实施例的流媒体内容传输装置的示意性框图;

图12示出了根据本公开的实施例的流媒体内容直播装置的示意性框图;

图13示出了根据本公开的实施例的流媒体内容拉取装置的示意性框图;以及

图14示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。

在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。

在相关技术中,直播用户通过将直播过程中的流媒体内容推送到服务端,当观看直播的用户拉取直播用户的流媒体内容时,服务端通过将具有该流媒体内容的边缘服务器的CDN(内容分发网络)地址下发给用户,使用户基于CDN地址访问边缘服务器,进而拉取流媒体内容。由于从多个用户同一边缘服务器拉取流媒体内容的,使得CDN带宽压力较大,增加直播成本。同时,前述直播用户将流媒体内容推送到服务端,用户从服务端下发的CDN地址对应的边缘服务器拉取流媒体内容的过程中,流程复杂繁琐,数据传输链路长,使得数据传输过程中发生延迟和因网络抖动而发生直播抖动的可能性增加。而增加CND带宽,将增加直播成本。

为此,本公开提供了一种流媒体内容传输方法和装置、一种流媒体内容直播方法和装置以及一种流媒体内容拉取方法和装置。

下面将结合附图详细描述本公开的实施例。

参看图1,对根据本发明的一个实施例的一种流媒体内容传输方法进行示意性说明。如图1所示,流媒体内容传输方法100包括:

步骤S110:接收第一用户的拉取指令,并且接收直播用户的开启公网服务指令,其中,所述拉取指令指示所述第一用户拉取所述直播用户流媒体内容,所述开启公网服务指令指示所述直播用户允许所述第一用户基于所述直播用户的公网服务地址进行访问;

步骤S120:响应于所述开启公网服务指令和所述拉取指令,获得所述公网服务地址;

步骤S130:向所述第一用户下发至少一个拉流地址,以使所述第一用户基于所述至少一个拉流地址中的一项进行访问,以获得所述流媒体内容,其中,所述至少一个拉流地址包括所述公网服务地址。

通过将直播用户的公网服务地址包含在至少一个拉流地址中下发给拉取所述直播用户的流媒体内容的用户,使用户可以基于公网服务地址访问直播用户,而拉取直播用户的流媒体内容,可以减少CDN带宽,进而减少直播成本。同时,由于流媒体内容直接从直播用户传输到拉取该流媒体内容的用户,相较于流媒体内容从直播用户传输到服务器,再从边缘服务器传输到拉取该流媒体内容的用户,缩短了流媒体内容传输的链路,可以减少延迟,并且可以减少因为网络抖动带来的直播抖动的问题。

根据本公开的实施例,开启公网服务的直播用户可以被作为特殊边缘服务器(区别于基于CDN地址的边缘服务器)被调度,以供拉取该直播用户的流媒体内容的用户从其上拉取流媒体内容,从而分担基于CDN地址的边缘服务器的带宽压力,因而能减少CND带宽,减少直播成本。

在一些实施例中,根据本公开的流媒体内容传输方法应用于服务端。

在一些实施例中,直播用户为推送直播流的客户端,客户端例如可以是手机、平板电脑等直播设备。在一些实施例中,直播流例如可以包括视频流、音频流中的至少一种的流媒体内容,在此并不限定。

在一些实施例中,响应于接收到来自直播用户的开启公网服务指令,确定直播用户开启公网服务。在一个示例中,所述开启公网服务指令,是直播用户在开启公网服务时自动发送的。

在一些实施例中,响应于确定直播用户在注册中心注册了开启公网服务的注册信息,将该注册信息作为直播用户的开启公网服务指令,从而确定直播用户开启公网服务。

在一些实施例中,第一用户是观看该直播用户的直播的任意用户。

在一些实施例中,当第一用户基于直播用户的直播地址进行访问时,发送拉取指令。

需要说明的是,根据本公开的“开启公网服务指令”、“拉取指令”等术语中,指令可以是任何形式的数据,在此并不限定。

在一些实施例中,获得所述直播用户的公网服务地址包括:从直播用户上获取公网服务地址,其中,公网服务地址是直播用户基于所述直播用户的公网地址和端口进行端口映射来获得的。

例如,在局域网中的直播用户,通过将直播用户在局域网中的端口映射到其公网地址的端口,从而使基于公网地址的端口访问的用户,可以访问直播用户在局域网中的端口。

在一些实施例中,如图2所示,获得所述公网服务地址包括:

步骤S210:获得所述第一用户的与所述拉取指令相应的第一地址,所述第一地址是指示所述第一用户的公网地址和端口;

步骤S220:向所述直播用户发送包含所述第一地址的第一指令,以使所述直播用户响应于接收到所述第一指令发送第一数据,并且基于所述第一地址访问所述第一用户;

步骤S230:响应于所述直播用户访问所述第一用户,获取所述述直播用户与所述第一数据相应的第二地址,所述第二地址指示所述直播用户的公网地址和端口;以及

步骤S240:将所述第二地址确定为所述公网服务地址。

根据本公开的一些实施例,直播用户不具有基于所述直播用户的公网地址和端口进行端口映射来获得的公网服务地址,则服务端通过“打洞”的方式,获取直播用户对外交换数据的第二地址,并将该第二地址确定为直播用户的公网服务地址,从而实现公网服务地址的获得。

需要理解的是,实施例以获得公网服务地址包括“基于所述直播用户的公网地址和端口进行端口映射来获得的”或者通过“打洞”的方式获得,仅仅是示例性的,本领域技术人员应当理解,可以以任何方式获得直播用户的公网服务地址,只要基于该公网服务地址能够访问直播用户即可。

在一些实施例中,如图3所示,向所述第一用户下发至少一个拉流地址包括:

步骤S310:获得第一检测结果,所述第一检测结果指示是否向所述第一用户下发所述公网服务地址;以及

步骤S320:响应于确定所述第一检测结果指示向所述第一用户下发所述公网服务地址,向所述第一用户下发所述至少一个拉流地址。

在向拉取直播用户的流媒体内容的第一用户下发至少一个拉流地址之前,先确定是否向该第一用户下发直播用户的公网服务地址,避免将公网服务地址下发给不符合条件的用户,使该用户基于公网服务地址而拉取流媒体内容,影响该用户的拉流过程,同时,也避免不符合条件的用户基于公网服务地址从直播用户拉取流媒体内容,对直播用户造成压力,影响直播用户的推流过程。

在一些实施例中,如图4所示,获得第一检测结果包括:

步骤S410:获得所述直播用户和所述第一用户的位置;

步骤S420:基于所述直播用户的位置与所述第一用户的位置,获得所述直播用户和所述第一用户之间的距离;以及

步骤S430:基于所述距离,获得所述第一检测结果。

当拉取流媒体内容的用户距离直播用户较远时(例如拉取流媒体内容的用户与用户直播之间的距离大于该用户与基于CDN地址的边缘服务器的距离),若该用户基于公网服务地址从直播用户拉取流媒体内容,则流媒体内容在传输过程中需要更多的传输链路,从而可能增加延迟,并且可能因为网络抖动带来的直播抖动的问题。

在根据本公开的实施例中,通过基于直播用户的位置和第一用户的位置,获得直播用户和第一用户之间的距离,基于该距离,获得第一检测结果。避免将公网服务地址下发给距离直播用户较远的用户,减少数据传输过程中发生延迟和直播抖动的几率。

在一些实施例中,基于所述距离,获得所述第一检测结果包括:响应于所述距离大于距离阈值,获得所述第一检测结果,所述第一检测结果指示不向所述第一用户下发所述公网服务地址。

例如,对位于南京的直播用户,当拉取流媒体内容的用户也在南京,两者之间的距离不超过2km,则获得第一检测结果,该第一检测结果指示可以向该拉取流媒体内容的用户下发直播用户的公网服务地址。

在一些实施例中,如图5所示,基于所述距离,获得第一检测结果包括:

步骤S510:获得所述直播用户的当前用户集合,所述当前用户集合中的每一个用户通过基于所述公网服务地址访问所述直播用户来获得所述流媒体内容;以及

步骤S520:响应于确定所述当前用户集合中的用户数据不大于数量阈值并且所述距离不大于所述距离阈值,获得所述第一检测结果,所述第一检测结果指示向所述第一用户下发所述公网服务地址。

在拉取流媒体内容的用户基于公网服务地址访问直播用户时,直播用户利用其下行带宽将流媒体内容传输到该用户,并且利用其设备处理能力处理所传输过程中的数据。由于直播用户的设备处理和带宽能力有限,当基于公网服务地址访问直播用户的用户过多时,将给直播用户的设备处理能力和下行带宽造成压力,当直播用户的设备处理能力达到极限时,将影响直播用户的推流过程,当直播用户的下行带宽达到极限时将影响基于公网服务地址进行访问的用户的拉流过程。

根据本公开的实施例,基于距离获得第一检测结果时,基于已经基于公网服务地址进行访问的用户的数量,获得第一检测结果;避免基于公网服务地址从直播用户拉取流媒体内容的用户过多,对直播用户造成压力,影响直播用户的推流过程和基于公网地址进行访问以拉取流媒体内容的用户的拉流过程。

在一些实施例中,当前用户集合是通过在该当前用户集合中的每一个用户拉取流媒体内容的过程中,获取该用户发送的信息而确定的。

例如,当拉取流媒体内容的用户基于公网服务地址访问直播用户之后,在从直播用户拉取流媒体内容的过程中,该用户每隔预设时间段向服务端发送指令,使服务端基于该指令确定该用户是从直播用户拉取流媒体内容的,从而确定该用户为当前用户集合中的一个。

在一些实施例中,根据本公开的流媒体内容传输方法还包括:响应于确定所述第一用户通过基于所述公网服务地址访问所述直播用户来获得所述流媒体内容,将所述第一用户添加至所述当前用户集合。

通过在确定该第一用户通过基于所述公网服务地址访问所述直播用户来获得所述流媒体内容之后,将该第一用户添加至当前用户集合,从而可以更新该当前用户集合,在后续向拉取流媒体内容的第二用户下发至少一个拉流地址的过程中,基于该当前用户集合确定是否向第二用户下发公网服务地址,进一步避免基于公网服务地址从直播用户拉取流媒体内容的用户过多,对直播用户造成压力,影响直播用户的推流过程和基于公网地址进行访问以拉取流媒体内容的用户的拉流过程。

在一些实施例中,所述至少一个拉流地址还包括内容分发网络地址,基于所述内容发网络,所述第一用户能够访问具有所述流媒体内容的边缘服务器,从而获得所述流媒体内容。

在下发至少一个拉流地址的过程中,除了下发公网服务地址之外还下发内容分发网络地址,使拉取流媒体内容的过程中,当第一用户基于公网服务地址无法拉取流媒体内容时,自动转入基于内容分发网络地址获得流媒体内容,保证第一用户拉流过程的顺利、稳定进行。

在一些实施例中,流媒体内容传输方法还包括:

接收所述直播用户的禁用公网服务指令;其中,所述禁用公网服务指令指示所述直播用户不允许所述第二用户基于所述公网服务地址进行访问;

响应于所述禁用公网服务指令,向拉取所述流媒体内容的第二用户下发内容分发网络地址,以使所述第二用户能够基于所述内容分发网络地址访问具有所述流媒体内容的边缘服务器,以获得所述流媒体内容;其中禁用公网服务指示所述直播用户不允许所述第二用户基于所述公网服务地址进行访问。

在获取到直播用户的禁用公网服务指令时,确定该直播用户不允许拉取其流媒体内容的用户访问其公网服务地址,此时,将边缘服务器的内容分发网络地址下发给拉取其流媒体内容的用户,保证用户拉流过程的顺利、稳定进行。

根据本公开的另一方面,还提供了一种流媒体内容直播方法。

参看图6,对根据本发明的一个实施例的一种流媒体内容直播方法进行示意性说明。如图6所示,流媒体内容直播方法600包括:

步骤S610:发送开启公网服务指令,以使所述服务端响应于所述开启公网服务指令获得公网服务地址并且向拉取流媒体内容的第一用户下发至少一个拉流地址,所述至少一个拉流地址包括所述公网服务地址,其中,所述开启公网服务指令指示允许所述第一用户基于所述公网服务地址进行访问。

通过发送开启公网服务指令,使得服务端获得公网服务地址并将其包含在至少一个拉流地址中下发给拉取流媒体内容的用户,使用户可以基于公网服务地址进行访问,而拉取直播用户的流媒体内容,可以减少CDN带宽,进而减少直播成本。同时,由于流媒体内容直接传输到拉取该流媒体内容的用户,相较于流媒体内容先传输到服务器,再从边缘服务器传输到拉取该流媒体内容的用户,缩短了流媒体内容传输的链路,可以减少延迟,并且可以减少因为网络抖动带来的直播抖动的问题。

根据本公开的一些实施例,在客户端执行根据本公开的流媒体内容的方法。

在一些实施例中,服务端可以是执行根据本公开的流媒体内容传输方法任意服务端。

在一些实施例中,客户端为推送直播流的任意设备,例如可以是手机、平板电脑等直播设备。在一些实施例中,直播流例如可以包括视频流、音频流中的至少一种的流媒体内容,在此并不限定。

在一些实施例中,通过在服务端的注册中心注册用于开启公网服务的注册信息,以发送开启公网服务指令,其中,注册信息即为开启公网服务指令。

在一些实施例中,通过向服务端发送指令,以开启公网服务,其中服务端响应于接收到该指令执行获得公网服务地址。

在一些实施例中,通过发送开启公网服务指令开启公网服务的同时使服务端获得该指令中包含的公网服务地址。

在一些实施例中,公网服务地址是由直播用户生成的,如图7所示,根据本公开的流媒体内容的方法还包括:

步骤S710:基于公网地址和端口进行端口映射,以获得所述公网服务地址;以及

步骤S720:向所述服务端发送所述公网服务地址。

例如,在局域网中的直播用户,通过将直播用户在局域网中的端口映射到其公网地址的端口,从而使基于公网地址的端口访问的用户,可以访问直播用户在局域网中的端口。

在另一些实施例中,公网服务地址是通过与服务端、第一用户之间的交互,使服务端获得的,例如,根据本公开的流媒体内容的方法还包括:

响应于接收到来自所述服务端的第一指令,向所述服务端发送第一数据,并且基于与所述第一指令相应的第一地址访问所述第一用户,其中,所述第一指令与所述第一用户的拉取指令相应,所述第一用户通过向所述服务端发送所述拉取指令以拉取所述流媒体内容,所述第一数据指示所述公网服务地址。

根据本公开的一些实施例,当不具有根据公网地址和端口进行端口映射来获得的公网服务地址时,通过与第一用户、服务端之间的交互,在交互过程中,使服务端以“打洞”的方式获得交互数据中的包含的地址,并将该地址作为公网服务地址,以供第一用户拉取流媒体内容,从而使服务端实现公网服务地址的获得。

需要理解的是,实施例以获得公网服务地址包括“基于所述直播用户的公网地址和端口进行端口映射来获得的”或者通过“打洞”的方式获得,仅仅是示例性的,本领域技术人员应当理解,可以以任何方式获得直播用户的公网服务地址,只要基于该公网服务地址能够访问直播用户即可。

在一些实施例中,第一用户是拉取流媒体内容并播放该流媒体内容的客户端,客户端例如可以是手机、平板电脑等直播设备。

在一些实施例中,如图8所示,据本公开的流媒体内容的方法还包括:

步骤S810:获取当前用户集合中的用户数量,所述当前用户集合中的每一个用户通过基于所述公网地址进行访问以获得所述流媒体内容;以及

步骤S820:响应于所述用户数量不小于数量阈值,发送禁用公网服务指令,以使所述服务端响应于所述禁用公网服务指令,向拉取所述流媒体内容的第二用户下发内容分发网络地址,从而使所述第二用户能够基于所述内容分发网络地址访问具有所述流媒体内容的边缘服务器并获得所述流媒体内容,其中,所述禁用公网服务指令指示禁止所述第二用户基于所述公网服务地址进行访问。

在用户基于公网服务地址进行访问以拉取流媒体内容时,直播用户利用其下行带宽将流媒体内容传输到该用户,并且利用其设备处理能力处理所传输过程中的数据。由于直播用户的设备处理和带宽能力有限,当基于公网服务地址访问直播用户的用户过多时,将给直播用户的设备处理能力和下行带宽造成压力,当直播用户的设备处理能力达到极限时,将影响直播用户的推流过程,当直播用户的下行带宽达到极限时将影响基于公网服务地址进行访问的用户的拉流过程。

根据本公开的实施例,对基于公网服务地址进行访问以拉取流媒体内容的用户进行统计,当用户数量超过数量阈值时,则发送禁用公网服务指令,使服务端基于禁用公网服务指令,向后续拉取流媒体内容的用户下发内容分发网络地址,从而使后续拉取流媒体内容的用户能够基于所述内容分发网络地址访问具有所述流媒体内容的边缘服务器并获得所述流媒体内容,保证后续拉取流媒体内容的用户顺利拉取流媒体内容的同时,避免基于公网服务地址从直播用户拉取流媒体内容的用户过多,而影响推流过程和基于公网地址进行访问以拉取流媒体内容的用户的拉流过程。

在一些实施例中,第二用户是在第一用户之后拉取流媒体内容的任一客户端。

根据本公开的另一方面,还提供一种流媒体内容拉取方法。

参看图9,对根据本公开的实施例的一种流媒体内容拉取方法进行示意性说明。如图9所示,流媒体内容拉取方法900包括:

步骤S910:向服务端发送拉取指令,以拉取直播用户的流媒体内容;

步骤S920:响应于接收到由所述服务端发送的至少一个拉流地址,从所述至少一个拉流地址中获取第一拉流地址,其中,所述至少一个拉流地址包括所述直播用户的公网服务地址,基于所述公网服务地址能够访问所述直播用户;以及

步骤S930:基于所述第一拉流地址进行访问,以获得所述流媒体内容。

根据本公开的一些实施例,在客户端执行根据本公开的流媒体内容的方法。

在一些实施例中,客户端为拉取流媒体内容的任意设备,例如可以是手机、平板电脑等拉流设备。在一些实施例中,流媒体内容例如可以包括视频流、音频流中的至少一种,在此并不限定。

在一些实施例中,拉取指令为向服务端发送的指示要获取流媒体内容的指令数据,例如可以包含允许服务端向其推动拉流地址的地址。

在一些实施例中,服务端可以是执行根据本公开的流媒体内容传输方法任意服务端。

在一些实施例中,从所述至少一个拉流地址中获取第一拉流地址包括:响应于所述至少一个拉流地址中包括公网服务地址,将该公网服务地址确定为第一拉流地址。

当至少一个拉流地址中包含公网服务地址时,基于公网服务地址进行访问以拉取流媒体内容,可以减少CDN带宽,进而减少直播成本。同时,由于流媒体内容是从直播用户直接拉取,相较于流媒体内容先从直播用户传输到服务器,再从边缘服务器传输到拉取,缩短了流媒体内容传输的链路,可以减少延迟,并且可以减少因为网络抖动带来的直播抖动的问题。

在一些实施例中,所述至少一个拉流地址还包括内容分发网络地址,所述方法还包括:

响应于确定在预设时间内获得的所述流媒体内容的分段的数量小于分段数量阈值;以及

基于所述内容分发网络地址,访问具有所述流媒体内容的边缘服务器,以获得所述流媒体内容。

当基于公网服务地址进行访问以拉取流媒体内容时,在预设时间内获得的流媒体内容的分段的数量小于分段数量阈值,表明基于公网服务地址拉取流媒体内容的过程不顺畅,此时,切换至内容分发网络地址,通过基于内容分发网络地址访问边缘服务器,以获得所述流媒体内容,保证拉流过程顺畅,保证流媒体内容的播放质量。

在一些实施例中,根据本公开的一种流媒体内容拉取方法还包括:响应于获得所述流媒体内容,向所述服务端发送上报指令,所述上报指令指示所述流媒体内容是基于所述公网服务地址访问所述直播用户而获得的。

通过向服务端发送上报指令,由于上报指令指示流媒体内容是基于所述公网服务地址访问所述直播用户而获得的,使服务端基于该上报指令确定客户端是基于所述公网服务地址访问所述直播用户而获得的,从而可以统计基于所述公网服务地址访问所述直播用户的客户端的数量,基于公网服务地址从直播用户拉取流媒体内容的用户过多,而影响推流过程和基于公网地址进行访问以拉取流媒体内容的客户端的拉流过程。

参看图10,对根据本公开的流媒体内容传输方法、流媒体内容直播方法和流媒体内容拉取方法进行示例性介绍。其中,服务端1010通过分别与直播用户1020和拉取流媒体内容的用户1030之间的数据交互,实现根据本公开的流媒体内容传输方法;直播用户1010通过分别与服务端1010和拉取流媒体内容的用户1030之间的数据交互,实现根据本公开的流媒体内容直播方法;以及拉取流媒体内容的用户1030通过分别与服务端1010和直播用户1020之间的数据交互,实现根据本公开的流媒体内容拉取方法,并且其中,箭头指示数据交互步骤以及在数据交互步骤中数据传送的方向。

如图10所示,在直播用户1020开启直播时,将流媒体内容推送A到服务端1010,同时,拉取流媒体内容的用户1030向服务端1010发送B拉取指令,以拉取流媒体内容。服务端1010接收到用户1030的拉取指令时,向用户1030下发C拉流地址,其中,服务端1010在确定直播用户1020开启公网服务之后,向用户1030下发的拉流地址中包括直播用户1020的公网服务地址。用户1030在接收到服务端1010下发的拉流地址之后,响应于拉流地址中包括公网服务地址,基于公网服务地址对直播用户1020进行访问D,以使直播用户1020将流媒体内容推送E到用户1030。

根据本公开的另一方面,还提供一种流媒体内容传输装置,如图11所示,装置1100包括:

接收单元1110,被配置用于接收第一用户的拉取指令,并且接收直播用户的开启公网服务指令,其中,所述拉取指令指示所述第一用户拉取所述直播用户流媒体内容,所述开启公网服务指令指示所述直播用户允许所述第一用户基于所述直播用户的公网服务地址进行访问;

获取单元1120,被配置用于响应于所述开启公网服务指令和所述拉取指令,获得所述公网服务地址;以及

分发单元1130,被配置用于向所述第一用户下发至少一个拉流地址,以使所述第一用户基于所述至少一个拉流地址中的一项进行访问,以获得所述流媒体内容,其中,所述至少一个拉流地址包括所述公网服务地址。

根据本公开的另一方面,还提供一种流媒体内容直播装置,如图12所示,装置1200包括:

启动单元1210,被配置用于发送开启公网服务指令,以使所述服务端响应于所述开启公网服务指令获得公网服务地址并且向拉取流媒体内容的第一用户下发至少一个拉流地址,所述至少一个拉流地址包括所述公网服务地址,其中,所述开启公网服务指令指示允许所述第一用户基于所述公网服务地址进行访问。

根据本公开的另一方面,还提供一种流媒体内容拉取装置,如图13所示,装置1300包括:

指令发送单元1310,被配置用于向服务端发送拉取指令,以拉取直播用户的流媒体内容;

地址获取单元1320,被配置用于响应于接收到由所述服务端发送的至少一个拉流地址,从所述至少一个拉流地址中获取第一拉流地址,其中,所述至少一个拉流地址包括所述直播用户的公网服务地址,基于所述公网服务地址能够访问所述直播用户;以及

访问单元1330,被配置用于基于所述第一拉流地址进行访问,以获得所述流媒体内容。

根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据上述的方法。

根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据上述的方法。

根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据上述的方法。

参见图14,现将描述可以作为本公开的服务器或客户端的电子设备1400的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备可以是不同类型的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图14所示,电子设备1400可以包括能够通过系统总线1430彼此通信的至少一个处理器1410、工作存储器1420、输入单元1440、显示单元1450、扬声器1460、存储单元1470、通信单元1480以及其它输出单元1490。

处理器1410可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器1410可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。处理器1410可以被配置成获取并且执行存储在工作存储器1420、存储单元1470或者其他计算机可读介质中的计算机可读指令,诸如操作系统1420a的程序代码、应用程序1420b的程序代码等。

工作存储器1420和存储单元1470是用于存储指令的计算机可读存储介质的示例,指令由处理器1410执行来实施前面所描述的各种功能。工作存储器1420可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,存储单元1470可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器1420和存储单元1470在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器1410作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。

输入单元1440可以是能向电子设备1400输入信息的任何类型的设备,输入单元1440可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示单元1450、扬声器1460以及其它输出单元1490,其它输出单元1490可以但不限于包括视频/音频输出终端、振动器和/或打印机。通信单元1480允许电子设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。

工作寄存器1420中的应用程序1420b可以被加载执行上文所描述的各个方法和处理,例如图1中的步骤S110-步骤S120。例如,在一些实施例中,流媒体内容传输、直播或拉取方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1470。在一些实施例中,计算机程序的部分或者全部可以经由存储单元1470和/或通信单元1480而被载入和/或安装到电子设备1400上。当计算机程序被加载并由处理器1410执行时,可以执行上文描述的流媒体内容传输、直播或拉取方法的一个或多个步骤。备选地,在其他实施例中,处理器1410可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行构建直播对等网络的方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。

技术分类

06120114713958