一种网络直播流的seek实现方法及装置与流程

文档序号:15222029发布日期:2018-08-21 17:35阅读:346来源:国知局

本申请涉及电视流媒体技术领域,尤其涉及一种网络直播流的seek实现方法及装置。



背景技术:

随着智能电视的普及以及普通用户家庭中网络带宽的提高,越来越多的用户可以选择通过网络来直播电视信号,或者通过电视观看直播视频等。随着互联网带宽的不断增加和上网人数的迅速增长,为视频节目在网络上传输创造了条件,现在许多智能电视均能通过互联网观看流媒体点播、直播节目,实现了一些之前数字电视信号比较难以实现的功能,比如直播seek功能。

现有电视中的电视信号网络直播都是通过流媒体来实现的,现有通用的技术有hls(httplivestreaming,超文本传输协议直播流媒体)、dash(dynamicadaptivestreamingoverhttp,基于超文本传输协议的动态自适应流传输)、mss(maximumsegmentsize,最大分片长度)三大流媒体技术,这三大流媒体技术都是先下载一个manifest文件,直播的实现是服务器不断去更新manifest文件来实现媒体片段不断更新,从而实现电视信号直播功能。在视频播放过程中,人们会将视频从一个时间点拖动到另一个时间点,来观看自己关心的内容,这一操作过程称为seek(即回看和快进)。传统的电视信号如果想要回看视频,是通过录制时移的方式实现的,首先需要在电视上插上移动硬盘等设备,设置录制点,从录制点开始将电视直播视频录制下来;然后将录制的视频内容转移到移动硬盘里,在想要回看之前的视频内容时,只要播放移动硬盘里录制的视频即可,由此间接实现电视视频的seek功能。

但是,对于直播的视频,由于没有办法获取播放视频的总时长及当前播放时间点,就不可能获取seek后的时间点,因此一般网络直播不支持seek功能。即使通过录制时移的方式实现seek时,每次也都必须设置录制点,将录制视频内容移动到移动硬盘里,操作比较繁琐,不能实时地去进行seek操作。



技术实现要素:

本申请提供了一种网络直播流的seek实现方法及装置,以解决目前直播视频无法前后seek,或者不能实时地进行seek操作的技术问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

第一方面,本申请实施例公开了一种网络直播流的seek实现方法,所述方法包括:

启动流媒体播放器,获取直播视频的当前播放时间点;

预估服务器允许的seek范围,判断向前或向后seek的seek时间点与当前播放时间点的时间差值是否在所述seek范围内;

若是,则根据当前播放的媒体片段数值与所述时间差值获取seek时间点对应的媒体片段,从所述媒体片段开始播放视频;

若否,则根据电子节目指南信息,查找当前点播应用中相同的视频内容,切换到点播视频观看所述视频内容。

第二方面,本申请实施例还公开了一种网络直播流的seek实现装置,所述装置包括:

获取模块,用于获取直播视频的当前播放时间点;

预估模块,用于预估服务器允许的seek范围;

判断模块:用于判断向前或向后seek的seek时间点与当前播放时间点的时间差值是否在所述seek范围内;

seek模块,当seek时间点与当前播放时间点的时间差值在所述seek范围内时,则根据当前播放的媒体片段数值与时间差值获取seek时间点对应的媒体片段,从所述媒体片段开始播放视频;

点播模块,当seek时间点与当前播放时间点的时间差值不在所述seek范围内时,则根据电子节目指南信息,查找当前点播应用中相同的视频内容,切换到点播视频观看视频内容。

与现有技术相比,本申请的有益效果为:

本申请实施例提供了一种网络直播流的seek实现方法及装置,该方法包括:启动流媒体播放器,获取直播视频的当前播放时间点;预估服务器允许的seek范围,判断向前或向后seek的seek时间点与当前播放时间点的时间差值是否在所述seek范围内;若是,则根据当前播放的媒体片段数值与所述时间差值获取seek时间点对应的媒体片段,从所述媒体片段开始播放视频;若否,则根据电子节目指南信息,查找当前点播应用中相同的视频内容,切换到点播视频观看所述视频内容。本申请提供的网络直播流的seek实现方法及装置能够通过服务器不断更新直播视频,根据媒体片段的时长计算获得当前播放的时间,因此能够向服务器请求当前播放时间前、后的视频,即能够实现向前或向后seek操作;另外,由于服务器会不定时的清除已更新过的视频内容,因此服务器存在允许seek的范围,用户可以在seek范围内对直播的视频进行seek操作,使得用户在视频直播的过程中可以前后seek,可以着重看自己喜欢看的内容部分,从而能够增加用户的良好体验。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种网络直播流的seek实现方法的流程图;

图2为本申请实施例提供的一种网络直播流的seek实现方法中s200的一种详细流程图;

图3为本申请实施例提供的一种网络直播流的seek实现方法中s200的另一种详细流程图;

图4为本申请实施例提供的一种网络直播流的seek实现方法中s300的一种详细流程图;

图5为本申请实施例提供的一种网络直播流的seek实现方法中seek时间轴的展示图;

图6为本申请实施例提供的一种网络直播流的seek实现方法中s300的另一种详细流程图;

图7为本申请实施例提供的一种网络直播流的seek实现装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

在现有电视中的电视信号网络直播,都是通过流媒体来实现的。现有通用的技术有hls(httplivestreaming,超文本传输协议直播流媒体)、dash(dynamicadaptivestreamingoverhttp,动态自适应流媒体)、mss(maximumsegmentsize,最大分片长度)三大流媒体技术。这几大流媒体技术都是先下载一个manifest文件,manifest文件包括多个视频片段的地址标识(uri),视频片段以秒(s)为单位,根据视频片段的uri进行逐个下载播放。直播的实现是服务器不断去更新manifest文件来实现视频片段不断更新,从而实现了电视信号直播功能。

对于直播的视频,由于服务器实时更新manifest文件,时长一直在增加,因此没有办法获取播放视频的总时长,以及当前播放时间点,所以就不可能获取seek后的时间点,故而一般网络直播不支持seek功能。为了解决这一问题,本申请实施例提出了一种网络直播流的seek实现方法,可以通过服务器计算获得直播视频播放的时间点,从而可以对直播的视频进行seek操作。

参见图1,为本申请实施例提供的一种网络直播流的seek实现方法的流程图。

如图1所示,本申请实施例提供的网络直播流的seek实现方法包括:

s100:启动流媒体播放器,获取直播视频的当前播放时间点。

启动流媒体播放器,开始播放直播视频。服务器实时更新manifest文件,因流媒体文件manifest文件中记录着每一个媒体片段文件的时长,因此下载并解析manifest文件,获取manifest文件中每个媒体片段的时长及地址标识uri。可以根据每个媒体片段的时长计算得到当前播放的时间点,如每个媒体片段的时长可以相同,也可以不同,我们可以在直播视频起播的时候算作时间0点,第0个媒体片段,之后开始计时,同时对媒体片段开始计数,以每个媒体片段的时长累加来计算得到当前播放的时间点,获取直播视频播放的相对时长。

s200:预估服务器允许的seek范围,判断向前或向后seek的seek时间点与当前播放时间点的时间差值是否在所述seek范围内。

由于有些服务器在刷新了新的媒体片段的时候,会定期删除之前的媒体片段,如有的服务器过五分钟会删掉半小时之前的视频内容,有的服务器过十分钟会删掉十分钟之前的视频内容,有的服务器不会删除视频内容,因此需要先预估服务器允许的seek范围,用户只能在该seek范围内才能进行前、后seek操作。

如图2所示,预估服务器允许的向前seek的seek范围的方法如下:

s201:设定当前播放时间点与向前seek时间点的第一时间差值。

因为服务器是实时更新的,且有的服务器会按照一定规律删除已播放过的视频内容,因此我们执行seek操作必须有一个合适的区间,若向前seek时间点对应的媒体片段已被删除,则无法向前seek,因此我们只有一定的seek范围内执行向前seek操作。服务器后台维护的媒体播放列表可能时间比较长,也可能时间比较短,因此,在每次要执行seek命令的时候,我们会先预估一个向前seek的范围。

s202:根据当前播放时间点之前媒体片段的时长与第一时间差值,获取所述向前seek时间点对应的媒体片段。

为了预估服务器允许向前seek的seek范围,先设定一个当前播放时间点与向前seek时间点的第一时间差值t1,获取当前播放时间点之前的各个媒体片段的时长,根据设定的第一时间差值t1,获取与当前播放时间点相差第一时间差值t1的向前seek时间点对应的媒体片段。

s203:向服务器请求所述媒体片段的地址标识,若请求成功,则将所述第一时间差值定为服务器允许向前seek的seek范围。

获取到向前seek时间点对应的媒体片段后,向服务器请求向前seek时间点对应媒体片段的uri,若能够请求成功(即能够播放向前seek时间点对应的媒体片段),就说明设定的第一时间差值在服务器允许的向前seek范围内,则我们可以将设定的第一时间差值t1暂定为服务器允许向前seek的seek范围。

然后按照一定规律扩大第一时间差值t1的范围,设定时间差值t1′,向服务器请求与当前播放时间点相差时间差值t1′的向前seek时间点对应的媒体片段,若请求成功,则将服务器允许向前seek的seek范围更新为t1′,若请求失败,则将时间差值t1″设定为t1与t1′之间的值;再次向服务器请求与当前播放时间点相差时间差值t1″的向前seek时间点对应的媒体片段,若请求成功,则将服务器允许向前seek的seek范围更新为t1″;若请求失败,则再次修改第一时间差值,直至确定最终服务器允许向前seek的seek范围。

s204:若请求失败,则重新设定当前播放时间点与向前seek时间点的第二时间差值,直至媒体片段的地址标识请求成功。

如果向服务器请求向前seek时间点对应媒体片段的uri失败(即无法播放向前seek时间点对应的媒体片段),则说明设定的第一时间差值不在服务器允许的向前seek范围内,设定的第一时间差值对应的向前seek时间点处的媒体片段已被服务器删除,需要重新设定向前seek时间点,即重新设定当前播放时间点与向前seek时间点的第二时间差值,且第二时间差值与第一时间差值遵循一定的规律,再向服务器请求与当前播放时间点相差第二时间差值的向前seek时间点对应的媒体片段uri,若请求成功,则将第二时间差值定为服务器允许向前seek的seek范围;若请求失败,则重新设定当前播放时间点与向前seek时间点的第三时间差值,直至媒体片段的uri请求成功,则将该媒体片段对应的向前seek时间点与当前播放时间点的时间差值定为服务器允许向前seek的seek范围。

在具体实施过程中,可设定第二时间差值为第一时间差值的一半,然后向服务器请求与当前播放时间点相差第二时间差值的向前seek时间点对应媒体片段的uri,若请求成功,则将第二时间差值定为服务器允许向前seek的seek范围;若请求失败,则重新设定当前播放时间点与向前seek时间点的第三时间差值,第三时间差值设定为第二时间差值的一半,依次类推,直至对应的媒体片段请求成功。

在具体实施例中,可将第一时间差值设定为30min,即当前播放时间点与向前seek时间点相差30min,如当前播放时间点为1小时30分,则向前seek时间点为1小时,向服务器请求播放时间点为1小时对应媒体片段的uri,若请求成功,则根据媒体片段的uri下载并播放媒体片段,同时将服务器允许向前seek的seek范围暂定为30min。若请求失败,则将第二时间差值设定为15min,即当前播放时间点与向前seek时间点相差15min,如当前播放时间点为1小时30分,则向前seek时间点为1小时15分,向服务器请求播放时间点为1小时15分对应媒体片段的uri,若请求成功,则根据媒体片段的uri下载并播放媒体片段,同时将服务器允许向前seek的seek范围暂定为15min。若请求失败,则将第三时间差值设定为7.5min,依次类推,直至向前seek时间点对应媒体片段的uri请求成功,则将当前播放时间点与此时向前seek时间点的时间差值定为服务器允许向前seek的seek范围。

在具体实施过程中,也可将第二时间差值设定为第一时间差值与预设值的差值,该预设值可为2,4,5等任意整数值。设定好第二时间差值后,向服务器请求与当前播放时间点相差第二时间差值的向前seek时间点对应媒体片段的uri,若请求成功,则将第二时间差值暂定为服务器允许向前seek的seek范围。若请求失败,则重新设定第三时间差值,将第三时间差值设定为第二时间差值与预设值的差,重新向服务器请求对应媒体片段的uri,若请求成功,则将第三时间差值暂定为服务器允许向前seek的seek范围。若请求失败,则设定第四时间差值,依次类推,直至对应媒体片段的uri请求成功,则将该媒体片段对应时间点与当前播放时间点的时间差值定为服务器向前seek的seek范围。

在具体实施例中,可将第一时间差值设定为30min,即当前播放时间点与向前seek时间点相差30min,如当前播放时间点为1小时30min,则向前seek时间点为1小时,向服务器请求播放时间点为1小时对应媒体片段的uri,若请求成功,则将服务器允许向前seek的seek范围定为30min。若请求失败,预设值取值为5,则将第二时间差值设定为25min,如当前播放时间点为1小时30分,则向前seek时间点为1小时5分,向服务器请求播放时间点为1小时5分对应媒体片段的uri,若请求成功,则将服务器允许向前seek的seek范围定为25min。若请求失败,则将第三时间差值设定为20min,依次类推,直至向前seek对应媒体片段的uri请求成功,则将当前播放时间点与此时向前seek时间点的时间差值定为服务器允许向前seek的seek范围。

设定当前播放时间点与向前seek时间点的时间差值的方式不仅限于1/2值法、预设值法等,也可以是将两者结合,如将第二时间差值设定为第一时间差值的一半,第三时间差值设置为第二时间差值与预设值的差,如此可以减少请求次数,也可以提高预估范围的准确度,其均属于本申请实施例的保护范围。

如图3所示,预估服务器允许的向后seek的seek范围的方法如下:

s205:设定向后seek时间点与当前播放时间点的第一时间差值。

因为服务器是实时更新的,服务器更新时间是单调递增的,表示直播视频更新到的时间点,且服务器更新时间是无法获取到的,我们只能预估一个服务器允许向后seek的seek范围,去试探请求媒体片段。只有向后seek的时间点位于服务器允许向后seek的seek范围内才能进行seek操作,且不同服务器允许向后seek的seek范围各不相同,因此首先需要设定向后seek时间点与当前播放时间点的第一时间差值t1,预估服务器允许向后seek的seek范围。

s206:根据当前播放时间点之后媒体片段的时长与第一时间差值,获取所述向后seek时间点对应的媒体片段。

下载当前播放时间点对应的媒体片段,获取当前播放时间点之后各个媒体片段的时长,计算得到与当前播放时间点相差第一时间差值t1的向后seek时间点,并获取向后seek时间点对应的媒体片段。

s207:向所述服务器请求所述媒体片段的地址标识,若请求成功,则将所述第一时间差值定为服务器允许向后seek的seek范围。

获取到向后seek时间点对应的媒体片段后,向服务器请求向后seek时间点对应媒体片段的uri,若能够请求成功,则说明设定的第一时间差值t1在服务器允许的向后seek范围内,那我们就可以将设定的第一时间差值t1暂定为服务器允许向后seek的seek范围。

然后按照一定规律扩大第一时间差值t1的范围,设定时间差值t1′,向服务器请求与当前播放时间点相差时间差值t1′的向后seek时间点对应的媒体片段,若请求成功,则将服务器允许向后seek的seek范围更新为t1′,若请求失败,则将时间差值t1″设定为t1与t1′之间的值;再次向服务器请求与当前播放时间点相差时间差值t1″的向后seek时间点对应的媒体片段,若请求成功,则将服务器允许向后seek的seek范围更新为t1″;若请求失败,则再次修改第一时间差值,直至确定最终服务器允许向后seek的seek范围。

s208:若请求失败,则重新设定向后seek时间点与当前播放时间点的第二时间差值,直至媒体片段的地址标识请求成功。

如果向服务器请求向后seek时间点对应媒体片段的uri失败,则说明设定的第一时间差值不在服务器允许的向后seek范围内,或流媒体更新时间还未更新到向后seek时间点,需要重新设定向后seek时间点,即重新设定向后seek时间点与当前播放时间点的第二时间差值,且第二时间差值与第一时间差值遵循一定的规律,再向服务器请求与当前播放时间点相差第二时间差值的向后seek时间点对应的媒体片段uri,若请求成功,则将第二时间差值定为服务器允许向后seek的seek范围;若请求失败,则重新设定向后seek时间点与当前播放时间点的第三时间差值,直至媒体片段的uri请求成功,则将该媒体片段对应的向后seek时间点与当前播放时间点的时间差值定为服务器允许向后seek的seek范围。

在按照一定规律设定第二时间差值、第三时间差值时,可采用1/2值法,即第二时间差值设定为第一时间差值的一半,第三时间差值设定为第二时间差值的一半,依次类推。也可采用预设值法,即第二时间差值设定为第一时间差值与预设值(预设值可以是1、2、3等小于第一时间差值的任意值)的差值,第三时间差值设定为第二时间差值与预设值的差值,依次类推。设定好时间差值后,依次向服务器请求与当前播放时间相差设定时间差值的向后seek时间点对应的媒体片段,直至请求成功,并将此时的时间差值定为服务器允许向后seek的seek范围。

最终确认服务器允许的seek范围(向前seek范围与向后seek范围)后,将该范围向用户展示,以方便用户具体选择。

s300:若是,则根据当前播放的媒体片段数值与所述时间差值获取seek时间点对应的媒体片段,从所述媒体片段开始播放视频。

当向前seek或向后seek的时间点位于服务器允许的seek范围时,则根据当前播放时间点与向前seek或向后seek时间点的时间差值获取seek时间点对应的媒体片段,下载seek时间点及之后的媒体片段,并从该处媒体片段开始播放视频。

如图4所示,向前seek播放视频的方法如下:

s301:获取当前播放时间点对应的媒体片段数值。

如图5所示,我们规定直播视频起播的时间点为0,时间轴分为两条,一条是作为服务器更新到的媒体时间update_time,该时钟是单调递增的,表示直播视频更新到的时间点;一条是媒体流播放的时间轴stream_time,表示直播视频播放到的时间点。为了方便,假如每个媒体片段的时长均为10s(实际上一般媒体片段的时长都不相同),向前或向后seek操作都是根据stream_time的时间轴来参考做的。

设定直播视频的时间为:update_time=stream_time=0,同时对媒体片段从0开始计数,即segment_number=0,之后update_time会随着时间单调递增,segment_number也会单调递增,对媒体片段进行计数(没下载一个媒体片段uri,计数就加1),stream_time也会由视频起播点开始计时,从而可以获取当前播放时间点。

获取当前播放时间点对应的媒体片段数值,就可对应获取当前播放时间点,如当前直播视频播放时间点为80s,每个媒体片段的时长均为10s,则当前播放时间点对应的媒体片段数值为8,即segment_number=8。若当前直播视频播放时间点为95s时,每个媒体片段的时长均为10s,则当前播放时间点对应的媒体片段数值=95/10=9,保留小数点之前的整数部分,即segment_number=9。

s302:根据当前播放时间点与向前seek时间点的时间差值计算获得当前媒体片段数值与待播放媒体片段数值的差值。

当用户选择向前seek的时间点后,计算当前播放时间点与向前seek时间点的时间差值,将该时间差值除以每个媒体片段的时长,即可得到当前媒体片段数值segment_number与待播放媒体片段数值(向前seek时间点对应的媒体片段数值)的差值,媒体片段数值差值=(stream_time-seek_time)/10。

s303:根据当前媒体片段数值与媒体片段数值的差值获得所述向前seek时间点对应的媒体片段数值。

获取当前媒体片段数值segment_number与待播放媒体片段数值的差值后,根据当前媒体片段数值segment_number与媒体片段数值的差值获取待播放媒体片段的数值,即向前seek时间点对应的媒体片段数值=segment_number-(stream_time-seek_time)/10。

s304:向所述服务器请求所述媒体片段数值对应的媒体片段的地址标识,根据所述地址标识下载并播放所述媒体片段。

获取向前seek时间点对应的媒体片段数值后,向服务器请求该媒体片段数值对应的媒体片段的地址标识uri,从向前seek时间点对应的媒体片段开始播放,从而实现向前seek操作。

在具体实施过程中,假如流媒体播放时间stream_time播放到了80s,此时用户需要向前seek的操作,需要看某个时间点seek_time=20s的视频内容,那么我们会进行计算:当前播放时间点与向前seek时间点的相对时间差值(stream_time-seek_time=80s-20s)为60s;假设媒体片段的时长均为10s,则当前媒体片段数值(segment_number=8)与待播放媒体片段数值的差值=(stream_time-seek_time)/10=60/10=6;根据当前媒体片段数值(segment_number=8)与媒体片段数值的差值6,计算获得待播放媒体片段的数值=8-6=2,即向前seek时间点对应的媒体片段数值为2;向服务器请求媒体片段数值为2的媒体片段的uri,跳转到媒体片段数值为2的媒体片段,从该媒体片段开始播放,从而实现用户向前seek到20s的需求。

为了方便,上述方法将每个媒体片段的时长设定为相同的,但实际上每个媒体片段的时长是各不相同的,当每个媒体片段的时长各不相同,用户选择向前seek时,可通过manifest文件获取各个媒体片段的时长,计算当前播放时间点之前的媒体片段的时长,获取向前seek时间点对应的媒体片段。

本申请实施例提供的网络直播流的seek实现方法不仅可实现指定时间点的向前seek操作,还可执行向前seek指定时间段的操作,如流媒体播放时间stream_time播放到了80s,用户想回看50s前的视频内容,即已知当前播放时间点和与当前播放时间点的相对时间差值,则执行向前seek的方法为:当前媒体片段数值(segment_number=8)与待播放媒体片段数值的差值=50/10=5;根据当前媒体片段数值(segment_number=8)与媒体片段数值的差值5,计算获得带播放媒体片段数值=8-5=3,即向前seek时间点对应的媒体片段数值为3;向服务器请求媒体片段数值为3的媒体片段的uri,跳转到媒体片段数值为3的媒体片段,从该媒体片段开始播放,从而实现用户向前seek50s的需求。

采用本申请实施例提供的网络直播流的seek实现方法,不仅可以进行向前seek操作,还可进行向后seek操作。如图6所示,向后seek播放视频的方法如下:

s305:获取当前播放时间点对应的媒体片段数值。

由于服务器更新时间update_time是单调递增的,当流媒体播放时间stream_time与服务器更新时间update_time同步时,此时无法进行向后seek操作;当流媒体播放时间stream_time与服务器更新时间update_time不同步时,用户可在服务器允许向后seek的seek范围内进行向后seek操作。

获取当前播放时间点对应的媒体片段数值,就可对应获取当前播放时间点,如当前直播视频播放时间点为80s,每个媒体片段的时长均为10s,则当前播放时间点对应的媒体片段数值为8,即segment_number=8。

s306:根据向后seek时间点与当前播放时间点的时间差值计算获得待播放媒体片段数值与当前媒体片段数值的差值。

当用户选择向后seek的时间点后,计算向后seek时间点与当前播放时间点的时间差值,将该时间差值除以每个媒体片段的时长,即可得到当前媒体片段数值segment_number与待播放媒体片段数值(向后seek时间点对应的媒体片段数值)的差值,媒体片段数值差值=(seek_time-stream_time)/10。

s307:根据当前媒体片段数值与媒体片段数值的差值获得所述向后seek时间点对应的媒体片段数值。

获取待播放媒体片段数值与当前媒体片段数值segment_number的差值后,根据当前媒体片段数值segment_number与媒体片段数值的差值获取待播放媒体片段的数值,即向后seek时间点对应的媒体片段数值=segment_number+(seek_time-stream_time)/10。

s308:向所述服务器请求所述媒体片段数值对应的媒体片段的地址标识,并根据所述地址标识下载并播放所述媒体片段。

获取向后seek时间点对应的媒体片段数值后,向服务器请求该媒体片段数值对应的媒体片段的地址标识uri,从向后seek时间点对应的媒体片段开始播放视频内容,从而实现向后seek操作。

在具体实施过程中,假如stream_time播放到了80s,此时用户需要向后seek的操作,如需要看某个时间点seek_time=120s的视频内容,且该向后seek时间点位于服务器允许向后seek的seek范围内,那么我们会进行计算:向后seek时间点与当前播放时间点的相对时间差值(seek_time-stream_time=120s-80s)为40s;假设媒体片段的时长均为10s,则待播放媒体片段数值与当前媒体片段数值(segment_number=8)的差值=(seek_time-stream_time)/10=40/10=4;根据当前媒体片段数值(segment_number=8)与媒体片段数值的差值4,计算获得待播放媒体片段的数值=8+4=12,即向后seek时间点对应的媒体片段数值为12;向服务器请求媒体片段数值为12的媒体片段的uri,从该uri的媒体片段开始播放,从而实现用户向后seek到120s的需求。

同上,本申请实施例提供的网络直播流的seek实现方法不仅可实现指定时间点的向后seek操作,还可执行向后seek指定时间段的操作,只要该时间段位于服务器允许向后seek的seek范围内。

s400:若否,则根据电子节目指南信息,查找当前点播应用中相同的视频内容,切换到点播视频观看所述视频内容。

当向前或向后seek的时间点超出服务器允许的seek范围时,则根据epg(electronicprogramguide,电子节目指南)查询当前点播应用中是否存在相同的视频内容,若是,则根据用户选择切换到点播应用中观看视频内容,即用户可根据自身需求,选择是否切换到点播应用中,点播应用中视频内容已全部更新完毕,可以任意向前或向后seek;若否,则表明点播应用中没有相同的视频内容,也不可以执行seek操作,只能等到直播视频全部更新完成后,在点播应用中再次观看。

采用本申请实施例提供的网络直播流的seek实现方法,可以实现直播视频的向前或向后seek操作,即用户在看直播节目的过程中,有其他事情需要处理,那么就会漏掉一段视频,这时候如果信号可以向前seek,那么在节目允许的seek范围内可以seek到之前内容播放的位置,让视频重新开始播放,如果超出了节目的seek范围,还可以通过epg信号自动搜索识别网络资源中相同的点播视频,根据用户的选择是否需要切换为点播视频播放;当用户不喜欢当前播放的视频内容时,这时候如果信号可以向后seek,那么在节目允许的seek范围内可以seek到之后内容播放的位置,跳过该段不喜欢的视频。如此,极大地增强了用户的体验。

本申请实施例提供的网络直播流的seek实现方法包括:启动流媒体播放器,获取直播视频的当前播放时间点;预估服务器允许的seek范围,判断向前或向后seek的seek时间点与当前播放时间点的时间差值是否在seek范围内;若是,则根据当前播放的媒体片段数值与时间差值获取seek时间点对应的媒体片段,从该媒体片段开始播放视频;若否,则根据电子节目指南信息,查找当前点播应用中相同的视频内容,切换到点播视频观看视频内容。本申请提供的网络直播流的seek实现方法可根据服务器更新的manifest文件获取各个媒体片段的时长,以每一个媒体片段的时长累加来计算得到当前播放的时间点,如此就可向服务器请求当前播放时间点前、后的媒体片段,从而对直播的视频进行seek操作;另外,由于服务器会不定时的清除已更新过的视频内容,因此需要确定服务器允许的seek范围,用户可以在seek范围对直播视频进行前、后seek操作,使得用户可以着重看自己喜欢看的内容部分,极大地提高了用户的良好体验。

基于本申请实施例提供的网络直播流的seek实现方法,本申请实施例还提供了一种网络直播流的seek实现装置,如图7所示,该实现装置包括:

获取模块100,用于获取直播视频的当前播放时间点。启动流媒体播放器,服务器实时更新manifest文件,且manifest文件中记载着每一个媒体片段的时长,因此可以根据每个媒体片段的时长计算得到当前播放的时间点。

预估模块200,用于预估服务器允许的seek范围。由于有些服务器在刷新了新的媒体片段后,会定期删除之前的媒体片段,如有的服务器过五分钟会删除半小时之前的视频内容,有的服务器过十分钟会删除十分钟之前的视频内容,因此需要先预估服务器允许的seek范围,用户只能在该seek范围内才能进行前、后seek操作。

判断模块300,用于判断向前或向后seek的seek时间点与当前播放时间点的时间差值是否在seek范围内。当用户想向前seek直播视频的内容时,需要首先判断向前seek的seek时间点与当前播放时间点的时间差值是否超出允许的向前seek范围,防止用户向前seek的时间点超出seek范围,造成无法执行向前seek操作;同理,向后seek也需先判断向后seek的seek时间点与当前播放时间点的时间差值是否超出允许的向后seek范围。

seek模块400,当seek时间点与当前播放时间点的时间差值在seek范围内时,根据当前播放的媒体片段数值与时间差值获取seek时间点对应的媒体片段,从媒体片段开始播放视频。当向前或向后seek的seek时间点位于seek范围内时,向服务器请求seek时间点对应的媒体片段,从对应的媒体片段开始播放视频,从而实现了直播视频的向前或向后seek。

点播模块500,当seek时间点与当前播放时间点的时间差值不在seek范围内时,则根据电子节目指南信息,查找当前点播应用中相同的视频内容,切换到点播视频观看视频内容。当向前或向后seek的seek时间点不在seek范围内时,查找点播应用中是否存在相同的视频内容,若存在,则切换到点播视频观看视频;若不存在,则停止seek操作。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

由于以上实施方式均是在其他方式之上引用结合进行说明,不同实施例之间均具有相同的部分,本说明书中各个实施例之间相同、相似的部分互相参见即可。在此不再详细阐述。

需要说明的是,在本说明书中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个操作与另一个操作区分开来,而不一定要求或暗示这些操作之间存在任何这种实际的关系或顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的电路结构不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种电路结构所固有的要素。在没有更多限制的情况下,有语句“包括一个……”限定的要素,并不排除在包括所述要素的电路结构中还存在另外的相同要素。

本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本申请的其他实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求的内容指出。

以上所述的本申请实施方式并不构成对本申请保护范围的限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1