一种视频流无缝切换方法及装置与流程

文档序号:16673998发布日期:2019-01-18 23:47阅读:450来源:国知局
一种视频流无缝切换方法及装置与流程

本发明涉及流媒体实时处理技术领域,特别涉及一种视频流无缝切换方法及装置。



背景技术:

目前主流视频app应用中,实现无缝切换大多采用双播放器来实现。即当前播放器播放原始清晰度的码流,用户点击切换后,app后台额外启动一个播放器实例来加载新清晰度的码流,播放过程中,按照切换策略(比如按帧号切换,当前时间点的关键帧切换),选择合适的切换点来进行两个播放器的拼接,以达到无缝切换的效果。

在线视频点直播应用中,流媒体服务器会根据app用户的请求推送相对应规格的媒体流,比如用户请求蓝光码流,后端系统推送蓝光画质的码流给到app端,用户请求超清码流,后端系统推送超清码流给到app端。然而随着app用户自身运行环境的改变,比如用户自身网络从蜂窝移动网切换到wifi网络,app终端系统负载变化等等,用户可能在观看的过程中,随时向上或是向下切换不同清晰度的码流。在之前主流视频app处理这种场景的常用做法是,先关闭之前原始码流的播放,然后在重新启播新规格的码流。这种传统的做法存在的缺陷是,在关闭原始码流和加载新码流的过程中,不可避免的会造成播放页面短暂的黑屏,整个流程又是串行执行的,新码流的加载可能会造成卡顿,用户再次等待的概率加大,从而呈现给app用户的观感体验较差。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种视频流无缝切换方法及装置,较为流畅的无缝切换,相比传统的切码流方案,极大的提高的用户的播放体验。所述技术方案如下:

第一方面,提供了一种视频流无缝切换方法,所述方法包括:

进行旧视频流的播放时,根据新视频流的切换请求,进行相应新视频流的切换准备和打开操作,所述切换准备包括确定所述新视频流的切换条件;所述新视频流打开后,持续获取所述旧视频流和所述新视频流的播放相关数据;重置解码器,获取所述新视频流的媒体数据;在所述新视频流的相应切换时间点,进行无缝切换。

结合第一方面,在第一种可能的实现方式中,通过p2p下载方式获取新旧视频流的媒体数据;根据通过传输层传输的新视频流的切换请求;对所述新旧视频流的媒体数据进行解封装,并根据播放请求进行流化封装;对所述媒体数据进行解复用,并进行解码显示。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述新视频流的切换准备包括确定所述新视频流的切换条件,具体包括:根据满足新视频流切换请求,计算所述新视频流的切换时间点,所述新视频流的切换时间点为所述旧视频流的媒体数据的下一关键帧;和/或,所述新视频流的打开操作,包括:根据接收的相应清晰度参数,打开所述新视频流;新视频流如果打开失败,则进行结果反馈,并继续播放旧视频流。

结合第一方面的第二种可能实现方式的,在第三种可能的实现方式中,所述切换请求包括清晰度一致和/或切换传输的会话id有效。

结合第一方面及第一方面的第一至三种可能实现方式的任一种,在第四至七种可能的实现方式中,在所述新视频流的相应切换时间点,进行无缝切换,包括:设旧视频流的当前播放时间为t0,播放器缓存时间为d,通过t0+d在当前视频流搜索该时间点后的第一个关键帧得到时间t1,同时异步打开新视频流,首先初设切换时间点定为t1,并在新视频流上搜索t0+d后的第一个关键帧得到时间t2,然后包括以下两种操作路径:第一、在旧视频流读取到t1之前打开了新视频流,如果abs(t1-t2)<=1000ms,此时时间戳变化不超过1s,进行切换;如果t1<t2,修正切换时间点为t2,并在t2的时间点进行切换;如果t1>t2,如果读取的时间点小于t2,修正切换时间点为t2,并在t2的时间点进行切换;如果读取的时间点小于t2,切换时间点设置为t1,并在t1的时间点进行切换;第二、在旧视频流读取的时间点t1之后打开了新视频流,新视频流打开成功后,从t0+d后的第一个关键帧t2开始发送新视频流的播放数据,待获取到下一个关键帧时,进行切换。

第二方面,提供了一种视频流无缝切换装置,包括:切换预备模块,所述切换预备模块进一步包括切换准备模块及打开操作模块,所述切换准备模块和所述打开操作模块用于根据满足新视频流的切换条件的切换请求,进行相应新视频流的切换准备和打开操作,所述切换准备包括确定所述新视频流的切换条件;获取模块,用于所述新视频流打开后,持续获取所述旧视频流和所述新视频流的播放相关数据;解码模块,用于重置解码器,获取所述新视频流的媒体数据;切换模块,用于在所述新视频流的相应切换时间点,进行无缝切换。

结合第二方面,在第一种可能的实现方式中,所述装置的播放流程架构由p2p下载层、传输层、播放层以及解码显示层构成,所述p2p下载层用于通过本地下载、本地代理和/或自身服务器调用提供媒体数据来源,所述传输层用于从所述p2p下载层获取媒体数据,并对媒体数据进行解封装,然后根据播放层的数据请求进行相应流化封装,所述播放层用于获取媒体数据后进行解复用,最后通过解码显示层进行解码显示。

结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述切换准备模块进一步包括计算子模块,所述计算子模块用于确定所述新视频流的切换条件,所述计算子模块具体用于:根据满足新视频流切换请求,计算所述新视频流的切换时间点,所述新视频流的切换时间点为所述旧视频流的媒体数据的下一关键帧;和/或,所述打开操作模块进一步包括新视频流打开子模块和结果反馈子模块,所述新视频流打开子模块用于:根据接收的相应清晰度参数,打开所述新视频流;所述结果反馈子模块用于:新视频流如果打开失败,则进行结果反馈,并继续播放旧视频流。

结合第二方面的第二种可能实现方式,在第三种可能的实现方式中,所述切换请求包括清晰度一致和/或切换传输的会话id有效。

结合第二方面及第二方面的第一至三种可能实现方式的任一种,在第四至七种可能的实现方式中,所述切换模块用于:设旧视频流的当前播放时间为t0,播放器缓存时间为d,通过t0+d在当前视频流搜索该时间点后的第一个关键帧得到时间t1,同时异步打开新视频流,首先初设切换时间点定为t1,并在新视频流上搜索t0+d后的第一个关键帧得到时间t2,然后包括以下两种操作路径:第一、在旧视频流读取到t1之前打开了新视频流,如果abs(t1-t2)<=1000ms,此时时间戳变化不超过1s,进行切换;如果t1<t2,修正切换时间点为t2,并在t2的时间点进行切换;如果t1>t2,如果读取的时间点小于t2,修正切换时间点为t2,并在t2的时间点进行切换;如果读取的时间点小于t2,切换时间点设置为t1,并在t1的时间点进行切换;

第二、在旧视频流读取的时间点t1之后打开了新视频流,新视频流打开成功后,从t0+d后的第一个关键帧t2开始发送新视频流的播放数据,待获取到下一个关键帧时,进行切换。

本发明实施例提供的技术方案带来的有益效果是:

1、通过在流媒体旧视频的播放时,同时计算获取新视频流的切换时间点,后台打开新视频流,并持续获取旧视频流和新视频流的实时播放相关数据,从而为新旧视频流的切换提前做好充分准备,最终在新视频流的相应切换时间点,进行新旧视频流的切换,由于不同清晰度片源关键帧分布不均,该方案充分考虑了切换的时效性和流畅率,经过内测以及各端线上反馈,切换重叠的出现几率小于百分之一,切换时效性小于8s,切换效果已经得到用户认可;

2、基于传输层来实现无缝切换,避免使用多播放器的方案,并且可以根据终端实际的运行状态(实际运行的情况中,大部分只需要采用单路传输即可实现,少部分情况可能会并发两路传输下载),灵活的采用单路传输或者双路传输的策略,相比现有多播放器的方案,有效降低了系统负载损耗;

3、总体上实现了较为流畅的无缝切换,相比传统的切码流方案,极大的提高的用户的播放体验,具有广阔的应用前景。

附图说明

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

图1是本发明实施例一提供的视频流无缝切换方法流程图;

图2是本发明实施例一提供的一优选实施方式的视频流无缝切换方法流程图;

图3是本发明实施例提供的基于p2p机制的播放流程架构;

图4是本发明实施例二提供的视频流无缝切换装置结构示意图。

具体实施方式

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

本发明实施例提供的视频流无缝切换方法及装置,通过在流媒体旧视频的播放时,同时计算获取新视频流的切换时间点,后台打开新视频流,并持续获取旧视频流和新视频流的实时播放相关数据,从而为新旧视频流的切换提前做好充分准备,然后重置解码器,获取新视频流的媒体数据,最终在新视频流的相应切换时间点,进行新旧视频流的切换,由于不同清晰度片源关键帧分布不均,该方案充分考虑了切换的时效性和流畅率,经过内测以及各端线上反馈,切换重叠的出现几率小于百分之一,切换时效性小于8s,切换效果已经得到用户认可,实现了较为流畅的无缝切换,相比传统的切码流方案,极大的提高的用户的播放体验,具有广阔的应用前景。

下面结合具体实施例及其附图,对本发明实施例提供的视频流无缝切换方法及装置作详细说明。

实施例一

图1是本发明实施例一提供的视频流无缝切换方法流程图。图2是本发明实施例一提供的一优选实施方式的视频流无缝切换方法流程图。

如图1和图2所示,本发明实施例提供的视频流无缝切换方法,包括以下步骤:

101、进行旧视频流的播放时,根据新视频流的切换请求,进行相应新视频流的切换准备和打开操作,所述切换准备包括确定所述新视频流的切换条件。

具体的,判断用户触发的切换请求是否满足包括清晰度是否一致和/或切换传输的会话id是否还有效的切换条件,如果是,则根据满足新视频流的切换条件的切换请求,进行相应新视频流的切换准备和打开操作,如果否,则回调切换失败的原因,此过程中,持续播放旧视频流。其中,切换条件中的清晰度是否一致,是指待切换的新视频流清晰度是否与旧视频流的清晰度是否一致,切换传输的会话id是否还有效,每一个播放实例就是一个会话,每个会话可以用一个id来表示,类似身份证id,会话是否有效,是指这个会话是否没有被关闭。需要注意的是,这里的切换条件除了上述提到的两个条件,在不脱离本发明主题构思的情况下,可以包含现有技术中任何可能的切换环境条件,可以根据实际需要对其进行不同设置,本发明实施例不对其加以特别限制。

新视频流的切换准备,包括:根据满足新视频流的切换条件的切换请求,计算新视频流的切换时间点,将旧视频流的媒体数据的下一关键帧确定为新视频流的切换时间点。

新视频流的打开操作,包括:根据接收的相应清晰度参数,后台打开新视频流;新视频流如果打开失败,则进行结果反馈,并继续播放旧视频流。

值得注意的是,步骤101的过程,除了上述步骤所述的方式之外,还可以通过其他方式实现该过程,本发明实施例对具体的方式不加以限定。

102、新视频流打开后,持续获取旧视频流和新视频流的播放相关数据。

具体的,新流打开成功后,seek操作到切换的时间点,准备好数据。与此同时播放层也一直在获取旧视频流和新视频流的播放相关数据,等待播放层获取到下一个关键帧的时候,新流的数据就可以无缝的传输给播放层。

103、重置解码器,获取新视频流的媒体数据。

具体的,播放层在获取到新流的数据时候,需要重置解码器,获取新流的媒体信息。具体实现细节在于,如果api模式的话,新流的第一帧数据可以通过置标记位来问题,告诉播放层媒体格式发生变化;如果是hls协议,因为每个ts包会携带媒体信息,天然的支持多种格式的混合传输,不存在此问题。

104、在新视频流的相应切换时间点,进行无缝切换。

具体的,设旧视频流的当前播放时间为t0,播放器缓存时间为d,通过t0+d在当前视频流搜索该时间点后的第一个关键帧得到时间t1,同时异步打开新视频流,首先初设切换时间点定为t1,并在新视频流上搜索t0+d后的第一个关键帧得到时间t2,然后包括以下两种操作路径:

第一、在旧视频流读取到t1之前打开了新视频流,

如果abs(t1-t2)<=1000ms,此时时间戳变化不超过1s,进行切换;

如果t1<t2,修正切换时间点为t2,并在t2的时间点进行切换;

如果t1>t2,如果读取的时间点点小于t2,那么修正切换时间点为t2,并在t2的时间点进行切换,此种情况时间戳也是连续的;反之如果读取的时间点大于t2,那么可能会造成t2-t1的重叠数据,切换时间点设置为t1,并在t1的时间点进行切换;

第二、在旧视频流读取的时间点t1之后打开了新视频流,新视频流打开成功后,从t0+d后的第一个关键帧t2开始发送新视频流的播放数据,待获取到下一个关键帧时,进行切换。

需要说明的是,优选地在本发明实施例提供的视频流无缝切换方法的实现过程中,通过p2p下载方式获取新旧视频流的媒体数据;根据通过传输层传输的新视频流的切换请求;对所述新旧视频流的媒体数据进行解封装,并根据播放请求进行流化封装;对所述媒体数据进行解复用,并进行解码显示。

图3是本发明实施例提供的基于p2p机制的播放流程架构。如图3所示,本发明实施例提供的视频流无缝切换方法,可以通过一种基于p2p机制的播放流程架构来实现,该播放流程架构由p2p下载层、传输层、播放层以及解码显示层构成,p2p下载层用于通过本地下载、本地代理和/或自身服务器调用提供媒体数据来源,传输层用于从所述p2p下载层获取媒体数据,并对媒体数据进行解封装,然后根据播放层的数据请求进行相应流化封装,播放层用于获取媒体数据后进行解复用,最后通过解码显示层进行解码显示。

在该播放流程架构中,播放层媒体数据来源于传输层,区别于另类播放架构中从播放器直接到服务器拉流的架构。此种架构的好处在于,p2p下载层主要为传输层提供基础的媒体数据下载服务,可以在app终端进行p2p传输,从而能够有效的节省后端部署宽带服务器等资源。播放层可以直接连接传输层的hls服务、rtsp服务获取音视频流,亦可以由播放层集成传输层的api接口来获取音视频流。传输层的作用主要是从p2p层获取媒体数据,对数据进行解封装,并根据播放层的请求进行封装流化,比如hls协议的ts格式的切片文件亦或是基于rstp协议的rtp封包格式进行传输,以及api方式的帧数据等等。

另外,在上述视频流无缝切换方法的实现过程中,新流可能会打开过慢或者超时,此时处理策略可以灵活处理,比如在切换点到来的时候,新流还未打开,可以继续传输老流的数据,回调上层切换失败,也可以让播放层等待一直到新流打开或者出错为止。而在一些用户运行环境恶劣的情况下,为避免同时开启两路码流,可以在切换时根据传输层的缓冲时间是否包括下一个关键帧,如果缓存时间中包含到了下一个关键帧,可以暂停原始码流的传输,这样在一个播放终端就只会有一路码流进行传输,降低终端系统资源消耗。

综上所述,本发明实施例提供的视频流无缝切换方法,相对于现有技术,具有以下有益效果:

1、通过在流媒体旧视频的播放时,同时计算获取新视频流的切换时间点,后台打开新视频流,并持续获取旧视频流和新视频流的实时播放相关数据,从而为新旧视频流的切换提前做好充分准备,最终在新视频流的相应切换时间点,进行新旧视频流的切换,由于不同清晰度片源关键帧分布不均,该方案充分考虑了切换的时效性和流畅率,经过内测以及各端线上反馈,切换重叠的出现几率小于百分之一,切换时效性小于8s,切换效果已经得到用户认可;

2、基于传输层来实现无缝切换,避免使用多播放器的方案,并且可以根据终端实际的运行状态(实际运行的情况中,大部分只需要采用单路传输即可实现,少部分情况可能会并发两路传输下载),灵活的采用单路传输或者双路传输的策略,相比现有多播放器的方案,有效降低了系统负载损耗;

3、总体上实现了较为流畅的无缝切换,相比传统的切码流方案,极大的提高的用户的播放体验,具有广阔的应用前景。

实施例二

图4是本发明实施例二提供的视频流无缝切换装置,如图4所示,本发明实施例提供的视频流无缝切换装置,包括切换预备模块1、获取模块2、解码模块3以及切换模块4。

具体的,切换预备模块1用于:判断用户触发的切换请求是否满足包括清晰度是否一致和/或切换传输的会话id是否还有效的切换条件,如果是,则根据满足新视频流的切换条件的切换请求,进行相应新视频流的切换准备和打开操作,如果否,则回调切换失败的原因。

切换预备模块1进一步包括切换准备模块11和打开操作模块12,切换准备模块11和打开操作模块12用于根据满足新视频流的切换条件的切换请求,进行相应新视频流的切换准备和打开操作,切换准备包括确定新视频流的切换条件。优选地,切换预备模块1还包括切换判断模块13,切换判断模块13用于进行旧视频流的播放时,判断切换请求是否满足新视频流的切换条件。

切换准备模块11进一步包括计算子模块111,计算子模块111用于:

根据满足新视频流的切换条件的切换请求,计算新视频流的切换时间点,新视频流的切换时间点为旧视频流的媒体数据的下一关键帧;和/或,

打开操作模块12进一步包括新视频流打开子模块121和结果反馈子模块122,新视频流打开子模块21用于:根据接收的相应清晰度参数,后台打开新视频流;结果反馈子模块122用于:新视频流如果打开失败,则进行结果反馈,并继续播放旧视频流。

获取模块2,用于新视频流打开后,持续获取旧视频流和新视频流的播放相关数据;

解码模块3,用于重置解码器,获取新视频流的媒体数据;

切换模块4,用于在新视频流的相应切换时间点,进行无缝切换。具体的,切换模块4用于进行如下操作:

设旧视频流的当前播放时间为t0,播放器缓存时间为d,通过t0+d在当前视频流搜索该时间点后的第一个关键帧得到时间t1,同时异步打开新视频流,首先初设切换时间点定为t1,并在新视频流上搜索t0+d后的第一个关键帧得到时间t2,然后包括以下两种操作路径:

第一、在旧视频流读取到t1之前打开了新视频流,

如果abs(t1-t2)<=1000ms,此时时间戳变化不超过1s,进行切换;

如果t1<t2,修正切换时间点为t2,并在t2的时间点进行切换;

如果t1>t2,如果读取的时间点点小于t2,那么修正切换时间点为t2,并在t2的时间点进行切换,此种情况时间戳也是连续的;反之如果读取的时间点大于t2,那么可能会造成t2-t1的重叠数据,切换时间点设置为t1,并在t1的时间点进行切换;

第二、在旧视频流读取的时间点t1之后打开了新视频流,新视频流打开成功后,从t0+d后的第一个关键帧t2开始发送新视频流的播放数据,待获取到下一个关键帧时,进行切换。

再回到图3,本发明实施例提供的视频流无缝切换装置优选地通过一种基于p2p机制的播放流程架构来实现,所述播放流程架构由p2p下载层、传输层、播放层以及解码显示层构成,p2p下载层用于通过本地下载、本地代理和/或自身服务器调用提供媒体数据来源,传输层用于从所述p2p下载层获取媒体数据,并对媒体数据进行解封装,然后根据播放层的数据请求进行相应流化封装,播放层用于获取媒体数据后进行解复用,最后通过解码显示层进行解码显示。

需要说明的是:上述实施例提供的视频流无缝切换装置在触发视频流无缝切换业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频流无缝切换装置与视频流无缝切换方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

综上所述,本发明实施例提供的视频流无缝切换方法,相对于现有技术,具有以下有益效果:

1、通过在流媒体旧视频的播放时,同时计算获取新视频流的切换时间点,后台打开新视频流,并持续获取旧视频流和新视频流的实时播放相关数据,从而为新旧视频流的切换提前做好充分准备,最终在新视频流的相应切换时间点,进行新旧视频流的切换,由于不同清晰度片源关键帧分布不均,该方案充分考虑了切换的时效性和流畅率,经过内测以及各端线上反馈,切换重叠的出现几率小于百分之一,切换时效性小于8s,切换效果已经得到用户认可;

2、基于传输层来实现无缝切换,避免使用多播放器的方案,并且可以根据终端实际的运行状态(实际运行的情况中,大部分只需要采用单路传输即可实现,少部分情况可能会并发两路传输下载),灵活的采用单路传输或者双路传输的策略,相比现有多播放器的方案,有效降低了系统负载损耗;

3、总体上实现了较为流畅的无缝切换,相比传统的切码流方案,极大的提高的用户的播放体验,具有广阔的应用前景。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本申请实施例中是参照根据本申请实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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