一种rtmp流媒体直播系统热备份的设计方法及其系统的制作方法
【技术领域】
[0001]本发明涉及流媒体系统设计领域,具体地,尤其涉及一种RTMP流媒体直播系统热备份的设计方法及其系统。
【背景技术】
[0002]在流媒体直播系统中,正在直播的RTMP流媒体通过网络传输给用户,观看该直播流的用户可能随时接入该网络。直播系统内RTMP主播设备可能通过专网或ADSL网分布的不同的地方,因为RTMP协议对音视频进行主动推送,每台开启的RTMP主播设备都会向指定IP的RTMP流媒体服务器进行推流,当RTMP流媒体服务器出现硬件、软件或网络故障时,必定无法进行流媒体的存储和直播。
[0003]目前,直播系统的架设通常采用如下方式去解决上述问题:
1、同时架设两台完全相同的RTMP流媒体服务器,RTMP主播设备同时向两台流媒体服务器进行推送音视频流,当RTMP流媒体服务器I发生故障时,直播起用RTMP流媒体服务器2。
2、同时架设两台完全相同的RTMP流媒体服务器,RTMP主播设备向主RTMP流媒体服务器进行推送音视频流,当主RTMP流媒体服务器发生故障时,由备用RTMP流媒体服务器接管RTMP主播设备。
但是,以上处理方法存在不足的地方:
对于方式I的处理方法,可解决RTMP流媒体服务器发生故障时的直播问题,但是每台RTMP主播设备都必需发送两份音视频流到流媒体服务器,这样将增加RTMP主播设备的负荷且上行网络带宽也将随之增加一倍,当系统内主播设备数量增加时,很容易造成系统网络拥塞。
[0004]对于方式2的处理方法,主RTMP流媒体服务器和备用RTMP流媒体服务器运行时必需解决数据同步这一复杂问题及主、备服务器切换时业务的接管问题。另外,前端大量RTMP主播设备有些是通过ADSL网络分布在不同地方,RTMP主播设备并不清楚主RTMP流媒体服务器发生故障,此时,备用RTMP流媒体服务器必需通知RTMP主播设备,但是RTMP主播设备并没有固定IP地址,这将涉及到极复杂的公网穿透技术处理问题与系统的网络设计问题等。
【发明内容】
[0005]本发明目的在于解决上述问题,从而提出了一种RTMP流媒体直播系统热备份的设计方法,同时本发明也公开了一种RTMP流媒体直播系统热备份系统。
[0006]本发明的RTMP流媒体直播系统热备份系统包括RTMP主播设备、网络交换设备、主RTMP流媒体服务器、备用RTMP流媒体服务器和客户端,RTMP主播设备分别通过网络交换设备与主RTMP流媒体服务器及备用RTMP流媒体服务器相连,客户端对RTMP主播设备的访问,由主、备用RTMP流媒体服务器进行分发处理。
[0007]本发明的RTMP流媒体直播系统热备份的设计方法如下:包括以下步骤:
步骤1,主RTMP流媒体服务器与备用RTMP流媒体服务器先后启动,RTMP主播设备采集音视频数据,并将数据编码成H.264与AAC格式进行推送;
步骤2,RTMP主播设备自动检测主RTMP流媒体服务器是否发生故障;
步骤3,当RTMP主播设备检测跟主RTMP流媒体服务器不通,且备用RTMP流媒体服务器接通时,RTMP主播设备自动将音视频流切换到备用RTMP流媒体服务器,并强制编码成I帧数据进行发送,或不强制编码成I帧数据进行发送;
步骤4,当RTMP主播设备检测跟主RTMP流媒体服务器接通后,无论备用RTMP流媒体服务器是否接通,RTMP主播设备自动将音视频流切换到主RTMP流媒体服务器,并强制编码成I帧数据进行发送,或不强制编码成I帧数据进行发送。
[0008]上述步骤3、4中,如果存在主、备用RTMP流媒体服务器切换,则强制生成I帧关键帧;如果不存在主、备用RTMP流媒体服务器切换,则每隔预设定值来生成一个固定I帧。
[0009]进一步的,判断是否存在主、备RTMP流媒体服务器切换后,还应该包括:
判断预设定值的该段时间内网络视频在线播放是否存在视频丢帧现象;
如果不存在主、备用RTMP流媒体服务器切换,则将当前要生成的帧设置成为P帧,包括:
如果在该时间内存在网络丢失视频帧,且不存在主、备RTMP流媒体服务器切换,则将当前要生成的帧强制设置成I帧,并将预设定值缩短为原来的一半且取整。
[0010]上述主RTMP流媒体服务器和备用RTMP流媒体服务器运行软件系统完全相同,但必须具有不同的IP地址。
[0011]上述步骤3中,当系统的实时性要求严格时,发送主、备用RTMP流媒体服务器的切换,则强制编码成I帧数据进行发送,如果要求不严格时,则不强制编码成I帧数据进行发送,具体如下:
步骤3,当主播设备检测跟主RTMP流媒体服务器不通,且备用RTMP流媒体服务器接通时,RTMP主播设备自动将音视频流切换到备用RTMP流媒体服务器,并强制编码成I帧数据进行发送,当实时性要求不严格时,RTMP主播设备向备用RTMP流媒体服务器发送音视频数据时,并不用去强制编码成I帧数据进行发送,I帧数据的检测由备用RTMP流媒体服务器进行处理,或I帧数据的检测直接由客户端解码器进行处理。
[0012]上述步骤4中,当系统的实时性要求严格时,发送主、备用RTMP流媒体服务器的切换,则强制编码成I帧数据进行发送,如果要求不严格时,则不强制编码成I帧数据进行发送,具体如下:
步骤4,当主播设备检测跟主RTMP流媒体服务器接通后,无论备用RTMP流媒体服务器是否接通,主播设备自动将音视频流切换到主RTMP流媒体服务器,并强制编码成I帧数据进行发送,当实时性要求不严格时,RTMP主播设备向主RTMP流媒体服务器发送音视频数据时,并不用去强制编码成I帧数据进行发送,I帧数据的检测由主RTMP流媒体服务器进行处理,或I帧数据的检测直接由客户端解码器进行处理。
[0013]本发明提供的RTMP流媒体直播系统的设计方法可以解决系统上行带宽不足的问题。本发明具有以下优点:
1、主播设备采用RTMP协议,在公网上进行流媒体直播时,具有良好的网络穿透性。
[0014]2、主播设备具有动态编码功能,在出现主、备服务器切换时,可实时强制编码出I帧数据,具有良好的编码自适应性。
[0015]3、主播设备主动向RTMP流媒体服务器进行注册,并不需要RTMP主播设备具有固定IP地址,也能实时检测到RTMP流媒体服务器是否发生故障。
[0016]4、主RTMP流媒体服务器与备用RTMP流媒体服务器可部署在不同地方,在整个过程中流媒体服务器相互间并不需要通信,更无需像现有技术中的那样需要涉及到复杂的数据同步与业务接管问题。
[0017]5、主备份流媒体服务器的自动切换过程全部由前端RTMP主播设备完成,在整个直播系统部署时,并不会因为前端设备数量的增加而造成后端流媒体服务器的部署变复杂,也不会因此而增加后端流媒体服务器的切换开销。
【附图说明】
[0018]图1是本发明实施例的系统结构示意图。
[0019]图2是本发明实施例的方法流程图。
[0020]图3是本发明实施例的强制I帧编码模型原理结构示意图。
【具体实施方式】
[0021]以下结合附图对本发明的优选实施例进行说明,应当理解此处所描述的优选实施例仅用于说明和解释本发明并不用于限定本发明。
[0022]参见附图1,它示出了本实施例的RTMP流媒体直播系统热备份系统,所有RTMP主播设备101分别通过网线与主RTMP流媒体服务器1031及备用RTMP流媒体服务器1032相连,客户端104对RTMP主播设备101的访问,由主、备RTMP流媒体服务器1031、1032进行分发处理。系统部署时,RTMP主播设备101与网络交换设备102位于家庭、学校、公司等流媒体发布系统内部,再通过ADSL或专网进行流媒体数据上传。主、备RTMP流媒体服务器1031,1031位于运营商机房,客户端104位于能进行公网访问的各地。由图1中可知当主RTMP流媒体服务器1031发生硬件、软件或网络故障时,RTMP主播设备101自动将流媒体数据切换到备用RTMP流媒体服务器1032。本系统的处理方式说明如下:
1、所有RTMP主播设备101开始运行时都向主RTMP流媒体服务器1031进行注册,然后RTMP连接;
2、客户端104向流媒体服务器发起直播请求时,主RTMP流媒体服务器1031分析请求信令,确认所请求的RTMP主播设备101,检测网络带宽及预设定阀值,并向RTMP主播设备101发出直播请求。
[0023]3、当RTMP主播设备101接收到主RTMP流媒体服务器1031的直播请求信令并进行分析,跟据分析实时进行相应的流媒体直播。
[0024]4、如果当主RTMP流媒体服务器1031出现故障时,RTMP主播设备101接收到客户端104的直播请求后,RTMP主播设备101自动将音视频流切换到备用RTMP流媒体服务器1032,并进行流媒体的分发处理。
[0025]5、如果当主RTMP流媒体服务器1031故障恢复正常时,RTMP主播设备101自动将音视频流切换到主RTMP流媒体服务器1031,并进行流媒体的分发处理,且备用RTMP流媒体服务器1032停止工作。
[0026]在本实施例中,在流媒体直播过程中,根据是否出现主RTMP流媒体服务器1031故障,RTMP主播设备101进行向主、备RTMP流媒体服务器1031、1032推流自适应切换处理。所以,本发明实施例提供的方法在不增加系统复杂度的前提下,可以解决当出现RTMP流媒体服务器故障问题时,流媒体直播系统的可靠性、稳定性。
[0027]图2是本实施例的设计方法流程图,具体如下:
201、采集音视频数据,并将数据编码成H.264与AAC格式;
在进行媒体数据传输时,为了节省带宽,跟据RTMP协议要求,将视频数据编码成H.264(high profile)格式,音频数据编码成AAC格式,并为音视频数据分别打上时间戳,以便于进行媒体流直播时的音视频同步处理。视频编码过程中,可分别编码关键帧I帧及预测帧P帧,也可分别编码预定分辨率、帧率、码率的视频帧。RTMP主播设备101将音视频数据
流按照RTMP协议所要求的方式分别进行数据打包,
#define RTMP_PACKET_TYPE_AUD10x08
#define RTMP_PACKET_TYPE_VIDEO0x09
#define RTMP_PACKET_TYPE_INFO0x12
typedef struct RTMPPacket{
uint8_t m—headerType; uint8_t m—packetType; int m_nChanneI; uint32_t m—nTimeStamp; int32_t m_nInfoField2; uint32_t m—nBodySize; uint32_t m—nBytesRead; char 氺m—body;
} RTMPPacket;
并设置专门的线程函数进行流媒体数据的发送。
[0028]202、RTMP主播设备101检测主RTMP流媒体服务器1031是否发生故障;
RTMP主播设备101实时检测主RTMP流媒体服务器1031是否发生故障情况,当检测到bMainSrv =0时,则表示主RTMP流媒体服务器1031发生故障,在预设定的延时时间后,RTMP主播设备101自动将切换到备用RTMP流媒体服务器1032且bSubRuning=l,此时,RTMP主播设备101依然实时检测主RTMP流媒体服务器1031,如果检测到bMainSrv =1,则表示主RTMP流媒体服务器1031故障恢复正常,当bSubRuning=l时,则表示备用RTMP流媒体服务器1032正在运行,RTMP主播设备101应自动切回到RTMP主RTMP流媒体服务器1031,备用RTMP流媒体服务器1032应停止工作,当bSubRuning=0时,则表示备用RTMP流媒体服务器1032没有运行,主RTMP流媒体服务器1031已经接管备用RTMP流媒体服务器1032的工作,RTMP主播设备101不作任何切换操作。
[0029]其中RTMPInfo说明如下: typedef struct TRtmpInfo{char svrAddr[100];bool bPubVideo;bool bPubAud1;
bool bMainSrv;//主服务器是否故障 bool bSubRuning;//备用服务器是否运行 }TRtmpInfo;
203、主RTMP或备用RTMP流媒体服务器请求信令分析并进行流媒体分发;
主或备用RTMP流媒体服务器1031、1032收到客户端104的用户接入请求后,先分析该请求的流是否已经向流媒体服务器在发送流,如果没有向流媒体服务器发送流,则先将该流请求转发给RTMP主播设备101,当RTMP主播设备101启动向流媒体服务器推送RTMP流后,流媒体服务器将此流分发给所请求的客户端104 ;如果有向流媒体服务器发送流,则不必再将该流请求转发给RTMP主播设备101,流媒体服务器直接将对应的RTMP流分发给所请求的客户端104。
[0030]204、客户端104显示;
首先由客户端104发起RTMP流接入请求,当客户端104在预设时间段之内收到该流,则客户端104向流媒体服务器发送确认响应消息,以通知流媒体服务器客户端104接收到流媒体服务器发送的RTMP流。如果客户端104在预设时间段之内没有收到该视频帧,则客户端104向流媒体服务器发送丢失响应消息,以通知流媒体服务器客户端104没有接收到服务器发送的RTMP流。
[0031 ] 本实施例提供的方法,在流媒体直播过程中,RTMP主播设备101实时检测主RTMP流媒体服务器1031是否发生故障,实现流媒体直播系统自适应热备份操作。
[0032]图3是本实施例的强制I帧编码模型原理结构示意图,该方法包括:
301、采集视频数据,并将数据编码成H.264格式;
在进行媒体数据传输时,为了节省带宽,将视频数据编码成H.264 (high profile)格式。视频编码过程中,分别编码关键帧I帧及预测帧P帧,每隔一个预设定的G0P(Group ofPictures)值个数的视频帧生成一个I帧关键帧,即每隔GOP个P帧生成一个固定I帧。
[0033]302、如果存在主、备用RTMP流媒体服务器1031、1032切换,则要强制生成I帧关键帧;
因为主、备用RTMP流媒体服务器1031、1032切换时,RTMP主播设备101的编码模块并没有停止工作,在主、备RTMP流媒体服务器1031、1032切换过程中,RTMP主播设备101的编码帧不一定就是I帧,而解码端必需接收到I帧作为参考帧才能对后续的视频帧进行解码播放。
[0034]303、如果不存在主、备RTMP流媒体服务器切换,则每隔预设定值来生成一个固定I帧;
如果不存在主、备RTMP流媒体服务器1031、1032切换,则每隔预设定值来生成一个固定I帧。由于在同等视频效果的前提下,P帧的压缩比例要比I帧大很多,所以在没有新用户请求接入的时候,可以提高网络视频的压缩率,减少视频数据包的大小,从而降低网络视频传输的带宽压力。进一步地,判断是否存在主、备RTMP流媒体服务器1031、1032切换后,还包括: 判断预设定GOP值的该段时间内网络视频在线播放是否存在视频丢帧现象;
相应地,如果不存在主、备RTMP流媒体服务器1031、1032切换,则将当前要生成的帧设置成为P帧,包括:
如果在该时间内存在网络丢失视频帧,且不存在主、备RTMP流媒体服务器切换,则将当前要生成的帧强制设置成I帧,并将GOP缩短为原来的一半且取整。在丢包的情况下,为了快速恢复视频,将GOP值减小,以便保证视频解码播放时在线用户的观看效果。
[0035]如果在该时间内不存在网络丢失视频帧,且不存在主、备RTMP流媒体服务器切换,则将当前要生成的帧设置成P帧,且GOP为预设定值。
[0036]在本实施例中,在流媒体直播过程中,每隔预设定GOP值个数的视频帧生成一个关键帧I帧,并根据是否存在主、备RTMP流媒体服务器1031、1032切换、是否存在网络丢失视频帧,来进行强制生成I帧并动态调整GOP的值。所以,本发明实施例提供的方法在不影响用户观看视频效果的前提下,可以提高直播视频的压缩率,进而节省视频网络传输带宽。
[0037]以上结合具体实例描述了本发明的技术原理,这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明的构思和范围进行限定。在不脱离本发明设计构思的前提下,任何对本发明的技术方案做出的各种变型和改进,都将落入本发明的保护范围之内。
【主权项】
1.一种RTMP流媒体直播系统热备份的设计方法,其特征在于:包括以下步骤: 步骤1,主RTMP流媒体服务器与备用RTMP流媒体服务器先后启动,RTMP主播设备采集音视频数据,并将数据编码成H.264与AAC格式; 步骤2,RTMP主播设备自动检测主RTMP流媒体服务器是否发生故障; 步骤3,当RTMP主播设备检测跟主RTMP流媒体服务器不通,且备用RTMP流媒体服务器接通时,RTMP主播设备自动将音视频流切换到备用RTMP流媒体服务器,并强制编码成I帧数据进行发送,或不强制编码成I帧数据进行发送; 步骤4,当RTMP主播设备检测跟主RTMP流媒体服务器接通后,无论备用RTMP流媒体服务器是否接通,RTMP主播设备自动将音视频流切换到主RTMP流媒体服务器,并强制编码成I帧数据进行发送,或不强制编码成I帧数据进行发送。2.根据权利要求1所述的RTMP流媒体直播系统热备份的设计方法,其特征在于:所述的步骤3、4中,如果存在主、备用RTMP流媒体服务器切换,则强制生成I帧关键帧;如果不存在主、备用RTMP流媒体服务器切换,则每隔预设定值来生成一个固定I帧。3.根据权利要求2所述的RTMP流媒体直播系统热备份的设计方法,其特征在于:判断是否存在主、备RTMP流媒体服务器切换后,还包括: 判断预设定值的该段时间内网络视频在线播放是否存在视频丢帧现象; 如果不存在主、备用RTMP流媒体服务器切换,则将当前要生成的帧设置成为P帧,包括: 如果在该时间内存在网络丢失视频帧,且不存在主、备RTMP流媒体服务器切换,则将当前要生成的帧强制设置成I帧,并将预设定值缩短为原来的一半且取整。4.根据权利要求1所述的RTMP流媒体直播系统热备份的设计方法,其特征在于:所述步骤3:不强制编码成I帧数据进行发送时,I帧数据的检测由备用RTMP流媒体服务器进行处理,或I帧数据的检测直接由客户端解码器进行处理。5.根据权利要求1所述的RTMP流媒体直播系统热备份的设计方法,其特征在于:所述步骤4:不强制编码成I帧数据进行发送时,I帧数据的检测由备用RTMP流媒体服务器进行处理,或I帧数据的检测直接由客户端解码器进行处理。6.按权利要求1至5所述设计方法的RTMP流媒体直播系统热备份系统,包括能实现前述设计方法的RTMP主播设备、主RTMP流媒体服务器、备用RTMP流媒体服务器和客户端。
【专利摘要】本发明涉及一种RTMP流媒体直播系统热备份的设计方法及其系统,属于流媒体系统设计领域,其中方法的实现包括:主RTMP流媒体服务器与备用RTMP流媒体服务器先后启动,RTMP主播设备采集音视频数据并编码;RTMP主播设备检测主RTMP流媒体服务器是否接通;当RTMP主播设备检测跟主RTMP流媒体服务器不通,且备用RTMP流媒体服务器接通时,RTMP主播设备将音视频流切换到备用RTMP流媒体服务器;当RTMP主播设备检测跟主RTMP流媒体服务器接通后,无论备用RTMP流媒体服务器是否接通,RTMP主播设备将音视频流切换到主RTMP流媒体服务器。本发明的优点是可使对外提供流媒体直播服务的主RTMP流媒体服务器出现故障时,能及时切换到备用RTMP流媒体服务器,提升用户体验,增强系统的稳定性、可靠性。
【IPC分类】H04N21/24, H04N21/231, H04N21/647
【公开号】CN104902289
【申请号】CN201510364852
【发明人】秦永红
【申请人】秦永红
【公开日】2015年9月9日
【申请日】2015年6月29日