本发明涉及iptv、在线视频技术领域,具体涉及一种实现cmaf直播源自动主备切换的实现方法。
背景技术:
随着直播技术以及互联网直播业务的发展,用户对于直播延时的要求越来越苛刻。cmaf直播可以在保持了dash及hls优秀的cdn适用性的基础上将延时降低到了1-3秒。但因为其低延时特性,对时间戳要求十分精确,针对多机热备场景,需要有良好的机制保证主备服务器生成的直播流的时间戳一致性。
技术实现要素:
本发明为了克服以上技术的不足,提供了一种达到客户端无感知的cmaf直播源自动主备切换的实现方法。
本发明克服其技术问题所采用的技术方案是:
一种实现cmaf直播源自动主备切换的实现方法,包括步骤:
a)主备直播服务器通过udp协议组播查询同组的主备直播服务器,同组的主备直播服务器通过tcp协议短链接进行时间戳同步,主备直播服务器采用ntp协议进行服务器时间同步;
b)主备直播服务器从同一个组播接收mpeg-ts流格式的音视频流;
c)主直播服务器开始直播时先利用组播询问是否已有直播中的备直播服务器,若果有回应则从备直播服务器获取换算时间戳,并利用该换算时间戳生成cmaf的每帧的时间戳,如果没有回应或回应都为否则主直播服务器在处理第一针数据时将当前时间戳设置为换算时间戳并记录当前帧的源时间戳;
d)如果同组的主备直播服务器中已有服务器进行直播,则主动向正在直播的直播服务器发起tcp连接请求,并获取该直播服务器的换算时间戳与原帧起始时间戳;
e)每次mpeg-ts时间戳循环一次后,将换算时间戳增加一个mpeg-ts时间戳循环的时间;
f)利用时间戳换算公式fmp4时间戳=换算时间戳-原帧起始时间戳+当前帧ts时间戳,计算目标帧时间戳,即fmp4时间戳。
进一步的,将主备直播服务器设置虚拟ip地址,对外采用虚拟ip提供服务。
进一步的,主备直播服务器在音视频流的每次idr帧前判断当前帧时间戳与换算时间戳之间的差值,如果差值为设置音视频切片长度的正整数倍数,则将此idr帧以及之后的帧放到新的切片文件内。
进一步的,虚拟ip采用高可用负载均衡模式,主备直播服务器根据负载能力均分客户端请求。
进一步的,当主备直播服务器中某台服务器异常时,客户端请求全部分配到正常的直播服务器中。
本发明的有益效果是:cmaf直播中主备直播服务器切换时可以有效的同步主备直播服务器直播流的时间戳以及切片位置,并通过合适的负载均衡方式对外提供服务,从而达到了客户端无感知的cmaf主备切换。
具体实施方式
下面对本发明做进一步说明。
一种实现cmaf直播源自动主备切换的实现方法,包括步骤:
a)主备直播服务器通过udp协议组播查询同组的主备直播服务器,同组的主备直播服务器通过tcp协议短链接进行时间戳同步,主备直播服务器采用ntp协议进行服务器时间同步;
b)主备直播服务器从同一个组播接收mpeg-ts流格式的音视频流;
c)主直播服务器开始直播时先利用组播询问是否已有直播中的备直播服务器,若果有回应则从备直播服务器获取换算时间戳,并利用该换算时间戳生成cmaf的每帧的时间戳,如果没有回应或回应都为否则主直播服务器在处理第一针数据时将当前时间戳设置为换算时间戳并记录当前帧的源时间戳;
d)如果同组的主备直播服务器中已有服务器进行直播,则主动向正在直播的直播服务器发起tcp连接请求,并获取该直播服务器的换算时间戳与原帧起始时间戳;
e)每次mpeg-ts时间戳循环一次后,将换算时间戳增加一个mpeg-ts时间戳循环的时间;
f)利用时间戳换算公式fmp4时间戳=换算时间戳-原帧起始时间戳+当前帧ts时间戳,计算目标帧时间戳,即fmp4时间戳。
通过以上的方法,cmaf直播中主备直播服务器切换时可以有效的同步主备直播服务器直播流的时间戳以及切片位置,并通过合适的负载均衡方式对外提供服务,从而达到了客户端无感知的cmaf主备切换。
优选的,将主备直播服务器设置虚拟ip地址,对外采用虚拟ip提供服务,虚拟ip采用高可用负载均衡模式,主备直播服务器根据负载能力均分客户端请求。cmaf采用的是http进行分发,且每个切片在几百kb至几mb之间,为了确保客户端每次获取都能成功获取到切片,故采用虚拟ip地址以及负载均衡的方式,将每次客户端的请求首先通过虚拟ip地址统一分配,然后再根据主备服务器的负载从合适的服务器返回实际文件。
cmaf也是采用秒级小切片的直播格式,为了保证主备切换时直播不中断,需要同步主备直播服务器的切片时刻。首先保证每个切片都是从idr帧开始,然后以换算时间戳作为直播起始时间,每个指定间隔进行一次切片。因为idr帧每隔大约1秒出现一次,主备直播服务器的时间以及主备直播服务器接收并处理一帧的时间远低于1秒,因此可以保证主备直播服务器会在同一个idr帧前切片。因此,进一步的,主备直播服务器在音视频流的每次idr帧前判断当前帧时间戳与换算时间戳之间的差值,如果差值为设置音视频切片长度的正整数倍数,则将此idr帧以及之后的帧放到新的切片文件内。同时,当主备直播服务器中某台服务器异常时,客户端请求全部分配到正常的直播服务器中。
1.一种实现cmaf直播源自动主备切换的实现方法,其特征在于,包括步骤:
a)主备直播服务器通过udp协议组播查询同组的主备直播服务器,同组的主备直播服务器通过tcp协议短链接进行时间戳同步,主备直播服务器采用ntp协议进行服务器时间同步;
b)主备直播服务器从同一个组播接收mpeg-ts流格式的音视频流;
c)主直播服务器开始直播时先利用组播询问是否已有直播中的备直播服务器,若果有回应则从备直播服务器获取换算时间戳,并利用该换算时间戳生成cmaf的每帧的时间戳,如果没有回应或回应都为否则主直播服务器在处理第一针数据时将当前时间戳设置为换算时间戳并记录当前帧的源时间戳;
d)如果同组的主备直播服务器中已有服务器进行直播,则主动向正在直播的直播服务器发起tcp连接请求,并获取该直播服务器的换算时间戳与原帧起始时间戳;
e)每次mpeg-ts时间戳循环一次后,将换算时间戳增加一个mpeg-ts时间戳循环的时间;
f)利用时间戳换算公式fmp4时间戳=换算时间戳-原帧起始时间戳+当前帧ts时间戳,计算目标帧时间戳,即fmp4时间戳。
2.根据权利要求1所述的实现cmaf直播源自动主备切换的实现方法,其特征在于:将主备直播服务器设置虚拟ip地址,对外采用虚拟ip提供服务。
3.根据权利要求1所述的实现cmaf直播源自动主备切换的实现方法,其特征在于:主备直播服务器在音视频流的每次idr帧前判断当前帧时间戳与换算时间戳之间的差值,如果差值为设置音视频切片长度的正整数倍数,则将此idr帧以及之后的帧放到新的切片文件内。
4.根据权利要求2所述的实现cmaf直播源自动主备切换的实现方法,其特征在于:虚拟ip采用高可用负载均衡模式,主备直播服务器根据负载能力均分客户端请求。
5.根据权利要求4所述的实现cmaf直播源自动主备切换的实现方法,其特征在于:当主备直播服务器中某台服务器异常时,客户端请求全部分配到正常的直播服务器中。