一种实现视频流快进或快退的方法及装置与流程

文档序号:12629061阅读:911来源:国知局
一种实现视频流快进或快退的方法及装置与流程

本发明涉及多媒体处理技术领域,特别涉及一种实现视频流快进或快退的方法及装置。



背景技术:

用户在观看视频时,可以通过快进或快退操作快速定位到自己感兴趣的视频播放位置;播放系统响应于用户触发的快进或快退操作,在播放界面为用户显示对应的快进或快退画面,在快进或快退过程中画面是否流畅直接影响用户的视频观看体验。

现有技术中,大多数播放系统采用以下方法实现视频流的快进或快退。在一种方法中,播放系统主要通过获取与快进或快退请求点邻近的可同步帧(I帧),从该I帧开始解码剩余的视频流,将解码的视频流进行播放;这种方法忽略快进或快退请求段内其他序列组的视频帧,容易出现播放不平滑、跳跃现象。

在另一种方法中,播放系统主要是通过获取快进或快退请求段内的I帧,通过跳频方式对I帧进行播放;这种方法对播放倍率和I帧间隔有严格要求,当I帧间隔不固定等长时或当播放倍率与I帧间隔没有整数倍数关系时,这种方法也容易出现播放不平滑现象,用户体验较差。



技术实现要素:

本发明所要解决的技术问题是提供一种实现视频流快进或快退的方法,用以解决现有技术中快进或快退时容易出现播放不平滑的问题,以提升用户体验。

本发明还提供了一种实现视频流快进或快退的装置,用以保证上述方法在实际中的实现及应用。

一方面,本发明提供了一种实现视频流快进或快退的方法,所述方法 包括:

接收用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳;

根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流;

按照播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。

又一方面,本发明提供了一种实现视频流快进或快退的装置,所述装置包括:

时间戳定位单元,用于接收用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳;

元数据流获取单元,用于根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流;

播放单元,用于按照播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。

通过上述本发明实施例可以看出,与现有技术相比,本发明具有以下有益效果:

本发明首先根据用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳;然后根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流;最后按照播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。本发明完全抛弃了现有技术的从临近I帧开始或以I帧为基础的快进或快退的技术思路,而是关注在快进或快退过程中满足播放倍率的视频帧,不论这些视频帧是什么类型,就会被解码播放,这样本发明既不会忽略快进或快退请求段内一些序列组,也不会受到I帧间隔的影响,因此,本发明能够避免出现不平滑的问题,能够提升用户体验。

附图说明

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

图1是本发明提供的实现视频流快进或快退的方法实施例1的流程图;

图2是本发明提供的先进先出工作模式的缓存区的结构图;

图3是本发明提供的一段带有层级预测参考的视频流结构图;

图4是本发明提供的一种跳频播放方式示意图;

图5是本发明提供的一种实现视频流快进或快退的方法实施例2的流程图;

图6是本发明提供的一种实现视频流快进或快退的装置实施例1的结构图;

图7是本发明提供的一种实现视频流快进或快退的装置实施例2的结构图。

具体实施方式

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

本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

参考图1,图1是本发明提供的实现视频流快进或快退的方法实施例1的流程图,该方法可以包括以下步骤:

S101:接收用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳。

在实际应用中,用户利用终端观看视频时可以通过点击快进或快退按钮来触发快进或快退请求,用户也可以在播放页面,通过拖动播放进度条的方式来触发快进或快退请求,当然,用户还可以通过键盘上的快捷键来触发快进或快退请求。

针对软件按钮和硬件快进键的触发方式,播放系统预先定义点击快进或者快退按钮或者快捷键的操作时长,如2s,还需要预先定义与点击按钮或快捷键方式对应的单次快进或快退请求时长,如10s,以方便定位用户触发的快进或快退请求位置的时间戳。在实际应用中,该操作时长和单次快进或快退请求时长的大小可以根据需求作适应性调整单次快进请求时长可以与单次快退请求时长相同,也可以不相同。针对拖动播放进度条的触发方式,播放系统将用户拖动的时长记为操作时长,根据用户停止拖动时视频流的位置定位快进或快退请求位置。

为了满足用户对快进或快退的个人需求,在实际应用中,播放系统还可以为用户提供单次快进或快退请求时长的设置功能,用户在触发快进或者快退操作之前,先设置单次快进或快退请求时长的大小。当然,播放系统可以为用户提供一个设置范围,由用户在该设置范围内随意设置。

S102,根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流。

在实际应用中,播放系统可以向服务器发送携带快进或快退业务类型、当前播放位置的时间戳和所述快进或快退请求位置的时间戳的请求,服务器根据该请求向播放系统返回对应的视频元数据流。

但发明人发现播放系统与服务器之间频繁交互,有时候会出现网络加载现象,会影响用户观看视频,为了避免出现网络加载现象,本发明提供了另一种实现方式以使播放系统快速获取视频元数据流,该方式具体 包括:从本地的先进先出工作模式的缓存区中,获取从所述当前播放位置的时间戳到所述快进或快退请求位置的时间戳的时间段对应的视频元数据流;所述缓存区包括前向缓存区和后向缓存区,所述前向缓存区用于储存当前播放位置之前的数据,所述后向缓存区用于储存当前播放位置之后的数据。

下面通过一个示例对本发明提供的先进先出工作模式的缓存区进行解释说明。参见图2,图2是本发明提供的先进先出工作模式的缓存区的结构图,如图2所示,该缓存区前向缓存M秒,后向缓存N秒;在T0时刻,当前播放位置为A0;在T1(T1>T0)时刻,T0时刻黑色背景部分的缓存数据被移除,而新增加T1时刻白色背景的缓存数据,T1时刻的播放位置为A1。

基于这种带有前向和后向缓存区的缓存结构,使得播放系统直接在本地获取对应的视频元数据流,从而避免频繁地向服务端发送请求,避免频繁出现网络加载现象。

S103,按照播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。

在实际应用中,播放系统可以按照预先设置的固定播放倍率进行处理。但这种预先设置的固定播放倍率无法适应于每个用户的实际需求,为了满足用户的这种实际需求,本发明提供了根据用户触发的操作,自适应性调整播放倍率的方式,该方式具体为:

按照公式PlayMul=2^CeilLog2(Duractual/Durrequest)计算播放倍率;PlayMul表示播放倍率;CeilLog2(Duractual/Durrequest)公式表示对Log2(Duractual/Durrequest)的结果取上限整数值;Duractual表示快进或快退请求段的时长;Durrequest表示快进或快退请求的操作时长。

下面通过一个示例对该方式进行解释说明。

假设:快进或快退请求的操作时长Durrequest=2秒,快进或快退请求段的时长Duractual=7秒;按照上述公式计算出播放倍率PlayMul=4。

假设:快进或快退请求段对应的视频元数据流如图3所示,当播放倍率为4时,从该视频元数据流中确定的待播放的视频帧,包括第1帧、以及 从第1帧开始每间隔4帧位置对应的视频帧,如图3中黑色三角区标注的视频帧。

发明人考虑到在实际应用中存在多种结构的视频流,为了适应于不同结构的视频流,发明人提出了更具体的实现方案。发明人将视频流结构划分为两大类,一类视频流是具有分层结构的视频流,另一类是不具有分层结构的视频流。发明人综合考虑这两大类视频流的结构,提出了一种实现方式以适应于这两类视频流,该方式具体包括:

A1:解析所述视频元数据流得到每个图像组的I帧偏移位置,根据每个图像组的I帧偏移位置并行解码图像组得到每个图像组的数据;以及,

A2:按照播放倍率从所述视频元数据流中选择待播放的视频帧,从每个图像组的数据中选择待播放的视频帧对应的数据进行播放。

这种实现方式是以图像组(Group of Pictures,Gop)为基本单元,从图像组的角度出发,不受层间结构和非层间结构的影响,先解析出每个图像组的I帧偏移位置,为并行解码打好基础,采用并行解码图像组以保证后续快进或快退过程中数据播放的时效性,避免出现缓冲、停顿等现象。

发明人考虑到具有分层结构的视频流,视频流中的视频帧间存在参考依赖关系,分层结构包含全帧速、1/2帧速、1/4帧速等,针对这种具有层间依赖关系的视频流,发明人又提出了一种实现方式,该方式包括:

B1:解析所述视频元数据流得到每个视频帧的结构信息,所述结构信息包括:视频帧顺序号、载荷偏移和参考帧;以及,

B2:按照播放倍率从所述视频元数据流中选择待播放的视频帧,根据所述待播放的视频帧的结构信息对所述待播放的视频帧进行解码,将解码得到的数据进行播放。

这种实现方式是从视频帧的参考依赖关系出发,以参考依赖关系为基础,就无需解码所有的视频帧,而是仅实现对待播放的视频帧进行解码,这种处理方式既能够保证后续快进或快退过程中数据播放的时效性,避免出现缓冲、停顿等现象,又能够减少解码处理的数据量,使得播放更加平滑。

另外,针对具有层间结构的视频流,发明人提供了更具体的实现方式,以进一步避免播放不平滑的问题。该方式具体实现过程中,在选择待播放的 视频帧时,直接先选择层级优先级较高的视频帧,在播放帧时,以起始跳帧、后续等间距的方式进行播放。

例如,视频流的结构如图3所示,用户触发快进或快退请求的位置是左边起第2个帧,采用起始跳帧、后续等间距的方式,在播放倍率为2的情况下,各个视频帧的播放如图4所示。如图4所示,跳过的B帧不需要再做解码处理,进一步保证在快进或快退过程中对视频播放的时效性。仍旧以图3的视频流结构为基础,在播放时直接采用等间距解码输出播放,在某些视频帧被选择输出但其依赖的参考帧未被选择输出时,其所依赖的参考帧也需要被解码输出。

另外,考虑到上述采用起始跳帧、后续等间距的方式,起始跳帧位置与当前播放位置的间距和后续正常等间距跳帧播放间距不相同的情况下,尤其是在起始跳帧的间距较小,后续跳帧间距较大的情况下,快进或快退的起始播放阶段出现不平滑现象。针对这种情况,发明人进一步提出了一种实现方式。该方式具体是利用起始跳帧间距和后续跳帧间距计算起始阶段的播放间距;具体的,起始阶段的播放间距等于起始跳帧间距和后续跳帧间距的平均值,则在首次跳帧的视频帧解码之后,延迟播放间距的时间之后再播放,这样以缓解起始播放不平滑的问题。例如,起始跳帧间距a=1,后续跳帧间距b=4,则确定起始播放间距c=(a+b)/2=2.5,这里需要说明的是,在实际应用中,还需要将计算的平均值四舍五入取整,因此最终确定出c=3,最后根据起始播放间距计算出延迟等待时间t=(c-a)*s,其中,s表示一个视频帧的播放时长。

另外,考虑到在实际应用中,还存在对多媒体流的快进或快退处理,本发明为了适应于多媒体流的应用场景,进一步提供了具体的解决方案,参见图5,图5是本发明提供的一种实现视频流快进或快退的方法实施例2的流程图,该方法包括:

S501,接收用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳。

S502,根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流。

S503,按照播放倍率从所述视频元数据流中选择待播放的视频帧。

S504,根据待播放的视频帧的视频帧顺序号和时间戳,从音频元数据流中选择待播放的音频帧,对所述待播放的音频帧和所述待播放的视频帧作音视频同步处理并播放。

图5所示的方法与图1所示的方法的主要区别在于,在播放视频帧之前,先根据待播放的视频帧的时间戳选择待播放的音频帧,再对待播放的视频帧和音频帧进行同步处理,最后分别将音频帧和视频帧输出至对应的播放设备进行播放,这样就能够实现对多媒体流的快进或快退的播放。

与上述方法相对应的,本发明提供了一种实现视频流快进或快退的装置。参见图6,图6是本发明提供的一种实现视频流快进或快退的装置实施例1的结构图,该装置包括:

时间戳定位单元601,用于接收用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳;

元数据流获取单元602,用于根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流;

播放单元603,用于按照播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。

可选的,所述选择播放单元,包括:

结构信息解析子单元,用于解析所述视频元数据流得到每个视频帧的结构信息,所述结构信息包括:视频帧顺序号、载荷偏移和参考帧;

解码播放子单元,用于按照播放倍率从所述视频元数据流中选择待播放的视频帧,根据所述待播放的视频帧的结构信息对所述待播放的视频帧进行解码,将解码得到的数据进行播放。

可选的,所述选择播放单元,包括:

并行解码子单元,用于解析所述视频元数据流得到每个图像组的I帧偏移位置,根据每个图像组的I帧偏移位置并行解码图像组得到每个图像组的数据;

选择播放子单元,用于按照播放倍率从所述视频元数据流中选择待播放的视频帧,从每个图像组的数据中选择待播放的视频帧对应的数据进行播放。

可选的,所述装置还包括:

播放倍率计算单元,用于按照公式PlayMul=2^CeilLog2(Duractual/Durrequest)计算播放倍率;PlayMul表示播放倍率;CeilLog2(Duractual/Durrequest)公式表示对Log2(Duractual/Durrequest)的结果取上限整数值;Duractual表示快进或快退请求段的时长;Durrequest表示快进或快退请求的操作时长;

则所述播放单元,用于根据所述播放倍率计算单元计算得到的播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。

可选的,所述元数据流获取单元,包括:

第一获取子单元,用于从本地的先进先出工作模式的缓存区中,获取从所述当前播放位置的时间戳到所述快进或快退请求位置的时间戳的时间段对应的视频元数据流;所述缓存区包括前向缓存区和后向缓存区,所述前向缓存区用于储存当前播放位置之前的数据,所述后向缓存区用于储存当前播放位置之后的数据;或者,

第二获取子单元,用于向服务器发送携带快进或快退业务类型、所述当前播放位置的时间戳和所述快进或快退请求位置的时间戳的请求,接收服务器根据所述请求返回的视频元数据流。

参见图7,图7是本发明提供的一种实现视频流快进或快退的装置实施例2的结构图,该装置是在上述图6结构的基础上还包括:

可选的,所述装置还包括:

音视频同步单元604,用于根据待播放的视频帧的视频帧顺序号和时间戳,从音频元数据流中选择待播放的音频帧,对所述待播放的音频帧和所述待播放的视频帧作音视频同步处理并播放。

本发明首先根据用户触发的快进或快退请求,定位所述快进或快退请求位置的时间戳;然后根据当前播放位置的时间戳和所述快进或快退请求位置的时间戳,获取所述快进或快退请求段对应的视频元数据流;最 后按照播放倍率从所述视频元数据流中选择待播放的视频帧,将所述待播放的视频帧进行播放。本发明完全抛弃了现有技术的从临近I帧开始或以I帧为基础的快进或快退的技术思路,而是关注在快进或快退过程中满足播放倍率的视频帧,不论这些视频帧是什么类型,就会被解码播放,这样本发明既不会忽略快进或快退请求段内一些序列组,也不会受到I帧间隔的影响,因此,本发明能够避免出现不平滑的问题,能够提升用户体验。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

以上对本发明所提供的一种实现视频流快进或快退的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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