CN114095739A - 一种视频直播系统 - Google Patents
一种视频直播系统 Download PDFInfo
- Publication number
- CN114095739A CN114095739A CN202111208102.9A CN202111208102A CN114095739A CN 114095739 A CN114095739 A CN 114095739A CN 202111208102 A CN202111208102 A CN 202111208102A CN 114095739 A CN114095739 A CN 114095739A
- Authority
- CN
- China
- Prior art keywords
- server
- live broadcast
- main
- standby
- target live
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/226—Characteristics of the server or Internal components of the server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26208—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/27—Server based end-user applications
- H04N21/274—Storing end-user multimedia data in response to end-user request, e.g. network recorder
- H04N21/2747—Remote storage of video programs received via the downstream path, e.g. from the server
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种视频直播系统,包括主服务器组、备服务器组和监控服务器。主服务器组包括:第一服务器,适于接收目标直播对应的主推流设备推送的视频流,并将视频流发送到第二服务器;第二服务器,适于基于目标直播的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播初始的直播配置项处于生效状态。备服务器组包括:第三服务器,适于接收目标直播对应的备推流设备推送的视频流,并将视频流发送到第四服务器;第四服务器,适于基于目标直播的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播初始的直播配置项处于失效状态。监控服务器适于监控到主推流设备发生故障时,发送主备切换指令到主服务器组和备服务器组。
Description
技术领域
本发明涉及互联网领域,具体涉及一种视频直播系统。
背景技术
在网络视频直播的场景中,视频推流端和视频公有云服务商(CDN服务商)都是影响直播高可用的方面,任何一方出现问题都会影响视频直播的用户体验,因此直播高可用架构在大型直播中是不可或缺的。
现有的基于Nginx推流直播架构,采用的是单路推流,无论是保障团队还是个人都没办法做到从视频推流端到公有云,任何一方出现故障而不影响直播。现有方案出现故障之后大都是中断直播然后让用户刷新观看,用户体验较差。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的视频直播系统。
根据本发明的一个方面,提供一种视频直播系统,包括主服务器组、备服务器组和监控服务器,其中:
所述主服务器组包括:
第一服务器,适于接收目标直播对应的主推流设备推送的视频流,并将视频流发送到第二服务器;
第二服务器,适于接收第一服务器发送的视频流,并基于目标直播的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播初始的直播配置项处于生效状态;
所述备服务器组包括:
第三服务器,适于接收目标直播对应的备推流设备推送的视频流,并将视频流发送到第四服务器;
第四服务器,适于接收第三服务器发送的视频流,并基于目标直播的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播初始的直播配置项处于失效状态;
所述监控服务器,适于监控到主推流设备发生故障时,发送主备切换指令到主服务器组和备服务器组,以便将第二服务器中目标直播的直播配置项设置为失效状态,将第四服务器中目标直播的直播配置项设置为生效状态。
可选地,根据本发明的视频直播系统,其中:所述第一服务器适于基于主备切换指令执行移除指令,以移除目标直播在第一服务器到第二服务器之间的直播链路;所述第二服务器适于基于主备切换指令修改目标直播的配置文件,并执行重加载指令,以使目标直播的直播配置项失效。
可选地,根据本发明的视频直播系统,其中:第一服务器通过执行移除指令移除与第二服务器之间的直播链路后,在预定时间后重新建立与第二服务器之间的直播链路。
可选地,根据本发明的视频直播系统,其中:所述第三服务器适于基于主备切换指令执行移除指令,以移除目标直播在第三服务器到第四服务器之间的直播链路;所述第四服务器适于基于主备切换指令修改目标直播的配置文件,并执行重加载指令,以使目标直播的直播配置项生效。
可选地,根据本发明的视频直播系统,其中,第三服务器通过执行移除指令移除与第四服务器之间的直播链路后,在预定时间后重新建立与第四服务器之间的直播链路。
可选地,根据本发明的视频直播系统,其中:所述第一服务器、第二服务器、第三服务器、第四服务器均为Nginx服务器。
可选地,根据本发明的视频直播系统,其中:所述移除指令为Nginx的drop指令,所述重加载指令为Nginx的reload指令
可选地,根据本发明的视频直播系统,其中:所述第二服务器和第四服务器中存储有主配置文件,所述主配置文件通过include的方式引入目标直播的配置文件。
可选地,根据本发明的视频直播系统,其中:所述第二服务器和第四服务器通过修改目标直播的配置文件的后缀名,来使得主配置文件能否引入目标直播的配置文件,进而使得目标直播的直播配置项生效或失效。
可选地,根据本发明的视频直播系统,其中:所述第二服务器和第四服务器均与主内容分发网络和备内容分发网络连接,以便任一内容分发网络出现故障时,将视频流推送到另一内容分发网络。
根据本发明实施例的视频直播方案,通过双推流以及每个服务器组设置两个服务器的方式,使得每场直播都有双路数据可选择,并且能够避免多场直播同时进行的场景下直播链路切换不成功的情况,即使某场直播的一路的推流端发生故障,也可以通过另一路数据向客户端提供稳定的直播服务,真正做到了直播的高可用,减小了直播中断的风险,进而极大提高用户体验度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的视频直播系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的视频直播系统100的示意图。如图1所示,视频直播系统100包括主服务器组120、备服务器组130和监控服务器140,主服务器组包括第一服务器121和第二服务器122,备服务器组130包括第三服务器131和第四服务器132。
在一种实现方式中,第一服务器121、第二服务器122、第三服务器131、第四服务器132均为Nginx服务器。即,本发明实施例的视频直播系统是基于Nginx的推流直播架构。现有的基于Nginx的推流直播架构采用的是1路推流,且在该路推流中采用的是1个Nginx服务器。而本发明实施例采用的是多路(例如2路)推流,且每路包括两个Nginx服务器。
第一服务器121与主推流设备111连接,适于接收目标直播对应的主推流设备111推送的视频流,并将视频流发送(转推送)到第二服务器122。第三服务器131与备推流设备112连接,适于接收目标直播对应的备推流设备112推送的视频流,并将视频流发送(转推送)到第四服务器132。
推流设备(主推流设备111和备推流设备112)适于从视频采集端(图中未示出)获取视频流数据,主推流设备111连接第一视频采集端,备推流设备112连接第二视频采集端。这里,推流设备例如可以采用实时消息传输协议(Real Time Messaging Protocol,RTMP)方式进行数据(视频流)推送,当然也可以采用任何已知的传输方式,本发明实施例不受限于此。
需要说明的是,图1中仅示出了1个主推流设备111和1个备推流设备112,该主推流设备111和备推流设备112对应的是一场视频直播(称为目标直播),主推流设备连接第一视频采集端,备推流设备连接第二视频采集端。而该视频直播系统100可以适用于多场视频直播同时进行的情形,对于多场视频直播中的每场视频直播,都会有1套推流设备(主推流设备和备推流设备,主推流设备连接一个视频采集端,备推流设备连接另一个视频采集端),每场直播的主推流设备均与第一服务器121连接,备推流设备均与第二服务器122连接。也就是说,在多场视频直播同时进行的情况下,主服务器组120连接多个主推流设备,备服务器组130连接多个备推流设备。
还需要说明的是,本发明实施例中推流端包括推流设备和视频采集端,推流设备发生故障是指推流端发生故障,即推流设备发生故障包括推流设备自身发生故障和与推流设备连接的视频采集端发生故障。
第二服务器122与内容分发网络(Content Delivery Network,CDN)连接,适于接收第一服务器121发送的视频流,并基于目标直播在第二服务器122中生效的直播配置项将视频流推送到内容分发网络,其中,目标直播在第二服务器122中初始的直播配置项处于生效状态。
第四服务器132与内容分发网络连接,适于接收第三服务器131发送的视频流,并基于目标直播在第四服务器132中的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播在第四服务器132中初始的直播配置项处于失效状态。
内容分发网络可以是一个内容分发网络,也可以包括两个内容分发网络(主分发网络和备内容分发网络),图1中示出的是两个,分别为主CDN和备CDN。
目标直播的直播配置项处于失效状态,是指服务器中没有该目标直播的直播配置项,或者该目标直播的直播配置项未生效,此种情况下,服务器(第二服务器122和第四服务器144)即使接收到视频流,也不会将视频流推送到内容分发网络。也就是说,在初始时:目标直播在第二服务器122中的直播配置项处于生效状态,则主推流设备111将视频流推送到第一服务器121,第一服务器121将视频流转推送到第二服务器122,第二服务器122将视频流推送到内容分发网络;目标直播在第四服务器132中的直播配置项处于失效状态,则备推流设备112将视频流推送到第三服务器131,第三服务器131将视频流转推送到第四服务器132,第四服务器132不会将视频流推送到内容分发网络。
在基于Nginx的推流直播架构中,Nginx服务器会基于配置项进行工作,通过加载配置文件,会使得配置文件中的配置项在Nginx服务器中生效。Nginx服务器的主配置文件为nginx.conf,nginx.conf中包括支持RTMP的一些默认配置,具体内容可参考相关现有技术,在此不做赘述。
在本发明实施例中,第一服务器121和第三服务器131中均有各自的nginx.conf,可以在nginx.conf中进行配置,使得第一服务器121和第三服务器131接收到视频流时,转推送到第二服务器122和第四服务器132即可,不需要其他特殊配置。
第二服务器122和第四服务器132中也有各自的nginx.conf,nginx.conf中除了包括常规的配置项之外,还通过include(可翻译为包含)的方式引入目标直播的配置文件,Nginx的include方式可以参考现有的Nginx配置规范。
在一种实现方式中,在第二服务器122和第四服务器132中均设置一个配置目录/root/thirdconf/,将各场直播的配置文件均存放在该目录下,即每场直播在该目录下分别有一个配置文件,配置文件以直播标识(例如直播房间号roomid)命名,后缀名为.conf,则配置文件的完整命名为roomid.conf。例如,直播A的房间号为A,则配置文件为A.conf,直播B的房间号为B,则配置文件为B.conf。
当第二服务器122和第四服务器132连接两个内容分发网络(主CDN和备CDN)时,roomid.conf的内容可以为:
push rtmp://cdn主推流地址name=roomid;
push rtmp://cdn备推流地址name=roomid;
其中,cdn主推流地址即主CDN的推流地址,cdn备推流地址即备CDN的推流地址。
当然,如果当第二服务器122和第四服务器132仅连接1个内容分发网络时,则roomid.conf的内容可以为:
push rtmp://cdn推流地址name=roomid;
然后,在nginx.conf中增加如下配置:include/root/thirdconf/*.conf。如此,在服务器在加载nginx.conf时,roomid.conf中的配置项会在该服务器中生效。
在本发明实施例中,可以通过修改第二服务器122或第四服务器132中目标直播的配置文件的后缀名,来使得主配置文件能否引入目标直播的配置文件,进而使得目标直播的直播配置项生效或失效。在某个服务器中,主配置文件能够引入目标直播的配置文件,则目标直播的直播配置项在该服务器中生效;主配置文件不能够引入目标直播的配置文件,则目标直播的直播配置项在该服务器中不能生效(或称为失效)。在一种实现方式中,可以将服务器中的roomid.conf修改为roomid.conf.bak,修改之后,在加载nginx.conf时,由于查找不到roomid.conf,则相应直播的直播配置项就不会在该服务器中生效。
例如目标直播为直播A,其在第二服务器122中的直播配置项初始处于生效状态,即在第二服务器122的配置目录中存在A.conf,其在第四服务器132中的直播配置项初始处于失效状态,即在第四服务器132的配置目录中将A.conf修改为A.conf.bak。
监控服务器140与主推流设备111、备推流设备112、主服务器组120和备服务器组130连接,适于检测故障和下发主备切换指令,当监控到主推流设备111发生故障时,发送主备切换指令到主服务器组120和备服务器组130,以便将第二服务器122中目标直播的直播配置项设置为失效状态,将第四服务器132中目标直播的直播配置项设置为生效状态,从而将直播链路由主服务器组120切换到备服务器组130。
需要说明的是,本发明实施例中,“主”和“备”是相对的概念,当前处于直播的链路中的设备称为“主”,当前不处于直播的链路中的设备称为“备”。执行主备切换之后,备设备(备推流设备、备服务器组)就成为了主设备,主设备(主推流设备、主服务器组)就成为了备设备。
具体地,主服务器组120接收到主备切换指令后,执行如下操作:
1)第二服务器122基于主备切换指令修改目标直播在第二服务器122中的配置文件;
具体地,第二服务器122修改目标直播的配置文件的后缀名,使得主配置文件不能引入目标直播的配置文件。如前所述,对于目标直播A,可以将第二服务器122的配置目录中的A.conf修改为A.conf.bak,从而主配置文件nginx.conf不能引入A.conf。
2)第一服务器121基于主备切换指令执行移除指令,以移除目标直播在第一服务器121到第二服务器122之间的直播链路;
在第一服务器121采用Nginx服务器时,第一服务器121通过nginx rtmp controlmodule(控制器模块)的drop指令移除掉目标直播在第一服务器121到第二服务器122之间的直播链路,对应的http请求例如为:
http://server地址/control/drop/client?app=APP&name=NAME;
drop指令中各字段的含义具体可参见Nginx规范,本领域技术人员根据需要可以合理设置各字段,这里不做赘述。需要说明的是,基于Nginx服务器的自身机制,在执行drop指令移除掉一个链路后,Nginx服务器会在预定时间(默认是3秒,具体可以根据具体需要进行设置)后自动重试(push_reconnect),以重新建立链路。
也就是说,第一服务器121通过执行移除指令移除与第二服务器122之间的直播链路后,在预定时间后,会重新建立与第二服务器122之间的直播链路。
3)第二服务器122执行重加载指令,使目标直播的直播配置项在第二服务器122中失效。
在第二服务器122采用Nginx服务器时,重加载指令为Nginx的reload指令,具体为:nginx-s reload。由于在步骤1)中修改了目标直播的配置文件的后缀名,主配置文件中则不能引入目标直播的配置文件,从而在重加载之后,使得目标直播的直播配置项在第二服务器122中失效,第二服务器122接收到视频流后,不会将其推送到内容分发网络。
类似地,备服务器组130接收到主备切换指令后,执行如下操作:
1)第四服务器132基于主备切换指令修改目标直播在第四服务器132中的配置文件;
具体地,第四服务器132修改目标直播的配置文件的后缀名,使得主配置文件能够引入目标直播的配置文件。如前所述,对于目标直播A,可以将第四服务器132的配置目录中的A.conf.bak修改为A.conf,从而主配置文件nginx.conf能够引入A.conf。
2)第三服务器131基于主备切换指令执行移除指令,以移除目标直播在第三服务器131到第四服务器132之间的直播链路,例如,通过nginx rtmp control module(控制器模块)的drop指令移除掉目标直播在第三服务器131到第四服务器132之间的直播链路。
同样,第三服务器131通过执行移除指令移除与第四服务器132之间的直播链路后,在预定时间后,会重新建立与第四服务器132之间的直播链路。
3)第四服务器132执行重加载指令,使目标直播的直播配置项在第四服务器132中生效。
由于在步骤1)中修改了目标直播的配置文件的后缀名,主配置文件中则能够引入目标直播的配置文件,从而在重加载之后,使得目标直播的直播配置项在第四服务器132中失效,第四服务器132接收到视频流后,会将其推送到内容分发网络。
通过上述操作,便成功的将目标视频的直播链路由主服务器组120切换到了备服务器组130。
如前所述,在视频直播系统100中,第二服务器122和第四服务器132均与内容分发网络连接,然后,客户端与内容分发网络连接,通过内容分发网络获取直播视频流进行观看。在一种实现方式中,该内容分发网络为1个内容分发网络。在另一种实现方式中,该内容分发网络为2个内容分发网络,分别为主内容分发网络和备内容分发网络,主内容分发网络和备内容分发网络由不同的直播CDN服务商所提供,这样,任一内容分发网络出现故障时,服务器会将视频流推送到另一内容分发网络。
具体地,可以在第二服务器122和第四服务器132中增加切换逻辑,默认使用其中1个内容分发网络,例如默认使用主内容分发网络。当检查到主内容分发网络出现故障时,切换到备内容分发网络,即将视频流由原先推送到主内容分发网络,切换为推送到备内容分发网络。同样,这里的“主”、“备”也是相对的概念,当前处于直播链路中的内容分发网络为主内容分发网络,当前不处于直播链路中的内容分发网络为备内容分发网络。
需要说明的是,在执行Nginx服务器组的主备切换时,由于采用了drop指令,所以对于直播连续性来说,会出现一个瞬间中断的现象,这个对于观看端体验,是否会卡顿,取决于cdn服务器的处理。一般cdn厂商对于直播都支持抢断逻辑,这种抢断方式由cdn服务器程序处理,所以不存在连续性中断。对于使用者也很简单,修改一个推流地址的一个递增值参数即可。比如covernum(覆盖数),当推流地址这个值大的一方会自动抢断该值小的一方。如此,能达到切换用户观看无感知的体验。
以上是本发明的较佳实施例,以下介绍本发明的一个可选实施例。
在可选实施例中,也是采用双路推流,但每一路采用单Ngnix,即每一路只有一个Ngnix服务器。可选实施例的视频直播系统具体包括:主推流设备、主Nginx服务器、备推流设备、备Nginx服务器和监控服务器。
主推流设备适于将目标直播的视频流推送到主Nginx服务器,主Nginx服务器适于在目标直播的直播配置项生效时,将视频流推送到内容分发网络,其中,在主Nginx服务器中,目标直播的直播配置项初始处于生效状态。
备推流设备适于将目标直播的视频流推送到备Nginx服务器,备Nginx服务器适于在目标直播的直播配置项生效时,将视频流推送到内容分发网络,其中,在备Nginx服务器中,目标直播的直播配置项初始处于失效状态。
主Nginx服务器和备Nginx服务器中有各自的nginx.conf,nginx.conf中除了包括常规的配置项之外,还通过include的方式引入目标直播的配置文件。
在主Nginx服务器和备Nginx服务器中均设置一个配置目录/root/thirdconf/,将各场直播的配置文件均存放在该目录下,即每场直播在该目录下分别有一个配置文件,配置文件以直播标识(例如直播房间号roomid)命名,后缀名为.conf,则配置文件的完整命名为roomid.conf。roomid.conf具体包括的内容可参见上述较佳实施例。然后,在nginx.conf中增加如下配置:include/root/thirdconf/*.conf。如此,在服务器在加载nginx.conf时,roomid.conf中的配置项会在该服务器中生效。
可以通过修改主Nginx服务器和备Nginx服务器中目标直播的配置文件的后缀名,来使得主配置文件能否引入目标直播的配置文件,进而使得目标直播的直播配置项生效或失效。
监控服务器监控到主推流设备发生故障时,发送主备切换指令到主Nginx服务器和备Nginx服务器,以便将主Nginx服务器中目标直播的直播配置项设置为失效状态,将备Nginx服务器中目标直播的直播配置项设置为生效状态,从而将直播链路由主Nginx服务器切换到备Nginx服务器。
具体地,主Nginx服务器接收到主备切换指令后,执行如下操作:
11)主Nginx服务器基于主备切换指令修改目标直播在主Nginx服务器中的配置文件,例如,主Nginx服务器修改目标直播的配置文件的后缀名,使得主配置文件不能引入目标直播的配置文件。
12)主Nginx服务器基于主备切换指令执行移除指令,以移除目标直播在主Nginx服务器到内容分发网络之间的直播链路;
主Nginx服务器通过执行移除指令移除与内容分发网络之间的直播链路后,在预定时间后,会重新建立与内容分发网络之间的直播链路。
13)主Nginx服务器执行重加载指令,使目标直播的直播配置项在主Nginx服务器中失效。
类似地,备Nginx服务器接收到主备切换指令后,执行如下操作:
21)备Nginx服务器基于主备切换指令修改目标直播在备Ngix服务器中的配置文件,例如,备Nginx服务器修改目标直播的配置文件的后缀名,使得主配置文件能够引入目标直播的配置文件。
22)备Nginx服务器基于主备切换指令执行移除指令,以移除目标直播在备Nginx服务器到内容分发网络之间的直播链路;
备Nginx服务器通过执行移除指令移除与内容分发网络之间的直播链路后,在预定时间后,会重新建立与内容分发网络之间的直播链路。
23)备Nginx服务器执行重加载指令,使目标直播的直播配置项在主Nginx服务器中生效。
通过上述操作,便将目标视频的直播链路由主Nginx服务器切换到了备Nginx服务器。
对于视频直播系统只执行一场视频直播的情况下,上述切换方案能够成功实现。但是,本申请发明人发现,对于视频直播系统同时执行多场视频直播的情况下,上述切换方案却会出现失败的情况。经仔细分析和反复试验后,发现失败的原因在于:
假设同时存在两场直播(直播A和直播B),直播A对应的推流端发生故障,Nginx服务器先执行drop指令,移除掉直播A的链路,然后执行reload指令,能够将直播A的链路进行切换。执行reload指令之后,会产生新的进程,直播A的链路由新进程处理,直播B的进程仍然由之前的进程(旧进程)处理。
之后,直播B对应的推流端也发生了故障,需要主备切换,由于之前已经reload了,此刻再执行的drop操作只对新进程下的链接有效,想drop掉直播B的链接,已经不可能了,执行reload指令也就不能使得直播B的配置文件生效,从而使得直播B的链路切换失败。
而上述较佳实施例中,每一路有两个服务器,第一个服务器执行drop指令,第二个服务器执行reload指令,由于第二个服务器没有执行过drop指令,所以,无论何时执行reload指令都会执行成功,从而能够适应多场直播同时进行的场景。
本发明实施例的视频直播系统中,第一服务器121、第二服务器122、第三服务器131和第四服务器132均可以实现为计算设备,例如实现为图2所示的计算设备200。图2示出了根据本发明一个实施例的计算设备200的结构图。如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。在根据本发明的计算设备200中,应用222包括执行视频直播处理的多条程序指令。
计算设备200还可以包括储存设备232和储存接口总线234,储存设备232包括可移除储存器236和不可移除储存器238。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
综上所述,本发明实施例的视频直播系统,采用多路推流,以及多公有云服务商,无论是推流设备发生故障还是公有云服务商发生故障,直播不会中断,整个过程对用户无感知,真正做到了直播的高可用。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的较佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
Claims (10)
1.一种视频直播系统,包括主服务器组、备服务器组和监控服务器,其中:
所述主服务器组包括:
第一服务器,适于接收目标直播对应的主推流设备推送的视频流,并将视频流发送到第二服务器;
第二服务器,适于接收第一服务器发送的视频流,并基于目标直播的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播初始的直播配置项处于生效状态;
所述备服务器组包括:
第三服务器,适于接收目标直播对应的备推流设备推送的视频流,并将视频流发送到第四服务器;
第四服务器,适于接收第三服务器发送的视频流,并基于目标直播的生效的直播配置项将视频流推送到内容分发网络,其中,目标直播初始的直播配置项处于失效状态;
所述监控服务器,适于监控到主推流设备发生故障时,发送主备切换指令到主服务器组和备服务器组,以便将第二服务器中目标直播的直播配置项设置为失效状态,将第四服务器中目标直播的直播配置项设置为生效状态。
2.如权利要求1所述的系统,其中:
所述第一服务器适于基于主备切换指令执行移除指令,以移除目标直播在第一服务器到第二服务器之间的直播链路;
所述第二服务器适于基于主备切换指令修改目标直播的配置文件,并执行重加载指令,以使目标直播的直播配置项失效。
3.如权利要求2所述的系统,其中,第一服务器通过执行移除指令移除与第二服务器之间的直播链路后,在预定时间后重新建立与第二服务器之间的直播链路。
4.如权利要求1至3中任一项所述的系统,其中:
所述第三服务器适于基于主备切换指令执行移除指令,以移除目标直播在第三服务器到第四服务器之间的直播链路;
所述第四服务器适于基于主备切换指令修改目标直播的配置文件,并执行重加载指令,以使目标直播的直播配置项生效。
5.如权利要求4所述的系统,其中,第三服务器通过执行移除指令移除与第四服务器之间的直播链路后,在预定时间后重新建立与第四服务器之间的直播链路。
6.如权利要求1至5中任一项所述的系统,其中,所述第一服务器、第二服务器、第三服务器、第四服务器均为Nginx服务器。
7.如权利要求1至6中任一项所述的系统,其中,所述移除指令为Nginx的drop指令,所述重加载指令为Nginx的reload指令。
8.如权利要求1至7中任一项所述的系统,其中,所述第二服务器和第四服务器中存储有主配置文件,所述主配置文件通过include的方式引入目标直播的配置文件。
9.如权利要求8所述的系统,其中,所述第二服务器和第四服务器通过修改目标直播的配置文件的后缀名,来使得主配置文件能否引入目标直播的配置文件,进而使得目标直播的直播配置项生效或失效。
10.如权利要求1至9中任一项所述的系统,其中,所述第二服务器和第四服务器均与主内容分发网络和备内容分发网络连接,以便任一内容分发网络出现故障时,将视频流推送到另一内容分发网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111208102.9A CN114095739B (zh) | 2021-10-18 | 2021-10-18 | 一种视频直播系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111208102.9A CN114095739B (zh) | 2021-10-18 | 2021-10-18 | 一种视频直播系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114095739A true CN114095739A (zh) | 2022-02-25 |
CN114095739B CN114095739B (zh) | 2023-08-01 |
Family
ID=80297127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111208102.9A Active CN114095739B (zh) | 2021-10-18 | 2021-10-18 | 一种视频直播系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114095739B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114390324A (zh) * | 2022-03-23 | 2022-04-22 | 阿里云计算有限公司 | 视频处理方法、系统以及云转播方法 |
CN114860370A (zh) * | 2022-05-17 | 2022-08-05 | 聚好看科技股份有限公司 | 一种显示设备、服务器及软件开发工具包切换方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008177710A (ja) * | 2007-01-17 | 2008-07-31 | Nec Corp | メディアサービスシステム、メディアサービス装置及びそれらに用いるlan冗長化方法 |
US20100138531A1 (en) * | 2007-06-26 | 2010-06-03 | Thomson Licensing | Real time protocol stream migration |
WO2011064492A1 (fr) * | 2009-11-27 | 2011-06-03 | France Telecom | Procede de basculement d'un hss primaire sur un hss de secours dans un reseau ip |
US20120060052A1 (en) * | 2010-09-04 | 2012-03-08 | Cisco Technology, Inc. | System and method for providing media server redundancy in a network environment |
JP2012147364A (ja) * | 2011-01-14 | 2012-08-02 | Hitachi Kokusai Electric Inc | ビデオサーバシステム |
CN103138983A (zh) * | 2011-12-01 | 2013-06-05 | 苏州达联信息科技有限公司 | 一种视频分发网络全局服务器的主备切换方法及装置 |
CN104902289A (zh) * | 2015-06-29 | 2015-09-09 | 秦永红 | 一种rtmp流媒体直播系统热备份的设计方法及其系统 |
CN105872568A (zh) * | 2015-11-19 | 2016-08-17 | 乐视云计算有限公司 | 基于云直播平台传输视频数据的方法和装置 |
US20190007475A1 (en) * | 2017-07-03 | 2019-01-03 | At&T Intellectual Property I, L. P. | Transport Layer Network Service for Live Content Broadcasting |
CN109428864A (zh) * | 2017-08-30 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 提高nginx-rtmp拉流服务质量的方法及装置 |
-
2021
- 2021-10-18 CN CN202111208102.9A patent/CN114095739B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008177710A (ja) * | 2007-01-17 | 2008-07-31 | Nec Corp | メディアサービスシステム、メディアサービス装置及びそれらに用いるlan冗長化方法 |
US20100138531A1 (en) * | 2007-06-26 | 2010-06-03 | Thomson Licensing | Real time protocol stream migration |
WO2011064492A1 (fr) * | 2009-11-27 | 2011-06-03 | France Telecom | Procede de basculement d'un hss primaire sur un hss de secours dans un reseau ip |
US20120060052A1 (en) * | 2010-09-04 | 2012-03-08 | Cisco Technology, Inc. | System and method for providing media server redundancy in a network environment |
JP2012147364A (ja) * | 2011-01-14 | 2012-08-02 | Hitachi Kokusai Electric Inc | ビデオサーバシステム |
CN103138983A (zh) * | 2011-12-01 | 2013-06-05 | 苏州达联信息科技有限公司 | 一种视频分发网络全局服务器的主备切换方法及装置 |
CN104902289A (zh) * | 2015-06-29 | 2015-09-09 | 秦永红 | 一种rtmp流媒体直播系统热备份的设计方法及其系统 |
CN105872568A (zh) * | 2015-11-19 | 2016-08-17 | 乐视云计算有限公司 | 基于云直播平台传输视频数据的方法和装置 |
US20190007475A1 (en) * | 2017-07-03 | 2019-01-03 | At&T Intellectual Property I, L. P. | Transport Layer Network Service for Live Content Broadcasting |
CN109428864A (zh) * | 2017-08-30 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 提高nginx-rtmp拉流服务质量的方法及装置 |
Non-Patent Citations (1)
Title |
---|
郑东升;: "高可用性互联网直播视频推流系统的构建", 中国有线电视, no. 07 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114390324A (zh) * | 2022-03-23 | 2022-04-22 | 阿里云计算有限公司 | 视频处理方法、系统以及云转播方法 |
CN114860370A (zh) * | 2022-05-17 | 2022-08-05 | 聚好看科技股份有限公司 | 一种显示设备、服务器及软件开发工具包切换方法 |
CN114860370B (zh) * | 2022-05-17 | 2024-03-29 | 聚好看科技股份有限公司 | 一种显示设备、服务器及软件开发工具包切换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114095739B (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10547667B1 (en) | Heterogeneous cloud processing utilizing consumer devices | |
US7107329B1 (en) | In networks of interconnected router nodes for routing data traffic, a method of and system for imperceptibly upgrading router node software and the like without traffic interruption | |
US8898311B2 (en) | Data communication method and information processing device | |
CN114095739A (zh) | 一种视频直播系统 | |
US20150172345A1 (en) | System and method for efficient delivery of repetitive multimedia content | |
JP2004280738A (ja) | 代理応答装置 | |
US10404568B2 (en) | Agent manager for distributed transaction monitoring system | |
CN112398689A (zh) | 网络恢复方法、装置、存储介质及电子设备 | |
US20220124159A1 (en) | Fast Session Restoration for Latency Sensitive Middleboxes | |
US10931601B2 (en) | Method and apparatus for conditional broadcasting of network configuration data | |
US8676751B2 (en) | High availability database systems and methods | |
US9015830B2 (en) | Verification apparatus and verification method | |
US9426022B2 (en) | SEA failover mechanism with minimized packet losses | |
AU2021343451B2 (en) | Configurable access-based cache policy control | |
US20240089352A1 (en) | Udp message distribution method, udp message distribution apparatus, electronic device and computer readable storage medium | |
CN114553693A (zh) | 网关升级方法及装置 | |
CN111416851A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
WO2017129107A1 (zh) | 一种图像绘制的方法、相关设备及系统 | |
US10764354B1 (en) | Transmitting data over a network in representational state transfer (REST) applications | |
JP2005018300A (ja) | コンテンツ配信システム | |
CN116193481A (zh) | 一种5g核心网处理方法、装置、设备及介质 | |
CN113783768B (zh) | 一种群组控制方法、群组控制装置和通信系统 | |
CN116233481A (zh) | 一种媒体流传输方法、媒体服务器以及通信系统 | |
CN111416852A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
CN113536168A (zh) | 组件处理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |