视频直播方法及装置与流程

文档序号:18162356发布日期:2019-07-13 09:23阅读:373来源:国知局
视频直播方法及装置与流程

本发明涉及网络数据传输技术领域,特别涉及一种视频直播技术领域。



背景技术:

随着互联网技术的突飞猛进,视频直播服务变得越来越普及。但随着视频直播服务对于清晰度和延迟的要求越来越高,以及视频直播服务所涵盖的地理范围越来越广,直播数据流的压缩和传输等相关技术依然面临着很大的挑战。

当前主流的流媒体传输协议是adobe公司的实时消息传输协议(英文全称:realtimemessagingprotocol,简称:rtmp)。rtmp基于传输控制协议(英文全称:transmissioncontrolprotocol,简称:tcp),是一种设计用来进行实时数据通信的网络协议,可在adobe公司的flash和air等平台上和支持rtmp的流媒体或者交互服务器之间进行音频、视频和数据通信。rtmp被广泛地用于视频直播领域,当前市面上的绝大多数直播产品都采用了该协议。

http直播流协议(英文全称:httplivestreaming,简称:hls)是一个用苹果公司提出的基于http流媒体的网络传输协议,是苹果公司quicktime和iphone软件系统的一部分。它的工作原理是把整个视频流分成一个个小的基于http的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。

在采用rtmp协议进行直播的过程中,当视频采集客户端进行直播视频的推流时,服务器需要有相应的收流模块来接收该视频流。rtmp协议规定,接收流媒体有两个前提步骤:第一,建立一个网络连接(英文:netconnection);第二,建立一个网络流(英文:netstream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系,网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。建立起网络流后,服务端就能够接收客户端推送过来的合法的视频流。

目前,对于视频流的接收和分发,通常采用内容分发网络(英文全称:contentdeliverynetwork,简称:cdn)的方式来进行,即部署在各地的区域节点,通过中心节点进行负载均衡、内容分发、调度使用户就近获取所需内容,提高用户访问的响应速度和命中率。但采用cdn网络进行视频流的接收和分发时,如果视频采集客户端和视频播放客户端的距离较近,而视频采集客户端和视频播放客户端距离中心节点较远时,由于视频流的传输需要经过中心节点,使得视频流的传输路径增长,从而降低了视频直播系统的效率。



技术实现要素:

本申请的实施例提供一种视频直播方法以及实现该方法的装置,解决现有技术中因视频流需经过中心节点,使得视频流的传输路径增长,从而导致的效率低的问题。

第一方面,本申请提供一种视频直播方法,该视频直播方法通过视频直播系统实现。该视频直播系统包括至少两个区域节点组成的区域节点集群,每个区域节点用于连接本区域内的视频直播客户端,其中,视频直播客户端即可以用作视频采集客户端,也可以用作视频直播客户端。该视频直播方法包括:第一区域节点接收其所管理的区域内的视频直播客户端所发送的视频流,触发从其所属的区域节点集群确定该视频流对应的主管节点的流程。当主管节点确定后,该主管节点在自身保存的直播记录表中记录视频流的直播信息,并将该视频流的直播信息同步保存到区域节点集群中的其它区域节点的直播记录表中,其中,视频流的直播信息包括该视频流的标识以及第一区域节点的信息。第一区域节点接收第二区域节点发送的视频请求,其中,该视频请求携带有前述视频流的标识,而第二区域节点为区域节点集群中用于请求该视频流的视频播放客户端所在区域的区域节点,该区域节点根据自身保存的直播记录表中所记载的视频流的直播信息将视频请求发送给第一区域节点。第一区域节点收到视频请求后,将视频采集客户端发送的视频流发送至第二区域节点。

上述方案中,当区域节点收到视频播放客户端发送的视频请求后,如果该区域节点没有视频播放客户端所请求的视频流,可以通过查找其所保存的直播记录表中记录的视频流的直播信息得知拥有该视频流的区域节点的信息,并可以直接向拥有该视频流的区域节点进行拉流。通过这种做法,视频直播系统中不再需要传统意义上的中心节点,增强了系统的稳定性;同时,解决了在视频采集客户端和视频客户端距离中心解决较远时,视频流需要经过中心节点,使得视频流的传输路径增长而导致的视频直播系统效率降低的问题。

对于上述第一方面,一种可能的实现方式是当第一区域节点触发的从区域节点集群确定视频流对应的主管节点的流程时,该流程包括:第一区域节点在区域节点集群中广播发送其所受到的视频流的信息以及该区域节点的信息,使得该区域节点集群中的区域节点进行竞争运算以确定主管节点;主管节点向区域节点集群中的其它区域节点发送验证请求,区域节点集群中的其它区域节点向主管节点发送验证确认消息,该验证确认消息表明区域节点集群中的其它区域节点同意该主管节点作为当前直播信息的记录者。通过这种做法,可以在区域节点集群中选出运算能力最强的区域节点作为主管节点,且选出的主管节点需要得到其它区域节点的同意,兼顾了视频直播系统的效率。

可选的,当主管节点在自身保存的直播记录表中记录视频流的直播信息,并将该视频流的直播信息同步保存到区域节点集群中的其它区域节点的直播记录表中时,该主管节点和区域节点集群中的其它区域节点可以通过区块链账本在自身保存的直播记录表中保存该视频流的直播信息。通过这种做法,可以提升所保存的直播记录表中信息的安全性。

对于上述第一方面,另一种可能的实现方式是第一区域节点接收视频采集客户端发送的视频流的停止信息,并触发从区域节点集群中确定视频流的停止信息对应的主管节点的流程。在主管节点确定之后,该主管节点在自身保存的直播记录表中记录该视频流的停止信息,并将该视频流的停止信息同步保存到区域节点集群中的其它直播记录表中。通过这种做法,当停止直播后,视频直播系统中的所有区域节点会同步该视频流的停止信息,当有视频播放客户端请求该视频流时,收到直播请求的区域节点可以告知该视频流已经停止直播。

可选的,当主管节点在自身保存的直播记录表中记录视频流的停止信息并将该视频流的停止信息保存到区域节点集群中的其它直播记录表中时,该主管节点和区域节点集群中的其它区域节点可以通过区块链账本在自身保存的直播记录表中保存该视频流的停止信息。

对于上述第一方面,另一种可能的实现方式是第一区域节点触发从区域节点集群中确定该视频流对应的主管节点的流程包括:该区域节点向中心节点发送查询请求,以使得中心节点将区域节点集群中优先级别最高的区域节点作为主管节点;第一区域节点从中心节点接收应答信息,该应答信息携带有所选出的优先级别最高的区域节点的信息。通过这种做法,可以快速选出主管节点;同时,由于视频流不需要经过中心节点,解决了因视频流经过中心节点而造成的传输路径增长所导致的视频直播系统效率低的问题。

可选的,当主管节点自身保存的直播记录表中记录视频流的直播信息,并将该视频流的直播信息同步保存到区域节点集群中的其它区域节点的直播记录表中时,该主管节点和区域节点集群中的其它区域节点可以通过链表在自身保存的直播记录表中保存该视频流的直播信息。通过这种做法,可以更好地利用区域节点的存储空间,提高了视频直播系统的效率。

对于上述第一方面,另一种可能的实现方式是第一区域节点接收视频采集客户端发送的视频流的停止信息,并将该视频流的停止信息发送给优先级别最高的区域节点,以使得该优先级别最高的区域节点将该视频流的停止信息写入其直播记录表中;优先级别最高的区域节点在自身保存的直播记录表中记录视频流的停止信息,并将视频流的停止信息同步保存到区域节点集群中的其它区域节点的直播记录表中。通过这种做法,当停止直播后,视频直播系统中的所有区域节点会同步该视频流的停止信息,当有视频播放客户端请求该视频流时,收到视频请求的区域节点可以告知该视频流已经停止直播。

可选的,当优先级别最高的区域节点在自身保存的直播记录表中记录视频流的停止信息并将该视频流的停止信息保存到区域节点集群中的其它直播记录表中时,该优先级别最高的区域节点和区域节点集群中的其它区域节点可以通过链表在自身保存的直播记录表中保存该视频流的停止信息。

第二方面,本申请提供一种视频直播系统中的区域节点,该视频直播系统包括至少两个区域节点所组成的区域节点集群,每个区域节点用于连接本区域内的视频直播客户端,该区域节点包括:接收模块、触发模块和接收模块。其中,接收模块,用于接收第一区域节点所管理的区域内的视频采集客户端发送的视频流;触发模块,用于触发从区域节点集群确定视频流对应的主管节点的流程,其中,主管节点确认之后,该主管节点在自身保存的直播记录表中记录视频流的直播信息,并将该视频流的直播信息向区域节点集群中的其他区域节点广播时,将视频流的直播信息同步保存到直播记录表中,视频流的直播信息包括该视频流的标识与第一区域节点的信息;接收模块,用于接收第二区域节点发送的视频请求,其中,该视频请求携带有前述视频流的标识,第二区域节点为区域节点集群中用于请求视频流的视频播放客户端所在区域的区域节点,该区域节点根据自身保存的直播记录表中的视频流的直播信息发送所述视频请求;其中,发送模块还用于根据视频请求将视频采集客户端发送的视频流发送至第二区域节点。

对于上述第二方面,另一种可能的实现方式是当触发模块触发从区域节点集群确定视频流对应的主管节点的流程时,触发模块还用于,在区域节点集群中广播发送视频流的信息和第一区域节点的信息,以使得区域节点集群中的区域节点进行竞争运算以确定主管节点;在接收主管节点发送的验证请求后,向该主管节点发送验证确认消息,所述验证确认消息表明区域节点集群中的其它区域节点同意该主管节点作为当前直播信息的记录者;接收主管节点向区域节点集群中的其它区域节点发送的验证请求。

可选的,触发模块将视频流的直播信息同步保存到直播记录表中是通过区块链账本在自身保存的直播记录表中保存所述视频流的直播信息。

对于上述第二方面,另一种可能的实现方式是接收模块还用于,接收视频采集客户端发送的视频流的停止信息;触发模块还用于,触发从区域节点集群确定该视频流的停止信息对应的主管节点的流程,其中,主管节点确定后,该主管节点在自身保存的直播记录表中记录视频流的停止信息并将该视频流的停止信息向区域节点集群中的其他区域节点广播发送时,将该视频流的停止信息同步保存到直播记录表中。

对于上述第二方面,另一种可能的实现方式是当触发模块触发从区域节点集群确定视频流对应的主管节点的流程时,触发模块还用于,向中心节点发送查询请求,以使得中心节点将区域节点集群中优先级别最高的区域节点作为主管节点;从中心节点接收应答信息,该应答信息携带有优先级别最高的区域节点的信息。

可选的,触发模块将视频流的直播信息同步保存到直播记录表中是通过链表在自身保存的直播记录表中保存所述视频流的直播信息。

对于上述第二方面,另一种可能的实现方式是接收模块还用于,接收视频采集客户端发送的视频流的停止信息;发送模块还用于,将视频流的停止信息发送给优先级别最高的区域节点,以使得该优先级别最高的区域节点将视频流的停止信息写入其保存的直播记录表中;触发模块还用于,当优先级别最高的区域节点在自身保存的直播记录表中记录视频流的停止信息,并将该视频流的停止信息向所述区域节点集群中的其它区域节点进行广播发送时,将该视频流的停止信息记录同步保存到直播记录表中。

第三方面,本申请提供一种服务器,用于视频直播系统中的区域节点,该服务器包括存储器和处理器。存储器中存储程序代码,处理器用于调用处理器中的程序代码执行如本申请的第一方面中所述的视频直播的方法。

附图说明

图1为本申请的实施例中视频流的推流过程和拉流过程的示意图。

图2为采用cdn技术所形成的视频直播系统的组成的示意图。

图3为本申请的第一个实施例中的视频直播系统的组成的示意图。

图4为本申请的第一个实施例的流程示意图。

图5为本申请的第二个实施例中的视频直播系统的组成的示意图。

图6为本申请的第二个实施例的流程示意图。

图7为本申请的实施例中的区域节点的功能结构的示意图。

图8为本申请的实施例中的服务器结构的示意图。

具体实施方式

为了使本申请的上述目的、技术方案和优点更易于理解,下文提供了详细的描述。所述详细的描述通过使用方框图、流程图和/或示例提出了设备和/或过程的各种实施例。由于这些方框图、流程图和/或示例包含一个或多个功能和/或操作,所以本领域内人员将理解可以通过许多硬件、软件、固件或它们的任意组合单独和/或共同实施这些方框图、流程图或示例内的每个功能和/或操作。

以下是本申请文件包含的术语:

如图1所示,为实现直播流的正常观看,则将视频直播方法分为视频流的推流过程和直播流的拉流过程。

推流,通过视频流的推流过程,使得所述视频采集客户端将采集到的视频流推送至区域节点集群中的任意一个区域节点上;同时,推流也可以表示一个区域节点将视频流发送到另一个区域节点上的过程。

拉流,通过视频流的拉流过程,使得视频播放客户端能够获取到存储在区域节点上的视频流,以使终端设备能够观看到所述视频流;同时,拉流也可以表示一个区域节点请求另一个区域节点向其发送视频流的过程。

中心节点,通过在视频直播系统中实现负载均衡、内容分发、调度等功能,并负责在区域节点未命中时进行回源,从而对整个视频直播系统进行管理。

区域节点:通过管理一定区域内的视频直播客户端并保存部分热点数据,提供用户就近的内容访问服务。

图2所示的是一个典型的采用cdn技术形成的视频直播系统200。如图2所示,中心节点210与若干区域节点相连(图中所示为区域节点201、区域节点202、区域节点203),这些区域节点构成了区域节点集群220。区域节点用于对本区域内的视频流进行拉流和收流。区域节点连接有若干视频直播客户端。这些视频直播客户端既可以作为视频采集客户端,也可以作为视频播放客户端。当作为视频采集客户端时,直播者通过视频采集客户端进行直播,视频采集客户端进行推流,将处理后的视频流发送至最近的区域节点中。当作为视频播放客户端时,用于用户收看直播。视频直播客户端可以有多种形态,例如,其可以是连接wifi或者蜂窝网络的便携设备,也可以是连接固定网络的pc机等。

视频直播系统采用cdn网络进行视频流的接收和分发时,视频采集客户端首先将视频流经其对应的区域节点,发送至中心节点。视频播放客户端发出视频请求后,该视频请求经区域节点,发送至中心节点。中心节点再根据该直播服务请求,将对应的视频流经该视频播放客户端对应的区域节点发送至该视频播放客户端。采用cdn网络进行视频流的接收和分发时,如果视频采集客户端和视频播放客户端的距离较近,而视频采集客户端和视频播放客户端距离中心节点较远时,由于视频流需要经过中心节点,使得视频流的传输路径增长,从而降低了视频直播系统的效率。

以下对本申请的具体实施场景和方法进行详细介绍。

图3为本申请的第一个实施例中的视频直播系统的组成框图。如图3所示,视频直播系统300包括区域节点301、区域节点302、区域节点303组成的区域节点集群310、视频采集客户端304和视频播放客户端305(图中所示的区域节点为3个,实际数量可能为两个或更多)。区域节点用于对本区域内的视频流进行拉流和收流。视频采集客户端304和区域节点301在同一个区域内,视频播放客户端305和区域节点303在一个区域内。

图4所示的是本申请的第一个实施例的流程示意图。如图4所示,具体步骤如下:

步骤1:视频采集客户端304采集直播者上传的视频流,并生成对应的视频流的标识。其中,视频流和该视频流的标识之间是一一对应的,可以通过视频流的标识找到对应的视频流。在不同的直播视频系统中,视频流的标识可以由不同的内容组成。例如,视频流的标识可以包含直播者在该直播视频系统中的注册信息、视频采集客户端的网络地址、视频流的状态信息等。

视频采集客户端304通过智能域名系统(英文全称:domainnamesystem,简称:dns)解析或者ip地址库智能索引找到最近的区域节点301,并将视频流和该视频流的标识发送给区域节点301。视频流和视频流的标识的发送既可以同时进行,也可以不在同一时间进行。其中,智能dns解析指的是,对于直播服务,全球部署有多个区域节点,使用同一域名让客户端用户进行访问;同时通过全球负载均衡域名解析系统,各个区域都有自己对应的dns服务器;不同区域的终端的域名解析请求就由对应的区域dns服务器进行,解析到最近的直播服务器的ip地址。通过这种方式,智能dns解析可以根据用户的地理位置来接入不同的区域节点。ip地址库智能索引指的是,每一个ip地址对应一个或多个物理地址,众多的ip地址和其对应的地理信息就构成了ip地址库;通过建立ip地址库的智能索引,可以尽量精准地保证全球用户接入最近的区域节点的服务器。

步骤2:区域节点301接收到视频采集客户端304发送的视频流和该视频流的标识时,在本地保存该视频流,并触发从区域节点集群确定该区域节点中的主管节点的程序。具体来说,区域节点301将收到的视频流的标识向区域节点集群中的所有区域节点进行广播,并使得包括自身在内的所有区域节点根据预设的规则进行竞争运算。首先算出结果,并通过验证的区域节点作为该区域节点集群中运算能力最强的区域节点,为该区域节点集群中的主管节点,有权利将视频流的标识记录在该节点的直播记录表中。

对于区域节点进行的竞争运算,可以采取多种算法来实现。下面将以其中一种算法为例进行介绍,但本申请并不仅限于该算法。例如,可以将视频流的标识转换成md5值,参与竞争的区域节点将反复寻找一个数值,使得该数值、当前直播记录表的哈希值以及视频流的标识的md5值三部分送入sha256算法后能计算出散列值满足一定条件(比如前20位均为0),最先找出该数值区域节点即为该区域节点集群中的主管节点,该主管节点将有权利将视频流的标识以及区域节点301的网络地址作为直播信息记录在直播记录表上。为了确认主管节点,当某一区域节点宣称其找出相应的数值时,该区域节点需要将包含该数值的信息在系统中进行广播,其他区域节点验证胜出节点的计算结果是否正确,如果验证该计算结果正确,则广播相应的验证信息。与此同时,如果有其他的区域节点也宣称其找出相应的数值,也将包含该数值的信息在系统中进行广播,其他区域节点进行验证。如果一个区域节点广播的数值最先被足够多的其他区域节点验证通过,则该区域节点为主管节点。系统可以设置验证通过所需的区域节点的数量,例如,只有3个及以上的区域节点验证通过或者超过一半的区域节点验证通过,才可以确认算出结果的区域节点为主管节点,获得将视频流的直播信息记录在直播记录表上的权利。其中,直播记录表可以以区块链、链表等方式实现。

区块链,是一种按照时间顺序将数据区块以顺序相连的方式组合而成的一种链式数据结构,并通过密码学的原理保证该数据结构不可被篡改、不可被伪造的分布式账本。在区块链技术中,为了保证区块链账本的一致性,各个节点以其计算能力来争取记账权,即按既定规则进行竞争的胜出者获得将直播信息记录在区块链账本中的权利,而其他节点对更改后的区块链账本进行直播信息的同步。

链表,是一种物理存储单元上的非连续、非顺序的存储结构。链表不会按照线性的顺序进行数据的存储,而是在每一个节点里存到下一个节点的指针。在本申请的实施例中,当区域节点收到直播、视频流及其对应的视频流的标识后,将该视频流的标识和区域节点的信息作为直播信息写入链表。

步骤3:假设区域节点302被确定为主管节点,则区域节点302在其直播记录表中记录视频流的直播信息。其中,该直播信息包括视频流的标识以及区域节点301的网信息。

步骤4:当区域节点302在其直播记录表中记录了视频流的直播信息后,区域节点集群中的其他区域节点进行同步。具体来说,区域节点302将更新后的直播记录表在区域节点集群中的所有区域节点之间进行广播,区域节点集群中的其他区域节点根据区域节点302的直播记录表更新自己的直播记录表。

步骤5:视频播放客户端305找到最近的区域节点303,并向其发送视频请求。其中,该视频请求包含视频播放客户端305所欲观看的视频流的标识以及视频播放客户端305自身的网络地址。为了便于说明,在本实施例中,视频播放客户端305所请求的视频流为视频采集客户端304所上传的视频流,两者具有相同的视频流的标识。

步骤6:由于区域节点303不具有视频播放端305所具有的视频流,因此根据视频请求中的视频流的标识在所保存的直播记录表中查找具有该视频流的标识的直播信息。通过查找直播记录表,得知区域节点301具有该视频流。区域节点303进而向区域节点301进行拉流。具体来说,区域节点303将自身的网络地址发送给区域节点301,并请求区域节点301将视频采集客户端304发送的视频流发送给区域节点303。

步骤7:当区域节点303从区域节点301处获得视频播放客户端305所请求的视频流后,将该视频流发送给视频播放客户端305。

下面的步骤(步骤8至步骤13)是实现本申请的第一个实施例可选的步骤。

步骤8:当直播者停止直播或者负责直播间和用户管理的管理后台停止直播服务后,视频采集客户端304停止发送视频流给区域节点301,同时也将生成一个视频流的停止信息发送给区域节点301。

步骤9:区域节点301收到视频采集客户端304发送停止视频流的标识时,触发从区域节点集群确定该区域节点中的主管节点的程序。需要注意的是,由于区域节点的运算能力会发生变化,因此每次选出的主管节点并不一定会相同。在本实施例中,为了便于说明,依然假设区域节点302被确认为主管节点。

步骤10:当区域节点302被确认为主管节点后,区域节点302在直播记录表中记录视频流的停止信息。

步骤11:区域节点中的其他区域节点同步区域节点302更新后的直播记录表。具体来说,区域节点302将更新后的直播记录表在区域节点集群中进行广播,区域节点集群中的其他区域节点据此更新自己的直播记录表。按照这种方法,当视频播放客户端305向区域节点303发送视频请求,而所请求的视频流已经停止直播时,区域节点303通过查找直播信息表可以得知该视频流已停止直播的消息,并通知视频播放客户端305。

步骤12:区域节点301停止向区域节点303发送视频流。

步骤13:区域节点303停止向视频播放客户端305发送视频流。

图5为本申请的第二个实施例中的视频直播系统的组成框图。如图5所示,视频直播系统500包括由区域节点501、区域节点502和区域节点503组成的区域节点集群510、视频采集客户端504以及视频播放客户端505(图中所示的区域节点为3个,实际数量可能为两个或更多)。区域节点用于对本区域内的视频流进行拉流和收流。视频采集客户端504和区域节点501在同一个区域内,视频播放客户端505和区域节点503在一个区域内。中心节点506在本实施例中的功能弱化,它的作用主要体现在区域节点之间视频流的调度上,而在视频流的处理方面和区域节点的功能基本相同。同时,由于中心节点506通常包括数据中心,其具有较大的存储空间,它也具有日常数据收集和视频存储的作用。

图6所示的是本申请的第二个实施例的流程示意图。如图6所示,具体步骤如下:

步骤1:视频采集客户端504采集直播者上传的视频流,并生成对应的视频流的标识。其中,视频流和该视频流的标识之间是一一对应的,可以通过视频流的标识找到对应的视频流。在不同的直播视频系统中,视频流的标识可以由不同的内容组成。例如,视频流的标识可以包含直播者在该直播视频系统中的注册信息、视频采集客户端的网络地址、视频流的状态信息等。

视频采集客户端504通过智能域名系统(domainnamesystem,dns)解析或者ip地址库智能索引找到最近的区域节点501,并将视频流和该视频流的标识发送给区域节点501。其中,智能dns解析指的是,对于直播服务,全球部署有多个区域节点,使用同一域名让终端用户进行访问;同时通过全球负载均衡域名解析系统,各个区域都有自己对应的dns服务器;不同区域的终端的域名解析请求就由对应的区域dns服务器进行,解析到最近的直播服务器的ip地址。通过这种方式,智能dns解析可以根据用户的地理位置来接入不同的区域节点。ip地址库智能索引指的是,每一个ip地址对应一个或多个物理地址,众多的ip地址和其对应的地理信息就构成了ip地址库;通过建立ip地址库的智能索引,可以尽量精准地保证全球用户接入最近的区域节点的服务器。

步骤2:区域节点501接收到视频采集客户端504发送的视频流和该视频流的标识时,在本地保存该视频流。区域节点501向中心节点506发送查询请求,以使得中心节点将区域节点集群中优先级别最高的区域节点确定为主管节点,并将该主管节点的网络信息发送给区域节点501。在本实施例中,为了方便说明,假设区域节点502为区域节点集群中优先级别最高的区域节点。当中心节点506确认区域节点502为主管节点时,发送应答信息给区域节点501,通知其区域节点502为区域节点集群中的主管节点。

步骤3:中心节点506或者区域节点501通知区域节点502,它被确定为区域节点集群中优先级别最高的区域节点。区域节点501进而将视频流的标识发送给区域节点502,区域节点502在其直播记录表中记录该视频流的直播信息。其中,视频流的直播信息包括该视频流的标识以及区域节点501的信息。

步骤4:当区域节点502在其直播记录表中记录了视频流的直播信息后,区域节点集群中的其他区域节点进行同步。具体来说,区域节点502将更新后的直播记录表在区域节点集群中的所有区域节点之间进行广播,区域节点集群中的其他区域节点根据区域节点502的直播记录表更新自己的直播记录表。

步骤5:视频播放客户端505找到最近的区域节点503,并向其发送视频请求。其中,该视频请求包含视频播放客户端505所欲观看的视频流的标识以及视频播放客户端305自身的网络地址。为了便于说明,在本实施例中,视频播放客户端305所请求的视频流为视频采集客户端304所上传的视频流,两者具有相同的视频流的标识。

步骤6:由于区域节点503不具有视频播放端505所具有的视频流,因此根据视频请求中的视频流的标识在所保存的直播记录表中查找具有该视频流的标识的直播信息。通过查找直播记录表,得知区域节点301具有该视频流。区域节点503进而向区域节点501进行拉流。具体来说,区域节点503将自身的网络地址发送给区域节点501,并请求区域节点501将视频采集客户端304发送的视频流发送给区域节点503。

步骤7:当区域节点503从区域节点501处获得视频播放客户端505所请求的视频流后,将该视频流发送给视频播放客户端505。

下面的步骤(步骤8至步骤12)是实现本申请的第二个实施例可选的步骤。

步骤8:当直播者停止直播或者负责直播间和用户管理的管理后台停止直播服务后,视频采集客户端504停止发送视频流给区域节点501,同时也将生成一个视频流的停止信息发送给区域节点501。

步骤9:由于在某个区域节点集群中,作为主管节点的优先级别最高的区域节点在一定时间内是固定的,因此区域节点502仍然是区域节点集群中的主管节点。

区域节点501将视频流的停止信息发送给区域节点502,区域节点502在其直播记录表中记录该视频流的停止信息。

步骤10:当区域节点502在其直播记录表中记录了视频流的停止信息后,区域节点集群中的其他区域节点进行同步。具体来说,区域节点502将更新后的直播记录表在区域节点集群中的所有区域节点之间进行广播,区域节点集群中的其他区域节点根据区域节点502的直播记录表更新自己的直播记录表。

步骤11:区域节点501停止向区域节点503发送视频流。

步骤12:区域节点503停止向视频播放客户端505发送视频流。

基于上述技术方案,参阅图7所示,本申请的实施例提供一种区域节点700,用于视频直播系统。该区域节点可以由服务器组成,也可以是服务器中的软件模块。该区域节点700包括接收模块710、触发模块720以及发送模块730。其中:

接收模块710,用于接收视频采集客户端、视频播放客户端和其它区域节点等发送来的数据或请求。

触发模块720,用于当接收模块710接收到视频采集客户端发送的视频流的标识或者视频流的停止信息时,触发从服务器700所在的区域节点集群中确定主管节点的流程。

发送模块730,用于向视频播放客户端和其它区域节点等发送数据或者请求。

具体来说,当本区域内的视频采集客户端向区域节点700发送视频流和该视频流的标识时,接收模块710接收该视频流和视频流的标识。触发模块720触发从区域节点集群中确定视频流对应的主管节点的流程,其中,在主管节点确认之后,根据主管节点在自身保存的直播记录表中记录视频流的直播信息,并将视频流的直播信息同步保存到区域节点集群中的其它区域节点的直播记录表中,视频流的直播信息包括该视频流的标识与区域节点的信息;接收模块710还用于接收另一个区域节点发送的视频请求,其中,该视频请求携带有前述视频流的标识,另一个区域节点为区域节点集群中用于请求视频流的视频播放客户端所在区域的区域节点,该区域节点根据自身保存的直播记录表中的视频流的直播信息发送所述视频请求;发送模块730,用于根据视频请求将视频采集客户端发送的视频流发送至进行请求的区域节点。

本申请的实施例所提供的区域节点700,其功能的实现可以参考如图4和图6所示的视频直播的方法。

图8为依据本申请的实施例的服务器800的结构示意图。

如图8所示,服务器800包括处理器801,处理器801与系统内存805连接。处理器801可以为中央处理器(cpu),图像处理器(英文全称:graphicsprocessingunit,简称:gpu),现场可编程门阵列(英文全称:fieldprogrammablegatearray,简称:fpga),或数字信号处理器(英文全称:digitalsignalprocessor,简称:dsp)等计算逻辑或以上任意计算逻辑的组合。处理器801可以为单核处理器或多核处理器。

在本申请的实施例中,处理器801还可以包括事务处理逻辑810,事务处理逻辑810可以为具体的硬件电路或集成在处理器801中的固件模块。如果事务处理逻辑810为具体的硬件电路,则事务处理逻辑810执行本申请实施例的方法,如果事务处理逻辑810为固件模块,则处理器801执行事务处理逻辑810中的固件代码来实现本申请实施例的技术方案。事务处理逻辑810包括:(1)用于接收写事务的逻辑(电路/固件代码);(2)用于生成写事务的命令日志,并存储写事务的命令日志的逻辑(电路/固件代码)(3)用于判断写事务是否为多分区事务的逻辑(电路/固件代码);(4)用于生成写事务的数据日志,并存储写事务的数据日志的逻辑(电路/固件代码)。

总线809用于在服务器800的各部件之间传递信息,总线809可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。总线809还连接有辅助存储器(英文:secondarystorage)802,输入/输出接口803和通信接口804。

辅助存储器802一般也称为外存,辅助存储器807的存储介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(英文全称:solidstatedisk,简称:ssd))等。在一些实施例中,辅助存储器802还可能进一步包括与处理器801分离的远程存储器,例如通过通信接口804和网络811进行访问的网盘(包括网络文件系统(英文全称:networkfilesystem,简称:nfs)等网络或机群文件系统)。在本申请实施例中,辅助存储器802为数据库存储系统的存储介质,用于存储数据副本。

输入/输出接口803连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出设备可以为鼠标、键盘、显示器、或者光驱等。

通信接口804使用例如但不限于收发器一类的收发装置,来实现与其他设备或网络811之间的通信,通信接口804可以通过有线或者无线的形式与网络811互连。

本申请的实施例的一些特征可以由处理器801执行系统内存805中的软件代码来完成/支持。系统内存805可以包括一些软件,例如,操作系统808(例如darwin、rtxc、linux、unix、osx、windows或嵌入式操作系统(例如vxworks)),应用程序807,和事务处理模块806等。

在本申请的实施例中,处理器801执行事务处理模块806来实现本申请实施例的技术方案。事务处理模块806包括:(1)用于接收写事务的代码;(2)用于生成写事务的命令日志,并存储写事务的命令日志的代码;(3)用于判断写事务是否为多分区事务的代码;(4)用于生成写事务的数据日志,并存储写事务的数据日志的代码。

此外,图8仅仅是一个服务器800的例子,服务器800可能包含相比于图8展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图8中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。

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