视频数据还原方法、装置及视频还原设备与流程

文档序号:16247784发布日期:2018-12-11 23:44阅读:299来源:国知局
视频数据还原方法、装置及视频还原设备与流程

本发明涉及视频技术领域,具体而言,涉及一种视频数据还原方法、装置及视频还原设备。

背景技术

随着短视频和直播行业的兴起,网络流量中视频流量的比例越来越高。部分视频存含有色情、反动等违规内容,使得对视频内容的监管也越来越重要。视频内容监管的手段离不开视频内容的智能识别。视频内容的智能识别需要获取视频内容的图片帧,利用机器学习智能识别图片帧内容,间接判断视频内容是否合规。获取体现视频内容的图片帧的过程即为视频还原。

相关技术中,进行视频还原的方式为从网络流量中提取出视频地址,用视频地址下载原始视频文件到本地,下载完成后对视频文件提取图片帧。短视频点播多用这种方式。或者使用开源软件ffmpeg提供的功能直接从视频地址提取图片帧。原理是下载视频片段到内存中,读取内存提取图片帧。直播没有原始视频文件,视频内容是主播实时动态产生的,所以直播都使用这种方式。然而,上述方式不仅会增加设备流量负载,无法避免下载文件过程带来的延时。且直播厂商的视频地址是动态变化的,抓取出来的视频地址随时可能会失效,导致解码失败。



技术实现要素:

本发明的目的在于提供一种视频数据还原方法、装置及视频还原设备,用以改善上述问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种视频数据还原方法,应用于视频还原设备,所述方法包括:接收网络数据包;当检测到所述网络数据包中存在解码类数据时,将所述解码类数据放入对应的视频临时存储块内;对所述视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。

第二方面,本发明实施例提供了一种视频数据还原装置,应用于视频还原设备,所述装置包括:接收模块,用于接收网络数据包;存储模块,用于当检测到所述网络数据包中存在解码类数据时,将所述解码类数据放入对应的视频临时存储块内;解码模块,用于对所述视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。

第三方面,本发明实施例提供了一种视频还原设备,所述视频还原设备包括:存储器;处理器;以及视频数据还原装置,所述视频数据还原装置安装于所述存储器中并包括一个或多个由所述处理器执行的软件功能模组,所述视频数据还原装置包括:接收模块,用于接收网络数据包;存储模块,用于当检测到所述网络数据包中存在解码类数据时,将所述解码类数据放入对应的视频临时存储块内;解码模块,用于对所述视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。

与现有技术相比,本发明提供的一种视频数据还原方法,通过在接收到视频服务器传送给用户终端的网络数据包后,检测到所述网络数据包中存在解码类数据时,直接将检测出的解码类数据放入对应的视频临时存储块内,从而对视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。避免了重复向视频服务器请求下载用户终端观看的视频数据,从而减少了时延,降低了设备的流量负载。即使视频服务器提供商变更了视频地址,也不会影响整个视频还原过程,确保视频还原的可靠性和高效性。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的应用环境示意图。

图2为图1中示出的视频还原设备的结构示意图。

图3为本发明实施例提供的一种视频数据还原方法的步骤流程图。

图4为本发明实施例提供的一种视频数据还原方法的示例图。

图5为本发明实施例提供的一种视频数据还原装置的示意图。

图标:100-视频还原设备;111-存储器;112-处理器;113-通信单元;200-视频数据还原装置;201-接收模块;202-识别模块;203-分离模块;204-存储模块;205-解码模块;300-网络中间设备;400-用户终端;500-视频服务器。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

视频还原是对视频数据进行监控的重要环节。相关技术为了实现视频还原这一过程,主要通过从网络流量中提取出视频地址,用视频地址下载原始视频文件到本地,下载完成后对视频文件提取图片帧,以及使用开源软件ffmpeg提供的功能直接从视频地址提取图片帧这两种方式,这两种方式均无可避免的要视频还原设备从视频服务器下载视频数据。这就致使,相关技术中提供的视频还原过程存在下属缺点:

1、需连接视频服务器额外再下载一次视频数据,增加了视频还原设备的流量负载。

2、用文件提取图片帧,需要先下载视频文件。无法避免下载文件过程带来的延时。网络文件越大,延时越大,并且会浪费视频还原设备的存储空间。

3、视频服务器提供的视频地址是动态变化的,原从网络数据包中抓取出来的视频地址可能会失效,导致解码失败。

4、下载视频从视频文件提取图片帧和从视频地址提取图片帧的过程都需要阻塞整个程序执行单元(执行单元一般为线程或线程或者进程,系统进行资源分配和调度的基本单位),直到视频解析完毕。执行单元被阻塞就是被独占,对系统资源消耗很大,此时无法处理其他事情,其他事情只能等待视频解析完毕再处理。系统分配执行单元的能力限制了同一时间内只能解析少量视频流。无法满足网络中间设备需同时处理大量视频流的条件。

为了改善上述问题,本发明实施例提出了一种视频数据还原方法、装置及视频还原设备。

进一步地,本发明下述各实施例如无特别说明均可应用于如图1所示的环境中,如图1所示,用户终端400通过网络中间设备300与视频服务器500通信连接,以便从视频服务器500请求视频数据进行观看。上述视频数据可以是实时的直播视频,也可以是视频服务器500内存储的完整的播放视频。视频还原设备100与网络中间设备300通信连接,视频还原设备100从网络中间设备300中克隆视频服务器500传输给用户终端400的网络流量。上述网络中间设备300可以与多个用户终端400通信连接。

请参照图2,是上述视频还原设备100的方框示意图。所述视频还原设备100包括视频数据还原装置200、存储器111、处理器112及通信单元113。

所述存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述视频数据还原装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述视频还原设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器112用于执行所述存储器111中存储的可执行模块,例如视频数据还原装置200所包括的软件功能模块及计算机程序等。

其中,所述存储器111可以是,但不限于,随机存取存储器111(randomaccessmemory,ram),只读存储器111(readonlymemory,rom),可编程只读存储器111(programmableread-onlymemory,prom),可擦除只读存储器111(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器111(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器111用于存储程序或者数据。所述通信单元113用于通过所述网络建立所述视频还原设备100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。

应当理解的是,图2所示的结构仅为视频还原设备100的结构示意图,所述视频还原设备100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。

第一实施例

请参考图3,图3为本发明较佳实施例提供的一种视频数据还原方法的流程图。应用于图1所示的视频还原设备100。上述视频数据还原方法包括以下步骤:

步骤s101,接收网络数据包。

在本发明实施例中,网络中间设备300可以同时为多个用户终端400服务,每个用户终端400同时可以向视频服务器500请求至少一个视频数据,视频数据以视频流的方式通过网络中间设备300传输至对应的用户终端400。视频流作为网络流的一部分通过网络中间设备300,同一时间通过网络中间设备300的网络流均克隆至视频还原设备100。需要说明的是,网络流由多个网络数据包组成。网络数据包的传输传输形成网络流。可选地,视频还原设备100接收通过网络中间设备300的所有网络流中的网络数据包。

步骤s102,识别属于视频流的所述网络数据包。

在本发明实施例中,视频数据拆分出来的网络数据包依次传输形成视频流,视频流在传输中断前是连续的,若一网络流中开始传输视频数据拆分出来的网络数据包,则在该网络流中会出现一携带视频起始信息的网络数据包。作为一种实施方式,视频还原设备100可以依据从该网络数据包中识别出来的视频起始信息判断该网络流开始传输从视频数据中拆分得到的网络数据包。视频还原设备100可以从网络流中筛选出属于视频数据的网络数据包。可以理解的,属于视频流的网络数据包均包括该视频流的标识,视频流的中断可以是视频数据在用户终端400播放完毕、用户通过用户终端400关闭了视频播放界面。其中,用户通过用户终端400选择暂停视频数据的接收触发的视频流的中断还可以恢复,对于视频还原设备100而言,可以根据从接收到的网络数据包中再次识别到被暂停的视频流对应的别是确定。在本发明实施例中,仅在识别出属于视频流的网络数据包时流程会进入步骤s103,对于不属于视频流的网络数据包视频还原设备直接忽略,不做处理,从而提高处理效率。

步骤s103,按照预设的数据分类对识别出的所述数据包进行分离,以检测是否存在解码类数据。

在本发明实施例中,网络传输时会将视频数据拆分存放在多个网络数据包内,每一网络数据包中的数据类型可以包括帧参数数据、图片帧数据及音频等其他数据(例如,音频等其他数据可以是音频数据、时间戳数据)中的至少一种。需要说明的是,视频流的解码依赖于帧参数,帧参数一般包含在视频文件的头部,例如mp4视频格式的帧参数包含在ftpy、moov、mdat等box内、flv视频格式的帧参数则包含在tag内。为了方便传输,一个完整的帧参数可以被拆分为多个帧参数数据,每一个帧参数数据可以是该帧参数的至少一个帧参数段落,被拆分后的多个帧参数数据可以放入至少一个网络数据包中进行传输。完整的帧参数也可以作为一个帧参数数据,放于一个网络数据包中传输。

进一步地,视频数据对应的网络数据包的数据类型中,帧参数数据、图片帧数据对视频图像解码有贡献,而音频数据及其他类型的数据对视频图像解码均无作用,因此,在本发明实施例中,将帧参数数据、图片帧数据作为解码类数据。视频还原设备100在对一个网络数据包拆解后,对拆解出的数据进行检验,当检验出存在帧参数数据、图片帧数据中的至少一类时,判定存在解码类数据,否则认为该网络数据包中不存在解码类数据。

步骤s104,当检测到网络数据包中存在解码类数据时,将解码类数据放入对应的视频临时存储块内。

在本发明实施例中,对于每一个正常传输的视频流均会分配一临时存储区作为其视频临时存储块。检测到一视频流的解码类数据,则放入该视频流对应的视频临时存储块内,等待处理。可选地,可以先查找是否存在与网络数据包所属的视频流对应的视频临时存储块,具体地,可以依据网络数据包中携带的视频流的标识查找是否已有与其匹配的视频临时存储块。若存在对应的视频临时存储块,则将分离出的所述解码类数据存放入该视频临时存储块。若不存在对应的所述视频临时存储块,则划分一临时存储区作为与该视频流对应的所述视频临时存储块,并将分离出的所述解码类数据存放入该视频临时存储块。通常,从网络数据包中拆解出来的帧参数数据中携带视频起始信息字段时,可以认为该网络流中从该网络数据包之后接收到的网络数据包所属的视频流在视频还原设备100中不存在对应的视频临时存储块,判断其为一新的视频流,需要划分一临时存储区作为对应的视频临时存储块。

需要说明的是,上述步骤均循环执行的,上述步骤s103与步骤s104在执行过程中均需要占用线程或者进程,但是上述步骤在无需执行的时间段内(例如,在网络数据包不属于视频流的时段内或者网络数据包拆解出来后并不存在解码类数据的时段内),对应的线程或者进程则会空闲,可以被调度去处理的其他事项,充分利用空闲时间间隙,提高线程或者进程的使用效率,进而节约系统资源。

步骤s105,对视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。

在本发明实施例中,在视频临时存储块存放的解码类数据满足预设条件时才会触发解码处理。可选地,可以是检测视频临时存储块内存储的所述解码类数据是否能构成完整的解码数据集,若能够构成完整的所述解码数据集,则基于解码数据集进行图像解码,以得到所述视频流中的视频图像。进一步地,检测视频临时存储块内存储的所述解码类数据是否能构成完整的解码数据集的方式可以是:先查看已存储的帧参数数据是否可以构成帧参数集合,需要说明的是,上述帧参数集合内的数据可以组成完整的帧参数,可以理解的,帧参数集合可以包括至少一个帧参数数据。在依据该帧参数集合检验所述视频临时存储块内存储的所述图片帧数据中是否存在与所述帧参数集合对应的完整的所述图像帧集合。需要说明的是,图像帧集合可以对应至少一帧图片帧数据,具体对应的图片帧数据的帧数可以依据解析出的帧参数确定。进一步地,基于解码数据集进行图像解码的方式包括基于所述帧参数集合,利用帧参数,对所述图像帧集合进行解码。

网络流的传播是实时的,而本发明实施例提供的视频数据还原方法的步骤s101也是循环启动,确保了视频数据还原的实时性,避免了延时。相较于相关技术中,先下载视频数据的方式,既节省时间,又有效避免下载过程不能受到中断的导致的线程或者进程长时间占用,从解决同时间内不能对大量视频流进行还原的问题。

进一步地,为了提高临时存储区的使用效率,本发明实施例提供的视频数据还原方法还可以包括步骤:当一视频流对应的网络数据包中止传输或者解码出所述视频流的最后一帧视频图像时,释放所述视频流对应的所述视频临时存储块。需要说明的是,视频流对应的网络数据包中止传输可以是用户终端400关闭了视频数据的播放界面。

为了对本发明实施例提供的视频数据还原方法进一步的说明,下面以一个示例进行描述,如图4所示,上述视频数据还原方法可以包括以下步骤:

s1,接收网络数据包。

s2,识别是否属于视频流。

s3,判断网络数据包对应的视频流是否是新的视频流。是的话流程进入步骤s4,否的话流程进入s5。

s4,分配其专属的视频临时存储块。

s5,拿出该视频流对应的视频临时存储块。

s6,将该网络数据包分解,并其中的解码类数据(例如,帧参数数据及图片帧数据)放入对应的视频临时存储块,将分解出的非解码类数据(例如,音频数据)直接忽略。

s7,判断视频临时存储块内的数据是否已包含完整的解码数据集。如果是,则流程进入s8。如果不是,则流程回到s1,继续处理下一个网络数据包。

s8,基于完整的解码数据集进行解码,获得视频图像。

s9,判断整个视频流是否解码完成。如果是,流程进入s10。需要说明的是,视频内容全部解码完毕或用户关在用户终端400闭视频页面都会导致视频解码结束。

s10,释放该视频流对应的视频临时存储块,归还所占用内存资源。

第二实施例

请参考图5,本发明实施例提供的一种视频数据还原装置200,应用于视频还原设备100。如图5所示,上述视频数据还原装置200包括:接收模块201、识别模块202、分离模块203、存储模块204及解码模块205。

接收模块201,用于接收网络数据包;

识别模块202,用于识别属于视频流的网络数据包;

分离模块203,用于按照预设的数据分类对识别出的所述数据包进行分离,以检测是否存在所述解码类数据。

存储模块204,用于当检测到所述网络数据包中存在解码类数据时,将所述解码类数据放入对应的视频临时存储块内。

优选地,上述存储模块204具体用于:查找是否存在与所述网络数据包所属的视频流对应的所述视频临时存储块。若存在对应的所述视频临时存储块,则将分离出的所述解码类数据存放入该视频临时存储块。若不存在对应的所述视频临时存储块,则划分一临时存储区作为与该视频流对应的所述视频临时存储块,并将分离出的所述解码类数据存放入该视频临时存储块。

解码模块205,用于对所述视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

综上所述,本发明提供的一种视频数据还原方法、装置及视频还原设备。其中,上述视频数据还原方法及装置应用于视频还原设备。上述视频数据还原方法包括:接收网络数据包,当检测到所述网络数据包中存在解码类数据时,将所述解码类数据放入对应的视频临时存储块内;对所述视频临时存储块已存放的所述解码类数据进行解码处理,以获得还原的视频图像。上述方案至少包括以下优点:

1、可以减少视频还原设备的流量负担,利用当前已有网络流数据即可解码出视频图像,无需额外再下载一次视频数据。

2、整个过程实时解码无延时、节省设备存储空间。因为不需要下载视频文件,对网络数据包顺序解码,可做到实时提取图片帧,且不会额外浪费设备存储空间。

3、提升解码成功率。因不会与直播厂家的视频服务器额外交互,避免了因视频地址失效导致的解码失败。

4、节省系统资源,不影响系统做其他任务,可同时解码大量视频。基于网络流的解码过程,同一线程或者进程可同时解析大量视频,能满足网络中间设备需同时处理大量视频流的特点。不阻塞程序执行单元,就不会影响系统做其他事情。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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