面向互联网的基于分片传输的大尺度直播时移方法及系统的制作方法

文档序号:7776205阅读:397来源:国知局
面向互联网的基于分片传输的大尺度直播时移方法及系统的制作方法
【专利摘要】本发明提供一种面向互联网的基于分片传输的大尺度直播时移方法,包括:客户端发出时移请求以获取切片索引文件;时移服务端由时移时间点得到时移状态标记;客户端接收到时移服务端的反馈后,向时移服务端发出切片索引文件获取请求;时移服务端对切片索引文件获取请求进行处理,以得到该次时移请求的切片序列;时移服务端通过切片序列,生成相应的直播切片索引文件,并返回给客户端;客户端从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放,并重复发出相同的切片索引文件获取请求。实施上述方法的系统,包括时移服务端与客户端。本发明的客户端简单并易于实现,无需计算需要获取的时移索引范围,无需保留并合并各次获取时移索引。
【专利说明】面向互联网的基于分片传输的大尺度直播时移方法及系统
【技术领域】
[0001]本发明涉及视频传输【技术领域】,尤其涉及一种面向互联网的基于分片传输的大尺度直播时移方法及系统。
【背景技术】
[0002]近年来,互联网视频业务在国内外均处于一个蓬勃发展的时期,而互联网视频服务中广泛采用了分片传输模式,以便于搭建或利用已有的CDN服务。具体的,包括适用于 ios 终端的 HTTP Live Streaming(HLS)协议、适用于 flash player 的 HTTP DynamicStreaming (HDS)协议,有可能作为下一代国际标准的 Dynamic Adaptive Streaming overHTTP (DASH)协议,此外还有一些基于flv切片格式的私有协议,等等。
[0003]HLS是苹果公司提出的流媒体网络传输协议,工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U(m3u8)文件,即切片索引文件,用于寻找可用的媒体切片。
[0004]HDS是Adobe公司的传统流媒体解决方案RTMP+FLV的结合,在互联网视频行业得到了广泛的应用。它包含了多个部件来完成内容的准备工作,并通过HTTP将内容传送给终端的Flash Player。内容准备模块包括了面向VOD和面向Live直播的模块,VOD打包模块将媒体文件分片,并以F4F的格式存储,Live直播打包模块将直播流实时地写入到F4F文件当中。同时均会产生媒体对应的F4M格式的索引文件,索引文件中包含了编码、分辨率以及码率等参数信息。
[0005]DASH也称为MPEG-DASH,类似于HLS、HDS等协议,DASH也将视频内容切片为多个视频小片段,每个片段包含一小段视频内容。DASH是第一个基于HTTP的自适应码率的国际标准。
[0006]综合而言,此类协议的基本特点为:
[0007]均采用了索引文件加实际视频切片的模式。
[0008]区分为点播、直播不同的服务形式:
[0009]采用分片传输模式来提供点播视频服务时,通常客户端将一次性获得包含所有视频切片索引信息的索引文件,进而再依据播放内容动态获取视频切片内容。HLS、HDS协议均是如此。
[0010]采用分片传输模式来提供直播视频服务时,通常客户端将定期刷新下载包含当前若干视频切片索引信息的索引文件,进而依据索引文件的内容,以及当前需要播放的内容,决定是否获取以及获取哪些视频切片内容。如HLS协议时,客户端不停的下载更新m3u8索弓I文件,从中获得新产生的切片URL后,再下载相应切片文件并进行播放。
[0011]通常直播、点播服务时,索引文件的格式略有不同,客户端以此区分服务的形式,如HLS协议时,点播服务的m3u8尾部一般会有如下标记“#EXT_X_ENDLIST”,而直播服务的m3u8则一般没有这个标记。如HDS协议时,贝U索引f4m文件则通过“〈streamType〉”为recorded或live来区分点播还是直播。
[0012]随着视频直播业务的开展,直播时移的需求也越来越强烈。直播时移的功能,是指用户在观看直播时,可通过拖动播放器进度条等形式,定位到当前直播点之前的某个时间点进行观看,视频直播时视频数据是永远存在的,没有结尾,所以直播时移观看过程也同样是可一直持续的,如同用户从那个时间点开始收看直播一样。
[0013]在传统的流媒体【技术领域】,客户端和服务器之间通常采用rtsp、rtmp、flv-http等面向连接的传输和交互协议,通过这些协议实现时移的基本方法是:
[0014]I)在客户端和服务器建立连接后,即开始接收流数据,在直播的过程中,该连接不会中断。
[0015]2)在客户端要求访问时移数据时,通过已建立的连接,将希望跳转到的时间值传递给服务端,服务端定位到该时间值继续发送流数据。
[0016]3)客户端收到流数据后,从该时间点开始按视频流的时间戳开始播放。此后客户端的播放视频内容将始终与当前最新的视频内容保持一个恒定的差值。
[0017]4)客户端还可进行快进、快退、跳回当前直播点等操作,服务器端接收到客户端请求后,调整相应的视频数据发送策略,以达到不同的效果。
[0018]如果采用分片传输机制来实现直播时移服务,特别是基于HLS、HDS等通用协议时,面临不少问题:
[0019]采用点播的模式来实现一种近似但不等价于直播时移的功能。如针对HLS协议,通过在获取m3u8的URL中携带时间点参数的方法来访问服务端,服务端接收到客户端携带时间参数的获取m3u8访问请求后,回应一个点播类型的m3u8文件给客户端,文件中的最旧切片为请求时间参数对应切片,最新切片为当前时间对应切片。客户端收到这样的m3u8,遵循处理点播类型m3u8的规则,将播放从该m3u8中的最旧切片到该m3u8中的最新切片,然后结束播放,这样将无法获取并播放随着时间的推移而新生成出来的切片。
[0020]也有采用专门客户端软件来实现基于分片传输的直播时移,但这样通常是基于标准的HLS、HDS等协议做适当的修改,如在前述点播模式实现近似直播时移服务时,当播放结束后,从结束时间点再启动一个新的菜单回看,并循环往复下去,以此模拟持续不断地时移直播。但这种模式,标准的ios player、flash player无法直接使用,限制了直播时移应用的推广。
[0021]有的时移服务,将较大范围的视频切片索引信息以直播的形式全部发送到客户端,如整个服务端的可时移范围,客户端在此范围内可进行拖动操作,即时移操作,同时因为采用了直播形式,所以客户端会定期更新索引文件以获取新的切片信息。这样也可实现直播时移服务,但每次获取索引信息的数据量较大,即使采用HTTP-Gzip等压缩算法,当采用HLS协议时,在7天时移的大尺度时移范围下,索引文件的大小仍将达到几百K字节。
[0022]可见,问题的关键在于,当采用HLS、HDS等互联网主流的分片传输播放协议时,在点播模式下客户端不会主动更新索引文件,无法实现直播时移内容的持续播放,在直播模式下,由于采用了客户端被动请求索引信息的模式,即客户端每次发出的索引信息获取的URL均是一样的,不会依据自身的播放状态向服务端指定获取一个特定范围内的索引信息,这样在直播时服务端仅能依据当前直播点为客户端提供最近的一段索引信息,通常HLS为最近的10个切片文件的索引信息,但时移服务时,每个用户在不同时间点所需要的索引信息均是不同的。

【发明内容】

[0023]针对上述问题中存在的不足之处,本发明提供一种客户端简单并易于实现,无需计算需要获取的时移索引范围,无需保留并合并各次获取时移索引的面向互联网的基于分片传输的大尺度直播时移方法及系统。
[0024]为实现上述目的,本发明提供一种面向互联网的基于分片传输的大尺度直播时移方法,包括以下步骤:
[0025]S100、客户端发出时移请求R以获取切片索引文件;
[0026]S200、时移服务端接到客户端请求后,由时移时间点TR得到时移状态标记TF,若时移时间点TR与时移状态标记TF相同,则跳转执行步骤S400,若二者不同,则向客户端反馈直播内容标识CH和时移状态标记TF ;
[0027]S300、客户端接收到时移服务端的反馈后,向时移服务端发出切片索引文件获取请求,并将时移请求R重定义为该请求;
[0028]S400、时移服务端依据时移状态标记TF或时移点相对于当前直播时间的偏移值TC,并依据当前物理时间或当前直播流时间戳,对切片索引文件获取请求进行处理,以得到该次时移请求R的切片序列;
[0029]S500、时移服务端通过切片序列,生成相应的直播切片索引文件,并返回给客户端;
[0030]S600、客户端从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放,并重复向时移服务端发出和时移请求R相同的切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。
[0031]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤SlOO中,客户端发出时移请求R中包括直播内容标识CH与时移时间点TR,其中,直播内容标识CH为频道名称、频道URL或频道ID ;
[0032]时移时间点TR为时移点的物理时间TA、时移点的视频流时间戳TB、或时移点相对于当前直播时间的偏移值TC中的一种。
[0033]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤S200中,
[0034]若时移时间点TR是时移点物理时间TA或时移点流时间戳TB,向客户端反馈直播内容标识CH和时移状态标记TF,将客户端请求进行HTTP重定向,重定向的URL中包含直播内容标识CH和时移状态标记TF,包括:
[0035]情况a、若时移时间点TR为时移点物理时间TA,则时移状态标记TF为时移点的流时间戳信息和当前物理时间信息的元组;
[0036]情况b、若时移时间点TR为时移点流时间戳TB,则时移状态标记TF为时移点的流时间戳信息和当前物理时间信息的元组。
[0037]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,若时移时间点TR是时移点相对于当前直播时间的偏移值TC,则时移状态标记TF为时移点相对于当前直播时间的偏移值TC。
[0038]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤S300中,客户端发出的切片索引文件获取请求中包括直播内容标识CH和时移状态标记TF。
[0039]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤S400中,包括以下步骤:
[0040]S401、从切片索引文件请求中得到时移状态标记TF或时移点相对于当前直播时间的偏移值TC ;
[0041 ] S402、若从切片索弓I文件请求中得到时移点相对于当前直播时间的偏移值TC,则时移状态标记TF是TFC,且TFC为时移点相对于当前直播时间的偏移值TC ;
[0042]S403、取当前物理时间T或当前流时间戳S ;
[0043]S404、计算本次时移请求R对应的流时间戳ST,包括:
[0044]若时移状态标记TF是TFA,则:流时间戳ST=TFAl+ (T-TFA2)
[0045]若时移状态标记TF是TFB,则:流时间戳ST=TFBl+ (T-TFB2)
[0046]若时移状态标记TF是TFC,则:流时间戳ST=S-TFC ;
[0047]S405、计算本次时移请求R对应的切片序列。
[0048]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤S500中,包括:
[0049]情况a:当协议为HLS协议时,按照m3u8文件格式规范,时移服务基于预设的切片时间间隔D、切片序列和存储的时移数据,生成m3u8格式的切片索引文件;
[0050]情况b:当协议为HDS协议时,按照bootstrap文件格式规范,时移服务基于预设的切片时间间隔D、切片序列和存储的时移数据,生成bootstrap格式的切片索引文件。
[0051]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤S600中,还包括:客户端向时移服务端重复发出的切片索引文件获取请求中,包含直播内容标识CH和时移点相对于当前直播时间的偏移值TC或直播内容标识CH和时移状态标记TF。
[0052]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤SlOO实施前,还包括在时移服务端中建立时移数据存储区的步骤S10,其步骤如下:
[0053]S11、定义时移时间长度为L,则时移服务器保证存储从时间戳(S-L)到当前时间戳S的音、视频数据,且随着时间戳S的推移,不断删除旧的时移数据和存储新的时移数据,进行滚动存储;
[0054]S12、对直播视频数据和时移视频数据,建立时间戳和切片序列的映射规则。
[0055]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在步骤SlO中,预设的索引文件中需包含的切片个数C是常量,与时移时间长度L无关。
[0056]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,当协议为HLS协议时,预设的索引文件中需包含的切片个数C最常见的取值为C=10,比较常见取值为3<=C<=20 ;当协议为HDS协议时,C最常见的取值为C=20,比较常见取值为5〈=C〈=50。
[0057]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,当用户要访问多个码率直播构成的自适应码率直播组内容进行时移时,包括以下步骤:
[0058]SAO1、客户端发出时移请求R时,携带请求的直播频道组内容标识CG、时移时间点TR ;[0059]SA02、时移服务端接到客户端请求后,对时移时间点TR进行解析,若时移时间点TR为是时移点物理时间TA或时移点流时间戳TB,则选择该直播组中一路直播,得到时移状态标记TF,然后向客户端反馈直播频道组内容标识CG和时移状态标记TF ;
[0060]若时移时间点TR是时移点相对于当前直播时间的偏移值TC,则直接跳转至SA04 ;
[0061]SA03、客户端接收到时移服务端的反馈后,向时移服务端发出请求,请求中携带直播频道组内容标识CG和时移状态标记TF ;
[0062]SA04、时移服务端接到客户端携带的直播频道组内容标识CG和时移状态标记TF或直播频道组内容标识CG和时移点相对于当前直播时间的偏移值TC的请求后,生成组索引文件返回给客户端;
[0063]SA05、客户端收到组索引文件后,获取其中包含的各路直播对应的索引文件URL ;
[0064]SA06、客户端对各路直播对应的索引文件URL进行判断,若各路直播对应的索引文件URL中包含多个URL,则依据自身情况选择URL并进行请求;
[0065]若各路直播对应的索引文件URL中只有一个URL,则直接请求该URL ;
[0066]SA07、时移服务端接收到客户端的包含直播内容标识CH和时移状态标记TF或直播内容标识CH和时移点相对于当前直播时间的偏移值TC的索引获取请求后,并依次执行步骤S400和S500,形成索引文件返回给客户端;
[0067]SA08、客户端收到索引文件后,从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放;
[0068]SA09、跳转至步骤SA06,以维持时移过程。
[0069]上述的面向互联网的基于分片传输的大尺度直播时移方法,其中,在时移过程中采用下述步骤以进行快进,包括:
[0070]SBO1、客户端发送快进请求时,URL中携带直播内容标识CH、时移时间点TR与播放标识PM ;
[0071]SB02、时移服务端接收客户端请求;
[0072]SB03、时移服务端从请求URL中,获得播放标识PM,并提取出快进倍速SP ;
[0073]SB04、若播放标识PM是快进的请求,且当前播放内容已达到直播点,则时移服务端发送重定向请求给客户端,重定向到正常速率播放的URL,结束快进处理过程;若当前播放内容未达到直播点,则转SB05 ;
[0074]SB05、时移服务端由时移时间点TR得到时移状态标记TFjf TF和快进倍速SP反
馈给客户端;
[0075]SB06、客户端接收到时移服务端的反馈后,向时移服务端发出新的切片索引文件获取请求;
[0076]SB07、时移服务端取当前物理时间T ;
[0077]SB08、时移服务端从客户端请求中获取时移状态标记TF和快进倍速SP后,计算本次时移快进请求对应的流时间戳ST ;
[0078]SB09、时移服务端计算本次时移请求R对应的切片序列:
[0079]将时间戳ST作为输入,执行步骤S12的映射规则,得到切片序列;
[0080]SB10、时移服务端通过切片序列,生成相应的切片索引文件,返回给客户端;[0081]SB11、客户端从索引文件中取得具体的切片序列,发送实际切片文件的访问请求;
[0082]SB12、时移服务端收到客户端发来的切片访问请求后,返回的切片中只包含关键帧,不包含其他视频帧类型数据和音频数据,包括:
[0083]SB121、返回的切片中只包含部分关键帧,而忽略掉另一部分关键帧,以保证快进时发送的切片数据占用带宽不会过大;
[0084]SB122、修改返回的切片中的关键帧时间戳,以使时间戳的增长速度符合视频流的快进播放所需的增长速度;
[0085]SB13、客户端播放收到的切片数据;
[0086]SB14、客户端重复向时移服务端发出包含直播内容标识CH、时移状态标记TF、快进倍速SP的快进切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。
[0087]本发明还提供一种实施上述面向互联网的基于分片传输的大尺度直播时移方法的系统,包括客户端与时移服务端,其中,客户端包括:
[0088]客户端数据传输模块,用于发送时移请求、向时移服务端发送切片索引文件获取请求、以及接收时移服务端的反馈;
[0089]切片索引文件获取模块,用于获取切片索引文件;
[0090]切片序列处理模块,用于取得索引文件中具体的切片序列,进行实际切片文件的下载和播放,并重复发出切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放;
[0091]时移服务端包括:
[0092]时移数据存储区,用于存储时移数据;
[0093]时移状态标记生成模块,用于在时移服务端接到客户端请求后,由时移时间点得到时移状态标记;
[0094]切片序列生成模块,用于对切片索引文件获取请求进行处理,以得到该次时移请求的切片序列;
[0095]直播切片索引文件生成模块,用于通过切片序列生成相应的直播切片索引文件;
[0096]时移服务端数据传输模块,用于接收客户端发送的时移请求,并将时移服务端的反馈以及生成的直播切片索引文件发送给客户端。
[0097]与现有技术相比,本发明具有以下优点:
[0098]1、客户端简单并易于实现,无需计算需要获取的时移索引范围,无需保留并合并各次获取的时移索引;
[0099]2、适用于HLS、HDS> DASH等协议,使得ios player、flash player可直接访问直播时移服务,易于在互联网无须安装定制播放器即可实现直播时移服务;
[0100]3、在回退到时移点后,可像直播服务那样,持续播放视频内容,而不会像菜单时移服务那样,在视频播放到某个时间点后停止播放;
[0101]4、在提供时移服务时,可实现快进播放;
[0102]5、支持多个码率直播构成的自适应码率直播组的时移;
[0103]6、在大尺度时移范围时,无须下载数据量过大的索引文件,仅需下载当前播放点附近的视频片断对应的索引信息,提高了网络传输效率和服务响应时间;
[0104]7、针对多台时移服务器构成的分布式系统(如CDN系统),可使客户端在访问不同的时移服务器来获取视频片段索引信息时,随时间推移所获得的索引信息之间保持连续,如同一直访问一台服务器一样,而不会因为访问服务器的改变而出现获得的索引信息之间不连续的情况。
【专利附图】

【附图说明】
[0105]图1为本发明方法部分的流程图。
【具体实施方式】
[0106]如图1所不,本发明提供一种面向互联网的基于分片传输的大尺度直播时移方法,包括以下步骤:
[0107]S100、客户端发出时移请求R以获取切片索引文件。
[0108]具体的,在步骤SlOO中: [0109]客户端发出时移请求R中包括直播内容标识CH与时移时间点TR,其中,直播内容标识CH为频道名称、频道URL、频道ID或其他直播内容标识信息;
[0110]时移时间点TR为时移点的物理时间TA、时移点的视频流时间戳TB、时移点相对于当前直播时间的偏移值TC或其他时移时间点表示方式。
[0111]另外,在步骤SlOO实施前,需要执行步骤S10,在时移服务端中建立时移数据存储区。
[0112]具体的,包括以下步骤:
[0113]定义时移时间长度为L,则时移服务器保证存储从时间戳(S-L)到当前时间戳S的视音频数据,且随着时间戳S的推移,不断删除旧的时移数据和存储新的时移数据,进行滚动存储。
[0114]对直播视频数据和时移视频数据,建立时间戳和切片序列的映射规则。其中,对时间戳和切片序列的具体映射方法包括以下步骤:
[0115]设定IS=直播视频数据和时移视频数据中的关键帧的时间戳集合,IS=UcpI1^-1
[0116]从IS中查找小于等于CS的元素,从满足条件的元素中取最大值,设为ICS,其中,CS为一个任意的合法的视频流时间戳;
[0117]计算CS对应切片号N(CS),方法为:N(CS) =取整(F (ICS)),其中,F是以ICS为自变量的线性函数;其中,F的一种定义方法为:
[0118]设定D=预设的切片时间间隔,则F(ICS) =ICS/D。
[0119]设定C=预设的索引文件中需包含的切片个数,则CS对应的切片序列的切片号集合为:{N(CS) -C+1+B,N(CS) -C+2+B,...N (CS)+B},其中:B 是取值范围[0,C-1]的常整数。
[0120]其中,预设的索引文件中需包含的切片个数C是常量,与时移时间长度L无关。
[0121]其中,当协议为HLS协议时,预设的索引文件中需包含的切片个数C最常见的取值为C=IO,比较常见取值为3〈=C〈=20 ;当协议为HDS协议时,C最常见的取值为C=20,比较常见取值为5〈=C〈=50。
[0122]S200、时移服务端接收到客户端请求后,由时移时间点TR得到时移状态标记TF,并将时移状态标记TR与时移时间点TF进行比较,若时移时间点TR与时移状态标记TF相同,则跳转执行步骤S400,若二者不同,则向客户端反馈直播内容标识CH和时移状态标记TF0
[0123]具体的,在步骤S200中,包括:
[0124]若时移时间点TR是时移点物理时间TA或时移点流时间戳TB,向客户端反馈直播内容标识CH和时移状态标记TF,将客户端请求进行HTTP重定向,重定向的URL中包含直播内容标识CH和时移状态标记TF,包括:
[0125]情况a、若时移时间点TR为时移点物理时间TA,则时移状态标记TF为时移点的流时间戳信息和当前物理时间信息的元组:
[0126]TF 为 TFA,由 TFAl 和 TFA2 构成,TFA= {TFAI, TFA2},其中:
[0127]TFAl=S- (T-TA)
[0128]TFA2=T
[0129]其中,T为 当前物理时间,S为当前流时间戳。
[0130]情况b、若时移时间点TR为时移点流时间戳TB,则时移状态标记TF为时移点的流时间戳信息和当前物理时间信息的元组:
[0131]TF 为 TFB,由 TFBl 和 TFB2 构成,TFB={TFBI,TFB2},其中:
[0132]TFBl=TB
[0133]TFB2=T
[0134]其中,T为当前物理时间。
[0135]另外,若时移时间点TR是时移点相对于当前直播时间的偏移值TC,则时移状态标记TF为时移点相对于当前直播时间的偏移值TC。
[0136]S300、客户端接收到时移服务端的反馈后,向时移服务端发出切片索引文件获取请求,并将时移请求R重定义为该请求。其中,客户端发出的切片索引文件获取请求中包括直播内容标识CH和时移状态标记TF。
[0137]S400、时移服务端依据时移状态标记TF或时移点相对于当前直播时间的偏移值TC,并依据当前物理时间或当前直播流时间戳,对切片索引文件获取请求进行处理,以得到该次时移请求R的切片序列。
[0138]具体的,包括以下步骤:
[0139]S401、从切片索引文件请求中得到时移状态标记TF或时移点相对于当前直播时间的偏移值TC ;
[0140]S402、若从切片索引文件请求中得到时移点相对于当前直播时间的偏移值TC,则时移状态标记TF是TFC,且TFC为时移点相对于当前直播时间的偏移值TC ;
[0141]S403、取当前物理时间T或当前流时间戳S ;
[0142]S404、计算本次时移请求R对应的流时间戳ST,包括:
[0143]若时移状态标记TF是TFA,则:流时间戳ST=TFAl+(T-TFA2)
[0144]若时移状态标记TF是TFB,则:流时间戳ST=TFBl+(T-TFB2)
[0145]若时移状态标记TF是TFC,则:流时间戳ST=S-TFC ;
[0146]S405、计算本次时移请求R对应的切片序列:将时间戳ST作为输入,执行S12的映射规则,得到切片序列。[0147]S500、时移服务端通过切片序列,生成相应的直播切片索引文件,并返回给客户端。
[0148]在步骤S500中还包括:
[0149]情况a:当协议为HLS协议时,按照m3u8文件格式规范,时移服务基于预设的切片时间间隔D、切片序列和存储的时移数据,生成m3u8格式的切片索引文件;
[0150]情况b:当协议为HDS协议时,按照bootstrap文件格式规范,时移服务基于预设的切片时间间隔D、切片序列和存储的时移数据,生成bootstrap格式的切片索引文件。
[0151]S600、客户端从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放,并重复向时移服务端发出和时移请求R相同的切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。其中,客户端向时移服务端重复发出的切片索引文件获取请求中,包含直播内容标识CH和时移点相对于当前直播时间的偏移值TC或直播内容标识CH和时移状态标记TF
[0152]另外,在时移服务端对当前物理时间T或当前流时间戳S取值时,针对多台服务器构成的分布式直播时移系统,当用户在直播时移过程中,在不同时刻需要访问不同的时移服务器来获取索引文件时,应对不同服务器的当前物理时间T和当前直播流时间戳S进行同步。包括以下步骤:
[0153]多台时移服务器利用NTP时间同步服务器进行物理时间T同步;
[0154]在多台时移服务器中,选择一台作为源服务器。各时移服务器需要取得物理时间T时,并不取本地物理时间,而是向源服务器获取其物理时间作为T ;
[0155]在多台时移服务器中,选择一台作为源服务器。各时移服务器的当前直播流时间戳不是在本地自行生成,而是向源服务器获取其当前直播流时间戳作为S。
[0156]在本发明中,当用户要访问多个码率直播构成的自适应码率直播组内容进行时移时,采用下述步骤实现:
[0157]SAO1、客户端发出时移请求R时,携带请求的直播频道组内容标识CG、时移时间点TR ;
[0158]SA02、时移服务端接到客户端请求后,对时移时间点TR进行解析,若时移时间点TR为是时移点物理时间TA或时移点流时间戳TB,则选择该直播组中一路直播,得到时移状态标记TF,然后向客户端反馈直播频道组内容标识CG和时移状态标记TF ;
[0159]若时移时间点TR是时移点相对于当前直播时间的偏移值TC,则直接跳转至SA04 ;
[0160]SA03、客户端接收到时移服务端的反馈后,向时移服务端发出请求,请求中携带直播频道组内容标识CG和时移状态标记TF ;
[0161]SA04、时移服务端接收到客户端携带的直播频道组内容标识CG和时移状态标记TF或直播频道组内容标识CG和时移点相对于当前直播时间的偏移值TC的请求后,生成组索引文件返回给客户端,组索引文件包含该直播组中各路直播对应的索引文件URL,URL中包含直播内容标识CH和时移状态标记TF或直播内容标识CH和时移点相对于当前直播时间的偏移值TC;
[0162]SA05、客户·端收到组索引文件后,获取其中包含的各路直播对应的索引文件URL ;
[0163]SA06、客户端对各路直播对应的索引文件URL进行判断,若各路直播对应的索引文件URL中包含多个URL,则依据自身情况选择URL并进行请求;
[0164]若各路直播对应的索引文件URL中只有一个URL,则直接请求该URL ;
[0165]SA07、时移服务端接收到客户端的包含直播内容标识CH和时移状态标记TF或直播内容标识CH和时移点相对于当前直播时间的偏移值TC的索引获取请求后,并依次执行步骤S400和S500,形成索引文件返回给客户端;
[0166]SA08、客户端收到索引文件后,从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放;
[0167]SA09、跳转至步骤SA06,以维持时移过程。
[0168]在本发明中,在时移过程中采用下述步骤以进行快进,包括:
[0169]SBO1、客户端发送快进请求时,URL中携带直播内容标识CH、时移时间点TR与播放标识PM ;
[0170]其中,时移时间点TR:只能是时移点物理时间TA或时移点流时间戳TB ;
[0171]播放标识PM:包含:是快进还是正常播放、快进倍速;
[0172]SB02、时移服务端接收客户端请求;
[0173]SB03、时移服务 端从请求URL中,获得播放标识PM,并提取出快进倍速SP ;
[0174]SB04、若播放标识PM是快进的请求,且当前播放内容已达到直播点,则时移服务端发送重定向请求给客户端,重定向到正常速率播放的URL,结束快进处理过程;若当前播放内容未达到直播点,则执行步骤SB05 ;
[0175]SB05、时移服务端由时移时间点TR得到时移状态标记TFjf TF和快进倍速SP反馈给客户端,包括:
[0176]情况a、若时移时间点TR为时移点物理时间TA,则时移状态标记TF为时移点的流时间戳信息和当前物理时间信息的元组:
[0177]TF 为 TFA,由 TFAl 和 TFA2 构成,TFA= {TFA1,TFA2},其中:
[0178]TFAl=S- (T-TA)
[0179]TFA2=T
[0180]其中,T为当前物理时间,S为当前流时间戳;
[0181]情况b、若时移时间点TR为时移点流时间戳TB,则时移状态标记TF为时移点的流时间戳信息和当前物理时间信息的元组:
[0182]TF 为 TFB,由 TFBl 和 TFB2 构成,TFB={TFBI,TFB2},其中:
[0183]TFBl=TB
[0184]TFB2=T
[0185]其中,T为当前物理时间;
[0186]SB06、客户端接收到时移服务端的反馈后,向时移服务端发出新的切片索引文件获取请求;
[0187]SB07、时移服务端取当前物理时间T ;
[0188]SB08、时移服务端从客户端请求中获取时移状态标记TF和快进倍速SP后,计算本次时移快进请求对应的流时间戳ST:
[0189]若TF 是 TFAJlJ: ST=TFAl+(T-TFA2) *SP ;
[0190]若TF 是 TFBJlJ: ST=TFB I + (T-TFB2) *SP ;[0191]SB09、时移服务端计算本次时移请求R对应的切片序列:
[0192]将时间戳ST作为输入,执行步骤S12的映射规则,得到切片序列;
[0193]SB10、时移服务端通过切片序列,生成相应的切片索引文件,返回给客户端;
[0194]SB11、客户端从索引文件中取得具体的切片序列,发送实际切片文件的访问请求;
[0195]SB12、时移服务端收到客户端发来的切片访问请求后,返回的切片中只包含关键帧,不包含其他视频帧类型数据和音频数据,包括:
[0196]SB121、返回的切片中只包含部分关键帧,而忽略掉另一部分关键帧,以保证快进时发送的切片数据占用带宽不会过大。快进倍速SP越大,忽略的关键帧比例越高;
[0197]SB122、修改返回的切片中的关键帧时间戳,以使时间戳的增长速度符合视频流的快进播放所需的增长速度。
[0198]设切片中的一个任意关键帧的时间戳是SI,则修改后的时间戳SIT计算方法为:
[0199]如TF 是 TFAJlJ:SIT= (S1-TFA1)/SP
[0200]如TF 是 TFB,贝丨J:SIT= (S1-TFBl)/SP ;
[0201]SB13、客户端播放收到的切片数据;
[0202]SB14、客户端重复向时移服务端发出包含直播内容标识CH、时移状态标记TF、快进倍速SP的快进切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。
[0203]在本发明中,针对HDS协议客户端采用如下具体实现方法,包括以下步骤:
[0204]SC01、编写html页面,其中包含Adobe FlashPlayer播放控件;
[0205]SC02、定义时移时间长度L,则页面中设计播放进度条。其中,进度条的结束时间是当前物理时间T,开始时间是T-L,进度条的时间区间为:[T-L,T]。随着物理时间T的推移,进度条的开始时间和结束时间也不断推移。
[0206]SC03、初始访问页面,客户端 发送不携带时移参数的直播请求,播放当前直播的内容;
[0207]SC04、用户拖动进度条后,计算拖动到的目标时间TP。
[0208]P=拖动目标位置在整个进度条中的比例(0-1)
[0209]TP= (T-L) +L*P ;
[0210]SC05、以目标时间TP为时移时间参数,启动播放器发送请求到时移服务器。
[0211]类似如下URL:
[0212]http://domainname: port/index.f4m?begintimeabs=<TP>
[0213]其中:
[0214]doma inname:时移服务器域名
[0215]port:时移服务器端口
[0216]index.f4m:请求的直播描述文件,f4m格式为HDS协议的标准描述文件格式。
[0217]begintimeabs:请求时移到的绝对时间
[0218]SC06, FlashPlayer自动完成后续操作,获取时移内容并进行播放,流程和flashplayer访问一个标准HDS直播的流程相同。如下:
[0219]a)接收时移服务端的302重定向请求,访问重定向后的URL。类似如下:[0220]http://domainname: port/index.f4m?begintimeabs=<TP>&tsflag=<TF>
[0221]其中,
[0222]tsflag:时移服务器基于客户端本次访问信息生成的时移状态标记。
[0223]b)接收服务器发送的真实f4m文件,从中提取bootstrap索引文件的URL。
[0224]UBT=bootstrap索引文件的URL, bootstrap为HDS协议的标准索引文件。
[0225]c)不停刷新访问UBT,从中提权相应fmp4切片文件序列。
[0226]d)从服务端下载对应fmp4切片文件,并进行播放。
[0227]本发明还提供一种面向互联网的基于分片传输的大尺度直播时移系统,包括客户端与时移服务端,其中,客户端包括:
[0228]客户端数据传输模块,用于发送时移请求、向时移服务端发送切片索引文件获取请求、以及接收时移服务端的反馈。
[0229]切片索引文件获取模块,用于获取切片索引文件。
[0230]切片序列处理模块,用于取得索引文件中具体的切片序列,进行实际切片文件的下载和播放,并重复发出切 片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。
[0231]时移服务端包括:
[0232]时移数据存储区,用于存储时移数据。
[0233]时移状态标记生成模块,用于在时移服务端接到客户端请求后,由时移时间点得到时移状态标记。其中,若时移状态标记TF为时移时间点TR,则跳转执行切片序列生成模块,否则向客户端反馈直播内容标识CH和时移状态标记TF。
[0234]切片序列生成模块,用于对切片索引文件获取请求进行处理,以得到该次时移请求的切片序列。其中,时移服务端依据时移状态标记TF或当前直播时间的偏移值TC,并依据当前物理时间或当前直播流时间戳,对切片索引文件获取请求进行处理,以得到该次时移请求的切片序列。
[0235]直播切片索引文件生成模块,用于通过切片序列生成相应的直播切片索引文件。其中,当协议为HLS协议时,按照m3u8文件格式规范,时移服务基于预设的切片时间间隔D、切片序列和存储的时移数据,生成m3u8格式的切片索引文件;
[0236]当协议为HDS协议时,按照bootstrap文件格式规范,时移服务基于预设的切片时间间隔D、切片序列和存储的时移数据,生成bootstrap格式的切片索引文件。
[0237]时移服务端数据传输模块,用于接收客户端发送的时移请求,并将时移服务端的反馈以及生成的直播切片索引文件发送给客户端。
[0238]惟以上所述者,仅为本发明的较佳实施例而已,举凡熟悉此项技艺的专业人士。在了解本发明的技术手段之后,自然能依据实际的需要,在本发明的教导下加以变化。因此凡依本发明申请专利范围所作的同等变化与修饰,曾应仍属本发明专利涵盖的范围内。
【权利要求】
1.一种面向互联网的基于分片传输的大尺度直播时移方法,包括以下步骤: S100、客户端发出时移请求(R),以获取切片索引文件; S200、时移服务端接到客户端请求后,由时移时间点(TR)得到时移状态标记(TF),若时移时间点(TR)与时移状态标记(TF)相同,则跳转执行步骤S400,若二者不同,则向客户端反馈直播内容标识(CH)和时移状态标记(TF); S300、客户端接收到时移服务端的反馈后,向时移服务端发出切片索引文件获取请求,并将时移请求(R)重定义为该请求; 5400、时移服务端依据时移状态标记(TF)或时移点相对于当前直播时间的偏移值(TC),并依据当前物理时间或当前直播流时间戳,对切片索引文件获取请求进行处理,以得到该次时移请求(R)的切片序列; S500、时移服务端通过切片序列,生成相应的直播切片索引文件,并返回给客户端; S600、客户端从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放,并重复向时移服务端发出和时移请求(R)相同的切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。
2.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤SlOO中,客户端发出时移请求(R)中包括直播内容标识(CH)与时移时间点(TR),其中,直播内容标识(CH)包括频道名称、频道URL或频道ID ; 时移时间点(TR)为时移点 的物理时间(TA)、时移点的视频流时间戳(TB)、或时移点相对于当前直播时间的偏移值(TC)中的一种。
3.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S200中, 若时移时间点(TR)是时移点物理时间(TA)或时移点流时间戳(TB),向客户端反馈直播内容标识(CH)和时移状态标记(TF),将客户端请求进行HTTP重定向,重定向的URL中包含直播内容标识(CH)和时移状态标记(TF),包括: 情况a、若时移时间点(TR)为时移点物理时间(TA),则时移状态标记(TF)为时移点的流时间戳信息和当前物理时间信息的元组; 情况b、若时移时间点(TR)为时移点流时间戳(TB ),则时移状态标记(TF)为时移点的流时间戳信息和当前物理时间信息的元组。
4.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S200中,若时移时间点(TR)是时移点相对于当前直播时间的偏移值(TC),则时移状态标记(TF)为时移点相对于当前直播时间的偏移值(TC)。
5.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S300中,客户端发出的切片索引文件获取请求中包括直播内容标识(CH)和时移状态标记(TF )。
6.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S400中,包括以下步骤: S401、从切片索引文件请求中得到时移状态标记(TF)或时移点相对于当前直播时间的偏移值(TC); S402、若从切片索引文件请求中得到时移点相对于当前直播时间的偏移值(TC),则时移状态标记(TF)是TFC,且TFC为时移点相对于当前直播时间的偏移值(TC); .5403、取当前物理时间(T)或当前流时间戳(S); .5404、计算本次时移请求(R)对应的流时间戳(ST),包括: 若时移状态标记(TF)是TFAJlJ:流时间戳(ST) =TFAl+(T-TFA2) 若时移状态标记(TF)是TFBJlJ:流时间戳(ST) =TFBl+(T-TFB2) 若时移状态标记(TF)是TFCJlJ:流时间戳(ST) =S-TFC ; .5405、计算本次时移请求(R)对应的切片序列。
7.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S500中,包括: 情况a:当协议为HLS协议时,按照m3u8文件格式规范,时移服务基于预设的切片时间间隔(D)、切片序列和存储的时移数据,生成m3u8格式的切片索引文件; 情况b:当协议为HDS协议时,按照bootstrap文件格式规范,时移服务基于预设的切片时间间隔(D)、切片序列和存储的时移数据,生成bootstrap格式的切片索引文件。
8.根据权利要求1所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S600中,还包括:客户端向时移服务端重复发出的切片索引文件获取请求中,包含直播内容标识(CH)和时移点相对于当前直播时间的偏移值(TC)或直播内容标识(CH)和时移状态标记(TF)。
9.根据权利要求1至8中任一所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤S lOO实施前,还包括在时移服务端中建立时移数据存储区的步骤S10,其步骤如下: .511、定义时移时间长度为(L),则时移服务器保证存储从时间戳(S-L)到当前时间戳(S)的音、视频数据,且随着时间戳(S)的推移,不断删除旧的时移数据和存储新的时移数据,进行滚动存储; . 512、对直播视频数据和时移视频数据,建立时间戳和切片序列的映射规则。.
10.根据权利要求9所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在步骤SlO中,预设的索引文件中需包含的切片个数(C)是常量,与时移时间长度(L)无关。
11.根据权利要求10所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于:当协议为HLS协议时,预设的索引文件中需包含的切片个数(C)最常见的取值为(C)=IO,比较常见取值为3〈= (C)<=20 ;当协议为HDS协议时,(C)最常见的取值为(C)=20,比较常见取值为5〈= (C)〈=50。
12.根据权利要求9所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,当用户要访问多个码率直播构成的自适应码率直播组内容进行时移时,包括以下步骤: SAO1、客户端发出时移请求(R)时,携带请求的直播频道组内容标识(CG)、时移时间点(TR); SA02、时移服务端接到客户端请求后,对时移时间点(TR)进行解析,若时移时间点(TR)是时移点物理时间(TA)或时移点流时间戳(TB),则选择该直播组中一路直播,得到时移状态标记(TF),然后向客户端反馈直播频道组内容标识(CG)和时移状态标记(TF);若时移时间点(TR)是时移点相对于当前直播时间的偏移值(TC),则直接跳转至SA04 ;SA03、客户端接收到时移服务端的反馈后,向时移服务端发出请求,请求中携带直播频道组内容标识(CG)和时移状态标记(TF); SA04、时移服务端接到客户端携带的直播频道组内容标识(CG)和时移状态标记(TF)或直播频道组内容标识(CG)和时移点相对于当前直播时间的偏移值(TC)的请求后,生成组索引文件返回给客户端; SA05、客户端收到组索引文件后,获取其中包含的各路直播对应的索引文件URL ; SA06、客户端对各路直播对应的索引文件URL进行判断,若各路直播对应的索引文件URL中包含多个URL,则依据自身情况选择URL并进行请求; 若各路直播对应的索引文件URL中只有一个URL,则直接请求该URL ; SA07、时移服务端接收到客户端的包含直播内容标识(CH)和时移状态标记(TF)或直播内容标识(CH)和时移点相对于当前直播时间的偏移值(TC)的索引获取请求后,并依次执行步骤S400和S500,形成索引文件返回给客户端; SA08、客户端收到索引文件后,从索引文件中取得具体的切片序列,进行实际切片文件的下载和播放; SA09、跳转至步骤SA06,以维持时移过程。
13.根据权利要求9所述的面向互联网的基于分片传输的大尺度直播时移方法,其特征在于,在时移过程中采用下述步骤以进行快进,包括: SBO1、客户端发送快进请求时,URL中携带直播内容标识(CH)、时移时间点(TR)与播放标识(PM); SB02、时移服务端接收客户端请求; SB03、时移服务端从请求URL中,获得播放标识(PM),并提取出快进倍速(SP); SB04、若播放标识(PM)是快进的请求,且当前播放内容已达到直播点,则时移服务端发送重定向请求给客户端,重定向到正常速率播放的URL,结束快进处理过程;若当前播放内容未达到直播点,则执行步骤SB05 ; SB05、时移服务端由时移时间点(TR)得到时移状态标记(TF),将(TF)和快进倍速(SP)反馈给客户端; SB06、客户端接收到时移服务端的反馈后,向时移服务端发出新的切片索引文件获取请求; SB07、时移服务端取当前物理时间(T); SB08、时移服务端从客户端请求中获取时移状态标记(TF)和快进倍速(SP)后,计算本次时移快进请求对应的流时间戳(ST); SB09、时移服务端计算本次时移请求(R)对应的切片序列: 将时间戳(ST)作为输入,执行步骤S12的映射规则,以得到切片序列; SB10、时移服务端通过切片序列,生成相应的切片索引文件,返回给客户端; SB11、客户端从索引文件中取得具体的切片序列,发送实际切片文件的访问请求; SB12、时移服务端收到客户端发来的切片访问请求后,返回的切片中只包含关键帧,不包含其他视频帧类型数据和音频数据,包括: SB121、返回的切片中只包含部分关键帧,而忽略掉另一部分关键帧,以保证快进时发送的切片数据占用带宽不会过大; SB122、修改返回的切片中的关键帧时间戳,以使时间戳的增长速度符合视频流的快进播放所需的增长速度; SB13、客户端播放收到的切片数据; SB14、客户端重复向时移服务端发出包含直播内容标识(CH)、时移状态标记(TF)、快进倍速(SP)的快进切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放。
14.一种实施上述权利要求9中所述方法的系统,其特征在于,包括客户端与时移服务端,其中,客户端包括: 客户端数据传输模块,用于发送时移请求、向时移服务端发送切片索引文件获取请求、以及接收时移服务端的反馈; 切片索引文件获取模块,用于获取切片索引文件; 切片序列处理模块,用于取得索引文件中具体的切片序列,进行实际切片文件的下载和播放,并重复发出切片索引文件获取请求,以不断获得新的切片序列、下载新的切片文件并播放; 时移服务端包括: 时移数据存储区,用于存储时移数据; 时移状态标记生成模块,用于在时移服务端接到客户端请求后,由时移时间点得到时移状态标记; 切片序列生成模块,用于对切片索引文件获取请求进行处理,以得到该次时移请求的切片序列; 直播切片索引文件生成模块,用于通过切片序列生成相应的直播切片索引文件; 时移服务端数据传输模块,用于接收客户端发送的时移请求,并将时移服务端的反馈以及生成的直播切片索引文件发送给客户端。
【文档编号】H04N21/23GK103581693SQ201310559939
【公开日】2014年2月12日 申请日期:2013年11月12日 优先权日:2013年11月12日
【发明者】李伟华, 李毅, 要文涛 申请人:北京清源新创科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1