一种获取直播视频切片的方法及服务器的制造方法_2

文档序号:9528083阅读:来源:国知局
供的应用场景二示意图;
[0064]图5为本发明实施例提供的服务器的组成示意图。
【具体实施方式】
[0065]以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0066]图1为本发明实施例提供的获取直播视频切片的方法流程示意图;如图1所示,所述方法包括:
[0067]步骤11:获取切片的基准时长;
[0068]这里,网络侧、具体是网络侧服务器接收原始直播源码流、如接收直播源MPEG系统发送来的MPEG-TS码流,因为原始直播源码流是直播源系统源源不断发送至服务器的,所以服务器对每次接收的原始直播源码流的处理均相同,请参见以下描述。
[0069]服务器将MPEG-TS码流转换成实时传输协议(RTP, Real-time TransportProtocol)码流,并标识出RTP码流中的关键帧信息,对RTP码流进行缓存、排序、解析等处理;删除经上述处理后的RTP码流的RTP包头,得到RTP净载荷数据;其中,所述关键帧信息包括:关键帧帧头、帧尾;获取RTP码流中的关键帧长度,以及用于缓存该码流的视频缓存检验器(VBV,Video Buffering Verifier)的长度,并将关键帧长度、VBV长度以及第一阈值三者求和,求和结果作为切片的基准时长,也就是说,如果关键帧长度为KP、VBV长度为V、第一阈值为A,那么切片的基准时长BS = KP+V+A。
[0070]在对RTP码流进行缓存、排序、解析等处理的过程中,如果原始直播源码流已被加扰(去扰),本方案中还需要去扰(加扰);如果在后续切分成切片时还需要对切片加密,本方案中还需要进行加密处理,依据具体应用情况而处理。
[0071]其中,所述第一阈值A为预先设置的,可根据MPEG-TS码流的实际长度而自行设定,例如,可以预先设置A为1,也可以预先设置为2 ;所述基准时长、关键帧长度、V、A的单位均可以为秒s、或分min、或时hour等,通常取为秒。
[0072]其中,所述关键帧也可以称之为I帧;在1^?码流中的标识出关键帧信息的目的在步骤13中说明。
[0073]步骤12:确定基准时长与第一预设时长之和为第一时长,和/或确定基准时长与第一预设时长之差为第二时长;
[0074]这里,所述第一预设时长根据实际应用情况而设置;以第一预设时长为时长B为例,计算基准时长BS与B之和,并将该两者之和作为第一时长;和/或,计算基准时长BS与B之差,将该两者之差作为第二时长。
[0075]步骤13:获取当前原始直播源的第q个关键帧;
[0076]这里,依据对RTP码流作出的关键帧信息,识别出第q个关键帧;其中,q为正整数。
[0077]步骤14:确定第q个关键帧的起始位置为第q个切片的起始位置;
[0078]步骤15:在第q个关键帧起始位置的第一时长和/或第二时长内,确定为存在有第q+Ι个关键帧时,确定所述第q+Ι个关键帧的起始位置为第q个切片的结束位置;
[0079]这里,在第q个关键帧起始位置的第一时长和/或第二时长内,查找是否存在有第q+Ι个关键帧,查找到时,确定所述第q+Ι个关键帧的起始位置为第q个切片的结束位置。
[0080]步骤16:在第q帧起始位置及结束位置处,对当前原始直播源进行切分,形成第q个切片;其中,q为正整数。
[0081]这里,在第q个关键帧起始位置及结束位置处进行切分,形成第q个切片;也就是说,第q个切片的起始位置为第q个关键帧起始位置,第q个切片的结束位置为第q+Ι个关键帧起始位置。
[0082]优选的,在第q个关键帧起始位置的第一时长和/或第二时长内,确定为没有存在第q+Ι个关键帧时,将距离第q个关键帧起始位置为基准时长的位置为第q个切片的结束位置,在第q帧起始位置及结束位置处,对当前原始直播源进行切分,形成第q个切片。
[0083]举个例子,以基准时长BS = 10s、第一预设时长B = Is为例,第一时长为9s、第二时长为11s ;在RTP净载荷数据中,依据对RTP码流作出的关键帧信息,识别出第1个关键帧,以第1个关键帧的起始位置为当前原始直播源的第1个切片的起始位置,以第1个关键帧起始位置为0s,从Os位置处查找至9s-lls时长处,在该9s-lls的时长内,确定存在有第2个关键帧时,将第2个关键帧的起始位置作为第1个切片的结束位置,在第1个切片的起始位置及结束位置处进行切分,形成当前原始直播源的第1个切片;同时,第2个关键帧的起始位置作为当前原始直播源的第2个切片的起始位置,以第2个切片起始位置为0s,从Os位置处再查找至9s-lls时长处,在该9s-lls的时长内,确定存在有第3个关键帧时,将第3个关键帧的起始位置作为第2个切片的结束位置,在第2个切片的起始位置及结束位置处进行切分,形成当前原始直播源的第2个切片;以此类推,服务器对每次接收到的原始直播源进行切片的切分。也就是说,RTP净载荷数据中,第q个关键帧的起始位置(开头位置)为第q个切片的起始位置(开头位置),第q+Ι个关键帧的起始位置为第q个切片的结束位置。
[0084]由此可见,上述方案中,可将一个关键帧切分至同一个切片中去,本方案中,以关键帧所在位置为切分位置、或以距离第q个关键帧起始位置为基准时长的位置为切分位置,对原始直播源码流进行切分,能够保证HLS切片长度在基准时长左右波动,使得关键帧切分至同一个切片中,解决了切片边缘存在数据不完整或者数据冗余的现象,从而解决了切片的直播画面出现较慢、相邻两切片之间的直播画面存在有不连续等问题,提高了直播视频播放流畅性、播放画面质量,提升了用户观看体验。
[0085]在对原始直播源码流进行切片的切分时,被切分的切片还需要满足:
[0086]1)从直播源码流中获取节目关联表(PAT,Program Associat1n Table) PAT和节目映射表(PMT,Program Map Table),并配置PAT和PMT在每个切片的初始位置,以方便切片所承载节目内容的播放;
[0087]其中,PAT表中主要包括节目频道号码和每一个频道对应的PMT的包识别码(PID,Packet Identifier)号码;PMT表中包括有各个频道的所有视频流Video数据的PID、所有音频流Aud1数据的PID及其他PID ;当终端请求播放当前频道的某个Video时,通过该Video的PID即可将该Video数据从该频道中筛选出来;同时,PAT和PMT在原始直播源码流中周期性出现,以方便终端在请求播放视频时可随时接入所述播放视频的码流;
[0088]上述方案中,对于PAT和PMT的描述具体请参见现有相关说明,这里不再赘述。在本方案中,PAT和PMT配置在每个切片的开头位置,能够实现对每个切片的独立播放。
[0089]2)当确定出当前原始直播源存在有至少两种码率时,配置不同码率的切片所承载的节目内容的长度为相同,以方便不同码流切片的切换,也就是,为了方便直播视频在不同码率间的切换。
[0090]由于HLS协议中,每个切片(也可称为TS切片)均具有自身所支持的播放码率、序号标识、形成时间等信息,所以通过对索引文件(m3u8格式)的查找,可查找到具有同一个播放码率的所有切片,该切片按照切片序号的大小进行排序。
[0091]例如,以原始直播源码流为单码率(1024kbps)为例,直播单码率文件包括:主索引文件、子索引文件及TS切片;其中,主索引文件命名为index.m3u8、子索引文件以码率命名为 1024.m3u8(码率是 1024kbps)、TS 切片命名为 $time-1024-$seq.ts ;其中:$time表不切片的形成时间,1024表不切片码率是1024kbps, $seq表不切片的序号;播放码率相同的切片需要放在同一个子索引文件下。同时,子索引文件1024.m3u8的文件内容能够表征出其所能够索引到的所有切片的名称,例如,当配置子索引文件1024.m3u8最多可索引3个TS切片时,其可索引到命名为20140521160000-1024-1.ts的切片1、命名为20140521160000-1024-2.ts 的切片 2、及命名为 20140521160000-1024-2.ts 的切片 3。原始直播源码流为多码率与上述原始直播源码流为单码率的描述相类似,只不过在多码率原始直播源码流中,子索引文件的个数等于原始直播源码流所采用的码率的个数。
[0092]由于本发明实施例涉及到的是直播多媒体码流,随着服务器对原始直播源码流的不断获取,对原始直播源码流的不断切分,新切片不断形成,所以需要主、子索引文件随着新切片的形成而不断发生更新,例如,lmin内服务器可将原始直播源码流切分为6个TS切片,那么子索引文件每10s更新一次,更新为对6个最新TS切片的索引,并删除对之前6个TS切片的索引,以适应HLS直播规范的要求;该过程可视为对切片的回滚过程。
[0093]上述方案中,对于切片的回滚,及通过对主、子索引文件查找到某个切片的具体过程请参见HLS协议的相关说明,这里不再赘述。
[0094]图2为本发明实施例的应用场景一示意图;图3为本发明实施例提供的获取直播视频切片的方法的一具体实现流程示意图;结合图2与图3,对本发明实施例作进一步描述。
[0095]在图2中,以服务器位于单节点、原始直播源码流为单码率、第一阈值为A= Is、第一预设时长B =
...
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1