倒序播放方法、系统以及倒序切片方法与流程

文档序号:31729810发布日期:2022-10-05 01:37阅读:133来源:国知局
倒序播放方法、系统以及倒序切片方法与流程

1.本技术涉及视频播放领域,尤其涉及一种倒序播放方法、系统以及倒序切片方法。


背景技术:

2.视频监控录像回放是安防解决方案应用中的一项基础功能,通常在客户端以时间轴的方式展示有录像资源可回放的时间段,用户选定某个时间点开始正序或倒序回放,或者在回放过程中来回切换回放方向,以便于灵活、快速寻找所关注的目标图像及观察目标图像的变化过程。倒序回放(简称倒放)在安防领域用于定位视频监控录像中的安防事件,有非常实用的价值。
3.在安防解决方案中,音视频媒体的应用(包括录像点播)需要满足图像调阅响应实时性、功能多元性、跨业务集成的灵活性等需求,目前,面临的主要挑战有:
4.1)由于网页(web)浏览器对音视频媒体的能力支持及接口开放非常有限,所以音视频应用大多基于客户端-服务器端架构(cs架构),但其在满足跨业务的集成灵活性、多版本兼容方面非常困难,不如浏览器端-服务器端(bs架构)灵活、高效;
5.2)之后演进的基于web插件技术(如activex(开放的集成平台)、npapi(netscape plugin application programming interface,网景插件应用程序接口)、ppapi(pepperplugin applicationprogramming interface,胡椒插件应用程序接口)等)的伪bs架构,其客户端的音视频媒体核心功能本质上还是本地(native)模式实现,该模式在插件安装体验、版本兼容、安全性方面有明显缺陷,尤其是考虑到安全性,当前主流的浏览器都已经不再支持这种web插件技术;
6.3)随着web浏览器技术日新月异的发展,尤其是第5代html技术规范的出现,目前浏览器可用于支持媒体播放相关的技术有视频(video)标签、webrtc(web real-time communication,网页实时通信)、mse(media source extensions,媒体源扩展)、wasm(webassembly,一种二进制指令集)、webcodecs(允许web应用程序对音频和视频进行编码和解码)等。这些技术在满足音视频媒体应用方面有了明显的改善,但对于“倒放”等这种特殊功能,目前还没有开放即用的接口可以支持。
7.传统方案中,实现视频倒放主要是基于cs架构,因为在本地客户端可以完全自主控制码流的解码、渲染等过程,且可以逐帧控制其正序、倒序播放。
8.但基于bs架构实现倒放功能,受制于浏览器的能力及其开放的接口,面临不少困难。如web提供的video标签与webrtc方案,其传输、解码与显示都由浏览器实现并封装,应用层无法灵活控制这些过程,尤其是倒放时需要的按需提前缓存码流确保流畅性;对于wasm方案,虽然能完全自主控制码流的解码、渲染过程,但其解码性能差,很多场景无法被满足;对于webcodecs方案,虽然能控制解码前后的帧数据,但目前只有少数型号且最近一年新版浏览器才支持,兼容性无法满足要求。对于mse方案,虽然能自主控制传输方式,但解码、渲染的过程被浏览器封装了,无法直接操作解码后的帧数据。
9.由此,如何在浏览器中实现视频倒序播放,是本领域技术人员亟待解决的技术问
题。


技术实现要素:

10.本技术为了克服上述现有技术存在的缺陷,提供一种倒序播放方法、系统以及倒序切片方法,从而在浏览器中实现视频倒序播放。
11.根据本技术的一个方面,提供一种倒序播放方法,应用于网页播放端,包括:
12.所述网页播放端向服务器端发送倒放请求,供所述服务器端根据所述倒放请求对待播放视频流进行倒序切片获得切片序列,所述切片序列的倒序分片反向于采集时间排列,每一所述倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳经设置后按排列顺序单调递增;
13.所述网页播放端自所述服务器端依次获取倒序分片;
14.所述网页播放端为所获得的当前倒序分片设置关联的媒体源扩展模块的源缓存的时间戳偏移属性值并将所述当前倒序分片缓存至所述源缓存中,使得所述当前倒序分片关联的时间戳偏移属性值为上一倒序分片关联的时间戳偏移属性值减去上一倒序分片的时长;
15.所述网页播放端的媒体源扩展模块根据所述当前倒序分片关联的时间戳偏移属性值为所述当前倒序分片内的帧序列重新生成第二时间戳,使得所述当前倒序分片内帧序列的第二时间戳按排列顺序单调递增,且上一倒序分片内帧序列的起始帧的第二时间戳递减帧间隔为所述当前倒序分片内帧序列的终止帧的第二时间戳;
16.所述网页播放端采用视频元素倒序播放所述待播放视频流,其中,所述网页播放端按步进值递减所述视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放。
17.在本技术的一些实施例中,所述网页播放端按步进值递减所述视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放包括:
18.响应于所述网页播放端和所述服务器端之间的网络传输参数小于设定网络传输参数,所述网页播放端在所述源缓存中缓存多个所述倒序分片后,按步进值递减视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放。
19.在本技术的一些实施例中,所述当前时间值的初始值被设置为所述源缓存中所述倒序分片的最大时间戳,所述步进值小于等于所述倒序分片的帧间隔,所述网页播放端按步进值递减视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放包括:
20.所述网页播放端按步进值定时递减所述视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放;
21.响应于所述当前时间值等于所述源缓存中所述倒序分片的最小时间戳,所述网页播放端暂停所述待播放视频流的倒序播放。
22.根据本技术的又一方面,还提供一种倒序切片方法,应用于服务器端,包括:
23.所述服务器端接收网页播放端发送的倒放请求,所述倒放请求包括待播放视频流
的标识以及起始播放时间,所述待播放视频流的标识对应的待播放视频流为所述服务器端的本地视频文件;
24.所述服务器端基于所述起始播放时间确定所述待播放视频流的当前帧位置;
25.所述服务器端于所述待播放视频流中,自所述当前帧位置倒序查找距离最近的关键帧;
26.所述服务器端将所述当前帧位置至所查找到的最近的关键帧的前一帧,组成当前原始分片,所述当前原始分片用于封装为倒序分片;
27.将所述当前原始分片的关键帧位置作为当前帧位置,以定位下一原始分片,直至倒序分片结束;
28.将所述倒序分片反向于采集时间排列生成切片序列,每一所述倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳按排列顺序单调递增,所述切片序列用以发送至所述网页播放端以实现待播放视频流的倒序播放。
29.在本技术的一些实施例中,所述当前原始分片用于封装为倒序分片;将所述当前原始分片的关键帧位置作为当前帧位置,以定位下一原始分片,直至倒序分片结束的步骤,包括:响应于用于封装为当前倒序分片的原始分片数量未达到设定数量阈值,所述服务器端将所述当前原始分片的关键帧位置作为当前帧位置,以定位下一原始分片,直至倒序分片结束;
30.响应于用于封装为当前倒序分片的原始分片数量达到设定数量阈值:
31.所述服务器端按所述原始分片的获取顺序,依次从所述设定数量阈值的原始分片内正序读取帧序列;
32.所述服务器端将各所述原始分片封装为当前倒序分片,并为所读取的当前倒序分片的帧序列生成按排列顺序单调递增的第一时间戳,当前倒序分片的帧序列的第一时间戳根据前一倒序分片的帧序列的第一时间戳生成;
33.所述服务器端将所述当前原始分片的关键帧位置作为当前帧位置,以定位下一倒序分片的原始分片,直至倒序分片结束。
34.根据本技术的又一方面,还提供一种倒序切片方法,应用于服务器端,包括:
35.所述服务器端接收网页播放端发送的倒放请求,所述倒放请求包括待播放视频流的标识以及起始播放时间,所述待播放视频流的标识对应的待播放视频流储存于联网系统;
36.所述服务器端将所述起始播放时间作为用以生成正序播放请求的请求时间;
37.所述服务器端生成正序播放请求,并发送至所述联网系统;
38.所述服务器端接收所述联网系统自与所述请求时间最接近的关键帧正序发送的待播放视频流,将接收到的第一帧作为当前倒序分片的起始关键帧,并将所述当前倒序分片的起始关键帧至前一倒序分片的起始关键帧前一帧封装至所述当前倒序分片中;
39.所述服务器端将当前倒序分片的起始关键帧之前n秒作为请求时间,以再次生成所述正序播放请求,直至倒序分片结束;
40.所述服务器端将所述倒序分片反向于采集时间排列生成切片序列,每一所述倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳按排列顺序单调递增,所述切片序列用以发送至所述网页播放端以实现待播放视频流的倒序播放。
41.在本技术的一些实施例中,所述服务器端生成第一个正序播放请求时,所述服务器端接收所述联网系统自所述请求时间最接近的关键帧正序发送的待播放视频流,将接收到的第一帧作为第一个倒序分片的起始关键帧,并根据设定时间/设定关键帧数量/待播放视频流的终止帧,将接收到的视频帧封装至第一个倒序分片中。
42.在本技术的一些实施例中,所述服务器端接收所述联网系统自所述请求时间最接近的关键帧正序发送的待播放视频流,将接收到的第一帧作为当前倒序分片的起始关键帧,并将所述当前倒序分片的起始关键帧至前一倒序分片的起始关键帧前一帧封装至所述当前倒序分片中包括:
43.所述服务器端为封装的当前倒序分片中的帧序列生成第一时间戳,当前倒序分片的帧序列的第一时间戳根据前一倒序分片的帧序列的第一时间戳生成,使得所述切片序列中的帧序列的所述第一时间戳按排列顺序单调递增。
44.在本技术的一些实施例中,所述将所述当前倒序分片的起始关键帧至前一倒序分片的起始关键帧前一帧封装至所述当前倒序分片中包括:
45.响应于所述服务器接收的当前视频帧为关键帧,将该关键帧的特征数据与前一倒序分片的起始关键帧的特征数据进行匹配,若未匹配,则将该关键帧写入所述当前倒序分片并继续接收视频帧;若匹配,则将该关键帧识别为前一倒序分片的起始关键帧,并将所述当前倒序分片的起始关键帧至该关键帧的前一帧封装至所述当前倒序分片中;
46.其中,所述服务器端封装所述当前倒序分片时,将当前倒序分片的起始关键帧的编码载荷的设定位置的数据作为当前倒序分片的起始关键帧的特征数据。
47.在本技术的一些实施例中,所述正序播放请求为多倍速正序播放请求。
48.在本技术的一些实施例中,所述倒序分片为fmp4媒体分片。
49.根据本技术的又一方面,还提供一种倒序播放系统,包括:
50.网页播放端,执行如上所述的倒序播放方法;
51.服务器端,执行如上所述的倒序切片方法。
52.在本技术的一些实施例中,还包括:
53.联网系统,用于与所述服务器端相通信,以向所述服务器端发送待播放视频流。
54.根据本技术的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
55.根据本技术的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
56.由此可见,本技术提供的方案,与现有技术相比,具有如下优势:
57.网页播放端向服务器端发送倒放请求,从而服务器端可以通过执行待播放视频流的倒序切片获得切片序列,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输;网页播放端获取倒序分片后可以通过媒体源扩展模块及其源缓存来为倒序分片设置时间戳偏移属性值,且可根据所设置的时间戳偏移属性值生成按播放顺序单调递减的第二时间戳,以与按步进值递减视频元素的当前时间值配合,推进待播放视频的倒序播放,无需对视频文件进行转存和转码。此外,由分片和播放分别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。由此,实现了低成本、实时响应的视频流的倒放,在倒放过程中无需对视频流进行转存,
也无需额外的插件。
58.服务器端支持对服务器端本地视频文件进行倒序切片。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,本地视频文件无需进行转存和转码;同时,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输。此外,由分片和播放分别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。
59.服务器端支持对联网系统的视频文件的进行倒序切片。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,联网系统传输的视频文件无需进行转存和转码;同时,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输。此外,视频流传输、分片和播放分别解耦至联网系统、服务器端和网页播放端,从而视频流传输、分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。
附图说明
60.通过参照附图详细描述其示例实施方式,本技术的上述和其它特征及优点将变得更加明显。
61.图1示出了根据本技术实施例的网页播放端的倒序播放方法的流程图。
62.图2示出了根据本技术一实施例的服务器端的倒序分片方法的流程图。
63.图3示出了根据本技术一具体实施例的服务器端的倒序分片方法的流程图。
64.图4示出了根据本技术另一实施例的服务器端的倒序分片方法的流程图。
65.图5示出了根据本技术另一具体实施例的服务器端的倒序分片方法的流程图。
66.图6示出了根据本技术实施例的原始视频文件的切片示意图;
67.图7示出了根据本技术实施例的倒序获取原始视频的切片序列的示意图。
68.图8示出了根据本技术实施例的具有第一时间戳的切片序列的示意图。
69.图9示出了根据本技术实施例的具有第二时间戳的切片序列的示意图。
70.图10示出了根据本技术实施例的倒序播放系统的模块图。
71.图11示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
72.图12示意性示出本公开示例性实施例中一种电子设备示意图。
具体实施方式
73.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本技术将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
74.此外,附图仅为本技术的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
75.附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此,实际执行的顺序有可能根据实际情况改变。
76.首先参见图1,图1示出了根据本技术实施例的网页播放端的倒序播放方法的流程图。本技术提供的网页播放端的倒序播放方法包括:
77.步骤s111:所述网页播放端向服务器端发送倒放请求。
78.具体而言,倒放请求供所述服务器端根据所述倒放请求对待播放视频流进行倒序切片获得切片序列,所述切片序列的倒序分片反向于采集时间排列,每一倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳经设置后按排列顺序单调递增,采集时间是指视频采集时的时间,与时间流逝方向相同。
79.具体而言,本技术中所述的“倒序”方向为与时间流逝相反的方向,也即与视频采集时序相反的方向。
80.具体而言,网页播放端发送的倒放请求可以包括待播放视频流标识、起始播放位置/时间、回放方向(在本实施例中,回放方向为倒序)。待播放视频流标识可以为待播放视频的统一资源定位符(uniform resource locator,url)。待播放视频流为历史采集的视频文件。
81.具体而言,服务器端可以在倒序切片时,对切片进行封装从而获得符合设定格式的倒序分片以及由倒序分片排列而成的切片序列。设定格式例如为符合iso bmff规范的fmp4格式,由此,以符合网页播放端处的媒体源扩展模块的格式要求。iso bmff规范可以最大程度适应跨浏览器的兼容性。一个fmp4格式的媒体分片(倒序分片)可以由moof、mdata及可选的styp、sidx等box构成。fmp4格式的初始化分片可以由ftyp及moov等顶级box构成。
82.具体而言,服务器端的一个倒序分片可以包括一个或多个画面组(group ofpictures,gop)。服务器端可以根据请求的起始播放时间找到对应的起始帧,从起始播放时间相反的方向开始倒序查找最近的关键帧(i1帧),i1帧与起始播放时间之间的帧序列组成第一个原始分片1(gop1),从i1帧开始再继续倒序查找关键帧,找到距离i1帧最近的关键帧(i2帧),i2帧与第一i1帧的前一帧p2之间的帧序列组成第二个原始分片2(gop2),如图6所示(图6中箭头方向为原始时间戳递增方向),以此类推,逐个进行原始分片的切片,各分片中的帧序列具有原始时间戳,也即按视频采集时间正向递增的时间戳。
83.具体而言,服务器端根据设定的倒序分片包含的原始分片的数量,可以生成切片序列。在本技术的优选例中,倒序分片可以仅包括一个原始分片,从而可以保证倒序分片获取的及时性。切片序列如图7所示(图7中箭头方向为各个倒序分片内原始时间戳递增方向),切片序列的倒序分片反向于采集时间倒序排列(倒序分片按采集时间正序排列为原始分片3、原始分片2、原始分片1;倒序分片按采集时间倒序排列为原始(倒序)分片1、原始(倒序)分片2、原始(倒序)分片3),每一倒序分片内的帧序列正向于采集时间排列。换言之,此时,图7还未对读取的分片进行封装,仅是按照倒序读取顺序对倒序分片进行排列,因此,每一倒序分片内的帧序列仍然具有原始时间戳,也即按视频采集时间正向递增的时间戳。由于倒序读取切片序列后,时间戳的单调性被打断。由此,服务器端可以在封装获得倒序分片后,为倒序分片重新生成第一时间戳,第一时间戳按照切片序列及其帧序列的排序顺序单调递增(如图8所示,图8中箭头方向表示第一时间戳递增方向),从而保证帧序列的时间戳
的单调性不会被打断,便于进行传输和帧处理。
84.步骤s112:所述网页播放端自所述服务器端依次获取倒序分片。
85.具体而言,服务器端生成切片序列的同时,可以将切片序列的索引信息(例如可以根据切片序列生成索引列表)发送至网页播放端,网页播放端根据索引信息(例如索引列表)依次获取倒序分片。在一些实施例中,可以由网页播放端采用http get方式逐块获取倒序分片。在另一些实施例中,网页播放端也可以与服务器端建立websocket长连接,由服务器端逐个分片进行推送。由此,步骤s112以相较于采集时间倒序的方式传输倒序分片。进一步地,步骤s112还可以根据网页播放端播放缓存的情况,控制传输的节奏。例如,当网页播放端的播放缓存空闲时,提高倒序分片的传输速度;当网页播放端已缓存有倒序分片时,可以降低倒序分片的传输速度。本技术并非以此为限制。
86.步骤s113:所述网页播放端为所获得的当前倒序分片设置关联的媒体源扩展模块的源缓存的时间戳偏移属性值并将所述当前所述倒序分片缓存至所述源缓存中,使得所述当前倒序分片关联的时间戳偏移属性值为上一倒序分片关联的时间戳偏移属性值减去上一倒序分片的时长。
87.具体而言,所述源缓存为序列模式,从而使得倒序分片能够按序列的方式输入至源缓存(sourcebuffer对象)。
88.具体而言,源缓存的时间戳偏移属性值的初始值可以设置为大于切片序列的总时长(优选地,可以远大于切片序列的总时长),以保证时间戳偏移属性值足够切片序列倒序播放的递减。进一步地,所述网页播放端每次将倒序分片缓存至所述源缓存中时,皆使得当前倒序分片关联的时间戳偏移属性值为上一倒序分片关联的时间戳偏移属性值减去上一倒序分片的时长,从而实现时间戳偏移属性值的设置。
89.步骤s114:所述网页播放端的媒体源扩展模块根据所述当前倒序分片关联的时间戳偏移属性值为所述当前倒序分片内的帧序列重新生成第二时间戳。
90.具体而言,步骤s114使得所述倒序分片内帧序列的第二时间戳按排列顺序单调递增,且上一倒序分片内帧序列的起始帧的第二时间戳递减帧间隔为所述当前倒序分片内帧序列的终止帧的第二时间戳。
91.在一些实施例中,可以根据时间戳偏移属性值确定各倒序分片的终止帧(如p帧)的第二时间戳,在倒序分片内帧序列按排列顺序以帧间隔单调递增。换言之,根据时间戳偏移属性值确定终止帧的第二时间戳后,使得时间戳偏移属性值自减帧间隔以获得终止帧前一帧的第二时间戳,以此类推直到确定当前倒序分片的起始帧的第二时间戳。进一步地,并设置当前倒序分片的时间戳偏移属性值为前一倒序分片的时间戳偏移属性值减去上一倒序分片的时长,且当前倒序分片的终止帧的第二时间戳与上一倒序分片的起始帧的第二时间戳之间间距帧间隔,具体地,上一倒序分片的起始帧的第二时间戳递减帧间隔作为当前倒序分片的终止帧的第二时间戳,以使得相邻倒序分片间第二时间戳按排列顺序递减,以保持倒序分片播放时的连续性。
92.在另一些实施例中,也可以按倒序分片内帧序列按排列顺序以及帧间隔为各倒序分片内的各帧分别生成对应的准第二时间戳,然后,使得倒序分片内的各帧对应的准第二时间戳加上该倒序分片关联的时间戳偏移属性值以获得该倒序分片内各帧对应的第二时间戳。本技术可以实现更多的变化方式,在此不予赘述。
93.具体而言,通过步骤s113至步骤s114,相邻倒序分片的时间戳按获取顺序递减,同时各倒序分片内的帧序列的时间戳按排列顺序单调递增,如图9所示,使得依次获取的倒序分片1、倒序分片2、倒序分片3的第二时间戳按获取顺序递减,而每一倒序分片内的帧序列的第二时间戳按排列顺序(自i1至p1;自i2至p2;自i3至p3)单调递增,即图9中第二时间戳按照递减顺序排列为:p1

i1

p2

i2

p3

i3,该排列顺序也为倒序播放顺序;图9中对应的箭头方向表示倒序分片内播放方向,如倒序分片1从p1开始播放直至i1。
94.步骤s115:所述网页播放端采用视频元素倒序播放所述待播放视频流。
95.具体而言,所述网页播放端按步进值递减所述视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放。
96.具体而言,通过步骤s113和s114输入至源缓存的倒序分片,最终需要通过浏览器的视频元素进行播放。网页播放端会依据视频元素的当前时间值来推进视频帧的播放。而通过步骤s115使得当前时间值递减,从而可以按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放(如图9中,按照p1

i1

p2

i2

p3

i3的方向进行倒序播放)。
97.在一些实施例中,步骤s115可以设置一定时器,基于定时器来执行当前时间值的定时递减任务。由于浏览器会根据当前时间值自动对齐至第二时间戳,从而定时器的步进值(定时间隔)可以小于等于帧序列的帧间隔。例如,可以根据视频帧的播放频率换算获得帧间隔。由此,基于定时器,可以按步进值定时修改视频元素中的当前时间值(currenttime属性值)。
98.具体而言,视频元素中的当前时间值可以初始化为源缓存中第一个倒序分片的最后一帧的时间戳,也即源缓存中的最大时间戳sourcebuffer.buffered.end(0),如图9中的倒序分片1的p1帧的第二时间戳,即按照视频元素的当前时间值从p1帧开始播放;当前时间值在每个定时任务中自减步进值,由于步进值小于等于帧间隔且浏览器可自动定位第二时间戳,接上例,假设当前时间值为图9中p1的第二时间戳,当前时间值减去步进值后,浏览器定位至p1帧至i1帧方向上的p1帧的下一帧的第二时间戳进行播放,以此类推;响应于所述当前时间值等于所述源缓存中所述倒序分片的最小时间戳,如图9中p3帧的第二时间戳,所述网页播放端暂停所述待播放视频流的倒序播放。
99.具体而言,当所述网页播放端和所述服务器端之间的网络传输参数小于设定网络传输参数时(例如网络传输速度较小,或者网络抖动时),所述网页播放端可以在所述源缓存中缓存多个所述倒序分片之后,按步进值递减视频元素的当前时间值,使得所述当前时间值按所述第二时间戳的递减方向推进所述待播放视频流的倒序播放,以避免后续分片到达不及时,导致播放不流畅。
100.进一步地,所述网页播放端也可以在收到第一个倒序分片后就开始执行播放步骤,以达到更及时的响应。
101.本技术提供的网页播放端的倒序播放方法中,网页播放端向服务器端发送倒放请求,从而服务器端可以通过执行待播放视频流的倒序分片获得切片序列,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输;网页播放端获取倒序分片后可以通过媒体源扩展模块及其源缓存来为倒序分片设置时间戳偏移属性值,且可生成按播放顺序单调递减的第二时间戳,以与按步进值定时递减视频元素的当前时间值配合,推进待播放视频的倒序播放,无需对视频文件进行转存和转码。此外,由分片和播放分
别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。由此,实现了低成本、实时响应的视频流的倒放,在倒放过程中无需对视频流进行转存,也无需额外的插件。
102.下面参见图2,图2示出了根据本技术一实施例的服务器端的倒序切片方法的流程图。在本实施例中,待播放视频流为服务器端的本地视频文件。服务器端的倒序切片方法包括:
103.步骤s101:所述服务器端接收网页播放端发送的倒放请求,
104.具体而言,所述倒放请求包括待播放视频流的标识以及起始播放时间,所述待播放视频流的标识对应的待播放视频流为所述服务器端的本地视频文件;
105.步骤s102:所述服务器端基于所述起始播放时间确定所述待播放视频流的当前帧位置;
106.步骤s103:所述服务器端于所述待播放视频流中,自所述当前帧位置倒序查找距离最近的关键帧;
107.步骤s104:所述服务器端将所述当前帧位置至所查找到的最近的关键帧的前一帧,组成当前原始分片,所述当前原始分片用于封装为倒序分片;
108.步骤s105:将所述当前原始分片的关键帧位置作为当前帧位置,以定位下一原始分片,直至倒序分片结束;
109.步骤s106:将所述倒序分片反向于采集时间排列生成切片序列,每一所述倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳按排列顺序单调递增,所述切片序列用以发送至所述网页播放端以实现待播放视频流的倒序播放。
110.在本技术提供的倒序分片方法中,服务器端支持对服务器端本地视频文件进行倒序切片。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,本地视频文件无需进行转存和转码;同时,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输。此外,由分片和播放分别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。
111.下面参见图3,图3示出了根据本技术一具体实施例的服务器端的倒序切片方法的流程图。在本实施例中,待播放视频流为服务器端的本地视频文件。服务器端的倒序切片方法包括:
112.步骤s121:所述服务器端接收网页播放端发送的倒放请求。
113.具体而言,所述倒放请求包括待播放视频流的标识以及起始播放时间,所述待播放视频流的标识对应的待播放视频流为所述服务器端的本地视频文件。
114.步骤s122:所述服务器端基于起始播放时间确定待播放视频流的当前帧位置。
115.具体而言,步骤s122还可以包括初始化分片的步骤。进一步地,可以读取待播放视频流sps(sequence parameter sets,序列参数集)和pps(picture parameter set,图像参数集)等媒体参数信息来初始化分片。进一步地,还可以基于初始化分片输出fmp4初始分片(initialization segment)。fmp4初始分片(initialization segment)为fmp4分片的第一个分片以符合自适应流媒体协议。下文中生成的倒序分片为该第一个分片之后的包含实际视频流的媒体分片。
116.步骤s123:所述服务器端于所述待播放视频流中,自所述当前帧位置倒序查找距离最近的关键帧。
117.步骤s124:所述服务器端将所述当前帧位置至所查找到的最近的关键帧的前一帧,组成当前原始分片(gop),当前原始分片用于封装为倒序分片。
118.步骤s125:判断用于封装为当前倒序分片的原始分片数量是否达到设定数量阈值。
119.具体而言,为了提高分片传输的实时性,可以使得每个倒序分片仅包括一个原始分片。
120.若步骤s125判断为否,则执行步骤s126:所述服务器端将所述当前原始分片的关键帧位置作为当前帧位置,以定位下一原始分片。
121.步骤s126之后,再次回到步骤s123以定位下一原始分片,直至倒序分片结束。倒序分片可以基于待播放视频流分片完毕或者用户取消分片操作结束。
122.若步骤s125判断为是,则执行步骤s127:所述服务器端按所述原始分片的获取顺序,依次从所述设定数量阈值的原始分片内正序读取帧序列。
123.步骤s128:所述服务器端将各所述原始分片封装为当前倒序分片,并为所读取的当前倒序分片的帧序列生成按排列顺序单调递增的第一时间戳,当前倒序分片的帧序列的第一时间戳根据前一倒序分片的帧序列的第一时间戳生成。
124.具体而言,可以将原始分片封装为fmp4格式的倒序分片。第一时间戳在倒序分片之间以及倒序分片内都是单调递增的(如图8)。
125.具体而言,当前倒序分片的帧序列的起始帧的第一时间戳可以基于前一倒序分片的帧序列的终止帧的第一时间戳来确定,例如使得当前倒序分片的帧序列的起始帧的第一时间戳为当前倒序分片的帧序列的起始帧的第一时间戳加上帧间隔,由此,使得切片序列中的帧序列的第一时间戳按排列顺序单调递增。
126.步骤s129:判断倒序切片是否结束。
127.若步骤s129判断为否,则执行步骤s1210:所述服务器端将所查找到的最近的关键帧作为当前帧位置,以定位下一倒序分片的原始分片。
128.步骤s1210之后,再次回到步骤s123以定位下一原始分片,直至倒序分片结束。
129.若步骤s129判断为是,则执行步骤s1211:将所述倒序分片反向于采集时间排列生成切片序列。
130.所述切片序列的倒序分片反向于采集时间排列,每一倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳按排列顺序单调递增,所述切片序列用以发送至所述网页播放端以实现待播放视频流的倒序播放。
131.下面参见图4,图4示出了根据本技术另一实施例的服务器端的倒序切片方法的流程图。在本实施例中,所述待播放视频流储存于联网系统。
132.步骤s141:所述服务器端接收网页播放端发送的倒放请求。
133.所述倒放请求包括待播放视频流的标识以及起始播放时间,所述待播放视频流的标识对应的待播放视频流储存于联网系统;
134.步骤s142:所述服务器端将所述起始播放时间作为用以生成正序播放请求的请求时间。
135.具体而言,所述服务器端可以根据所述起始播放时间生成初始正序播放请求。接收所述联网系统自所述起始播放时间正序发送的待播放视频流,并将接收到的第一个关键帧作为当前倒序分片的起始关键帧。
136.步骤s143:所述服务器端生成正序播放请求,并发送至所述联网系统;
137.步骤s144:所述服务器端接收所述联网系统自与所述请求时间最接近的关键帧正序发送的待播放视频流,将接收到的第一帧作为当前倒序分片的起始关键帧,并将所述当前倒序分片的起始关键帧至前一倒序分片的起始关键帧前一帧封装至所述当前倒序分片中。
138.具体而言,所述服务器端生成第一个正序播放请求时,所述服务器端接收所述联网系统自所述请求时间最接近的关键帧正序发送的待播放视频流,将接收到的第一帧作为第一个倒序分片的起始关键帧,并根据设定时间/设定关键帧数量/待播放视频流的终止帧,将接收到的视频帧封装至第一个倒序分片中。
139.步骤s145:所述服务器端将当前倒序分片的起始关键帧之前n秒作为请求时间,以再次生成所述正序播放请求,直至倒序分片结束;
140.具体地,步骤s145再次生成正序播放请求后,执行步骤s143-144,直至倒序分片结束。倒序分片结束在收到取消分片指令或视频流结束时结束。
141.步骤s146:所述服务器端将所述倒序分片反向于采集时间排列生成切片序列。
142.每一所述倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳按排列顺序单调递增,所述切片序列用以发送至所述网页播放端以实现待播放视频流的倒序播放。
143.在本技术提供的倒序分片方法中,服务器端支持对联网系统的视频文件的进行倒序切片。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,联网系统传输的视频文件无需进行转存和转码;同时,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输。此外,视频流传输、分片和播放分别解耦至联网系统、服务器端和网页播放端,从而视频流传输、分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。
144.下面参见图5,图5示出了根据本技术另一具体实施例的服务器端的倒序切片方法的流程图。在本实施例中,所述待播放视频流储存于联网系统。
145.步骤s131:所述服务器端接收网页播放端发送的倒放请求。
146.具体而言,所述倒放请求包括待播放视频流的标识以及起始播放时间,所述待播放视频流的标识对应的待播放视频流储存于联网系统。
147.步骤s132:所述服务器端将所述起始播放时间作为用以生成初始正序播放请求的请求时间。
148.步骤s133:所述服务器端向联网系统发送初始正序播放请求。
149.具体而言,所述初始正序播放请求可以包括请求时间,请求时间为倒放请求的起始播放时间。所述初始正序播放请求可以包括待播放视频流标识以及终止播放时间。
150.进一步地,所述正序播放请求还可以包括播放倍速。在一些实施例中,正序播放请求可以为单倍速播放请求,以使得联网系统按正常的播放速度向服务器端发送待播放视频流,以便于服务器端接收到待播放视频流后进行倒序切片。
151.在另一些实施例中,考虑到联网系统与服务器端之间的视频传输和通信,为了保证网页播放端能够实时获得倒序分片并进行播放,步骤s132中的所述正序播放请求可以为多倍速正序播放请求。由此,联网系统可以基于多倍速正序播放请求以多倍速正序向服务器端发送待播放视频流。例如,正序播放请求可以为1.5倍速、2倍速、4倍速正序播放请求,本技术并非以此为限制。
152.步骤s134:所述服务器端接收所述联网系统自所述起始播放时间最接近的关键帧正序发送的待播放视频流,将接收到的第一帧作为第一个倒序分片的起始关键帧,并根据设定时间/设定关键帧数量/待播放视频流的终止帧,将接收到的视频帧封装至第一个倒序分片中。
153.具体而言,可以预先设置第一个倒序分片的设定时长或者设定关键帧数量。从而根据接收到的待播放视频流的时长是否满足设定时长、根据接收到的待播放视频流包含的关键帧数量是否满足设定设定关键帧数量来确定第一个倒序分片的切片位置。进一步地,也可以将第一个倒序分片的起始关键帧至待播放视频流的终止帧作为第一个倒序分片。
154.具体而言,所述服务器端持续接收联网系统基于正序播放请求发送的视频流并将分组封装成帧。
155.具体而言,步骤s134中所述服务器端为封装的第一个倒序分片中的帧序列生成第一时间戳,使得第一个倒序分片中的帧序列的第一时间戳按排列顺序单调递增,按播放顺序单调递减。
156.具体而言,步骤s134还可以初始化分片的步骤。进一步地,可以通过服务器端和联网系统协商返回的或视频流中解析的媒体参数信息来初始化分片。进一步地,还可以基于初始化分片输出fmp4初始分片(initialization segment)。fmp4初始分片(initialization segment)为fmp4分片的第一个分片以符合自适应流媒体协议。下文中生成的倒序分片为该第一个分片之后的包含实际视频流的媒体分片。
157.步骤s134还可以包括将已封装的第一个倒序分片作为前一倒序分片的步骤。
158.步骤s135:所述服务器端获取前一倒序分片的初始关键帧的特征数据,并将前一倒序分片的起始关键帧之前n秒作为请求时间,根据请求时间生成正序播放请求。
159.具体而言,正序播放请求与初始正序播放请求类似,可以包括请求时间。其还可以包括待播放视频流标识、终止播放时间以及播放倍速。
160.具体而言,n为大于0的常数。n可以根据关键帧的间隔进行设置。n例如可以设置为1秒、2秒等,本技术并非以此为限制。正序播放请求与初始正序播放请求类似,皆可以包括请求时间以及播放倍速,在此不予赘述。
161.具体地,将上一倒序分片的起始关键帧之前n秒作为新的请求时间,并根据新的请求时间生成正序播放请求,将已封装的第一倒序分片作为前一倒序分片。
162.步骤s136:所述服务器端向联网系统发送正序播放请求,接收所述联网系统自所述请求时间最接近的关键帧按正序发送的待播放视频流,将接收到的第一帧作为当前倒序分片的起始关键帧。
163.步骤s137:判断所述服务器接收的当前帧是否为关键帧,若否,则执行步骤s138:将当前帧写入当前倒序分片,继续接收当前帧的下一帧作为当前帧,进入步骤s137;
164.若是,则执行步骤s139:将当前关键帧的特征数据与前一倒序分片的起始关键帧
的特征数据进行匹配;
165.若步骤s139为匹配,则执行步骤s1310:将当前关键帧识别为前一倒序分片的起始关键帧,并将所述当前倒序分片的起始关键帧至该关键帧的前一帧封装至所述当前倒序分片中。
166.具体而言,步骤s1310中,该关键帧是指识别为前一倒序分片的起始关键帧的当前关键帧;该关键帧的编码载荷的设定位置数据与前一倒序分片的起始关键帧的编码载荷的设定位置的数据一致时,该关键帧与前一倒序分片的起始关键帧匹配,从而可以将当前关键帧作为前一倒序分片的起始关键帧,以定位当前倒序分片的终止帧。例如,可以将关键帧的编码载荷的前128位作为特征值,以便于进行关键帧之间的匹配。进一步地,在步骤s133中可以将前一倒序分片的起始关键帧的编码载荷的设定位置的数据作为特征数据。从而在步骤s135中,若当前帧为关键帧,则将当前帧的特征数据与前一倒序分片的起始关键帧的特征数据进行匹配,匹配一致则当前帧与前一倒序分片的起始关键帧匹配,由此,可提高关键帧的匹配效率。其它的关键帧匹配方式也在本技术的保护范围之内。进一步地,通过当前关键帧与前一倒序分片的起始关键帧的匹配确定当前倒序分片的终止帧为前一倒序分片的起始关键帧的前一帧,也即将所述当前倒序分片的起始关键帧至该关键帧的前一帧封装至所述当前倒序分片中,从而无需对各倒序分片内包含的关键帧数量进行限制。
167.若步骤s139为未匹配,则执行步骤s138。
168.具体而言,步骤s1310可以将当前接收的视频帧封装至fmp4倒序分片中,以便于网页播放端的媒体源扩展模块能够进行处理。
169.步骤s1311:所述服务器端为封装的当前倒序分片中的帧序列生成第一时间戳,输出封装后的当前倒序分片。
170.具体而言,所述第一时间戳按倒序分片内以及倒序分片之间的帧序列的排列顺序单调递增。具体而言,可以根据前一倒序分片的帧序列的终止帧的第一时间戳来确定当前倒序分片的起始帧的第一时间戳。例如使得当前倒序分片的帧序列的起始帧的第一时间戳为前一倒序分片的帧序列的终止帧的第一时间戳加上帧间隔,由此,使得切片序列中的帧序列的第一时间戳按排列顺序单调递增。
171.步骤s1312:判断倒序分片是否结束。
172.若步骤s1312判断为否,则执行步骤s1313:将封装后的当前倒序分片作为前一倒序分片,并重新执行步骤s135。
173.若步骤s1312判断为是,则执行步骤s1314:将各个封装后的倒序分片反向于采集时间排列生成切片序列。
174.所述切片序列的倒序分片反向于采集时间排列,每一倒序分片内的帧序列正向于采集时间排列,所述切片序列的帧序列的第一时间戳按排列顺序单调递增,所述切片序列用以发送至所述网页播放端以实现待播放视频流的倒序播放。
175.结合图6至图8对于上述步骤进行说明。服务器端在收到网页播放端发送的倒放请求后,将倒放请求中的起始播放时间作为请求时间,生成倒序播放请求,并发送至联网系统。联网系统会根据起始播放时间定位最接近的关键帧(例如为i1),将待播放视频流正序发送至服务器端。服务器端将接收到的第一帧(i1)作为第一个倒序分片的起始关键帧,然后根据设定时长/设定关键帧数量/待播放视频流的终止帧定位到第一倒序分片的终止帧
(p1,i1至p1之间可以包括非关键帧或者包括非关键帧和一个或多个关键帧),根据i1至p1的帧序列(原始分片1)封装为第一个倒序分片,并为第一个倒序分片的帧序列设置第一时间戳,使得第一个倒序分片内的帧序列按排列顺序单调递增(如图8)。服务器端封装第一个倒序分片后,将i1帧的编码载荷的设定位置的数据(如编码载荷前128位的数据)作为特征数据。将i1帧之前n秒作为新的请求时间,生成更新的倒序播放请求,并发送至联网系统。
176.联网系统根据i1帧之前n秒定位到最近的关键帧(如i2),并自i2开始将待播放视频流发送至服务器端。服务器端接收i2后,比较i2的特征数据与i1的特征数据是否匹配,若未匹配,则将i2作为第二个倒序分片的起始关键帧写入第二个倒序分片,持续接收待播放视频流的视频帧,并在接收视频帧是判断当前接收的视频帧是否为关键帧,若否,则直接写入第二个倒序分片,若是,则比较当前关键帧的特征数据与i1的特征数据是否匹配,若匹配一致,则说明当前接收到的关键帧即为第一个倒序分片的起始关键帧i1,再继续读取将会使第二个倒序分片的视频帧与第一个倒序分片的视频帧重复,由此,可以i1帧的前一帧p2作为第二个倒序分片的终止帧,服务器端根据i2至p2的帧序列(原始分片2)封装为第二个倒序分片,并为第二个倒序分片的帧序列设置第一时间戳,使得第二个倒序分片内的帧序列按排列顺序单调递增(如图8),且p1帧的第一时间戳与i2帧的第一时间戳单调递增。以此类推,直至取消操作或者是无历史视频流可读取。
177.若联网系统根据i1帧之前n秒定位到最近的关键帧为i3,并自i3开始将待播放视频流发送至服务器端。服务器端将i3作为第二个倒序分片的起始关键帧,持续接收待播放视频流的视频帧,并在接收视频帧是判断当前接收的视频帧是否为关键帧,若否,则直接写入第二个倒序分片,若是,则比较当前关键帧的特征数据与i1的特征数据是否匹配,如当接收到关键帧为i2,将接收到关键帧i2的编码载荷的设定位置的数据(如编码载荷前128位的数据)作为特征数据,与第一个倒序分片的起始关键帧i1的特征数据进行匹配,若匹配不一致,则继续接收视频帧直至接收到的关键帧为i1帧,由此,可以将第一个倒序分片的起始关键帧的前一帧p2作为第二个倒序分片的终止帧,服务器端根据i3至p2的帧序列封装为第二个倒序分片,并为第二个倒序分片的帧序列设置第一时间戳,使得第二个倒序分片内的帧序列按排列顺序单调递增。以此类推,直至取消操作或者是无历史视频流可读取。
178.以上示例性地示出本技术的多个实现方式,本技术并非以此为限制,各实施方式中,步骤的增加、省略、顺序变换皆在本技术的保护范围之内;各实施方式可以单独或组合来实现。
179.下面结合图10描述本技术提供的倒序播放系统200。倒序播放系统200包括网页播放端210以及服务器端220。网页播放端210可以执行如图1所示的步骤,服务器端220可以执行如图2至5所示的步骤,由此,以支持待播放视频流来源的倒序播放。进一步地,倒序播放系统200还可以包括联网系统230,能够实现前端监控视频的倒放。图10中示意性地示出网页播放端210、服务器端220以及联网系统230所包含的模块,本技术并非以此为限制。
180.网页播放端210可以包括控制模块211、获取模块212和播放模块213。
181.具体而言,网页播放端210的控制模块211可以用于选择待播放视频流及起始播放时间/位置,并发送倒放请求给服务器端220,同时接收服务器端220发送的切片序列的索引信息。
182.具体而言,网页播放端210的获取模块212可以用于下载由服务器端220生成的倒
序分片(fmp4分片),倒序分片的下载与倒序分片的生成是同时进行的。同时,获取模块212会根据播放器210本地的分片缓存情况调整下载节奏。
183.具体而言,网页播放端210的播放模块213可以将倒序分片输入给媒体源扩展模块的源缓存对象,并最终输入到视频元素。另外,播放模块213还通过定时递减修改视频元素的当前时间值,来达到按指定时序进行播放控制的目的。媒体源扩展模块应用于html5技术中,从而使得本技术能够基于html5技术来实现视频倒序播放。
184.服务器端220包括信令模块221、接入模块222、发送模块223和切片模块224。
185.具体而言,服务器端220的信令模块221可以用于接收并处理网页播放端210发送的倒放等控制请求,向网页播放端210反馈服务器端220发布的通知信息,如索引信息更新等。信令模块221可以用于与切片模块224交互,下发具体的码流切片任务,以及接收切片模块224反馈的分片索引更新通知。信令模块221可以用于向联网系统230转发将切片模块224的请求分片码流等。
186.具体而言,服务器端220的接入模块222可以用于负责维护联网系统230的链路,信令适配与转换。接入模块222可以用作协议网关。可选地,接入模块222在可以支持的行业规范协议有gb/t28181(媒体控制相关的子协议为sip)、onvif(媒体控制相关的子协议为rtsp)。
187.具体而言,服务器端220的发送模块223可以用于响应网页播放端210的获取模块212的下载分片数据请求,从本地缓存读取切片模块224生成的倒序分片并发送给网页播放端210的获取模块212。
188.具体而言,服务器端220的切片模块224可以用于对待播放视频码流执行倒序切片,待播放视频码流可以储存于服务器本地视频库225。服务器端220的切片模块224也可支持对于远端联网系统230发送的待播放视频码流进行倒序切片。此时,切片模块224可以用作点播网关。
189.联网系统230可以根据实际场景进行部署。在一些实施例中,本技术用于监控场景,从而联网系统230可以包括前端监控设备231和下级监控平台232,本技术并非以此为限制,其它远端联网系统230也在本技术的保护范围之内。
190.本技术提供的倒序播放系统中,网页播放端向服务器端发送倒放请求,从而服务器端可以通过执行待播放视频流的倒序切片获得切片序列,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输;服务器端支持服务器端本地视频文件的分片倒排和/或支持联网系统的视频文件的分片倒排。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,本地视频文件无需进行转存和转码;网页播放端获取倒序分片后可以通过媒体源扩展模块及其源缓存来为倒序分片设置时间戳偏移属性值,且可生成按播放顺序单调递减的第二时间戳,以与按步进值定时递减视频元素的当前时间值配合,推进待播放视频的倒序播放,无需对视频文件进行转存和转码。此外,由分片和播放分别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。由此,实现了低成本、实时响应的视频流的倒放,在倒放过程中无需对视频流进行转存,也无需额外的插件。
191.进一步地,本技术还的服务器端还可以同时支持本地视频流和联网系统的视频流的倒序切片,以适应不同的场景中。
192.本技术提供了一种基于html5技术的无需转码、无需整体转存、实时响应的无插件化倒放视频录像的方法,以解决视频监控录像点播倒放功能无法网页化,或者网页化后无法支持低成本、实时响应的倒放功能的问题。
193.本技术可以通过软件、硬件、固件及其任意结合的方式实现倒序播放系统200。图10仅仅是示意性的示出本技术提供的倒序播放系统200,在不违背本技术构思的前提下,模块的拆分、合并、增加都在本技术的保护范围之内。
194.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述倒序播放方法或倒序切片方法的步骤。在一些可能的实施方式中,本技术的各个方面还可以实现为一种程序产品的形式,其包括程序代码,若所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述倒序播放方法或倒序切片方法部分中描述的根据本技术各种示例性实施方式的步骤。
195.参考图11所示,描述了根据本技术的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
196.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
197.所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适若的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
198.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
199.在本公开的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述
可执行指令来执行上述任意一个实施例中所述倒序播放方法或倒序切片方法的步骤。
200.所属技术领域的技术人员能够理解,本技术的各个方面可以实现为系统、方法或程序产品。因此,本技术的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
201.下面参照图12来描述根据本技术的这种实施方式的电子设备600。图12显示的电子设备600仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
202.如图12所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
203.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述倒序播放方法或倒序切片方法部分中描述的根据本技术各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1至图3中所示的步骤。
204.所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。
205.所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
206.总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
207.电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应若明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
208.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述倒序播放方法或倒序切片方法。
209.由此可见,本技术提供的方案,与现有技术相比,具有如下优势:
210.网页播放端向服务器端发送倒放请求,从而服务器端可以通过执行待播放视频流
的倒序分片获得切片序列,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输;网页播放端获取倒序分片后可以通过媒体源扩展模块及其源缓存来为倒序分片设置时间戳偏移属性值,且可生成按播放顺序单调递减的第二时间戳,以与按步进值定时递减视频元素的当前时间值配合,推进待播放视频的倒序播放,无需对视频文件进行转存和转码。此外,由分片和播放分别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。由此,实现了低成本、实时响应的视频流的倒放,在倒放过程中无需对视频流进行转存,也无需额外的插件。
211.服务器端支持对服务器端本地视频文件进行倒序切片。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,本地视频文件无需进行转存和转码;同时,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输。此外,由分片和播放分别解耦至服务器端和网页播放端,从而分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。
212.服务器端支持对联网系统的视频文件的进行倒序切片。服务器端通过倒序分片的封装,从而使得倒序分片能够符合网页播放端媒体源扩展模块的处理格式,联网系统传输的视频文件无需进行转存和转码;同时,服务器端对切片序列的第一时间戳的设置,以保证切片序列中的帧序列能够顺序传输。此外,视频流传输、分片和播放分别解耦至联网系统、服务器端和网页播放端,从而视频流传输、分片、传输和播放可以以流水线的形式,倒放过程能够实现时延的降低。
213.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1