一种缓存视频帧的装置和方法
【专利摘要】本发明公开了一种缓存视频帧的装置和方法,包括:获取模块、编码压缩模块和缓存模块,获取模块、压缩模块和缓存模块,通过所述获取模块设置为获取数据源产生的预定时间间隔的视频帧数据,所述压缩模块设置为将所获取的视频帧数据压缩成关键帧数据,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
【专利说明】
_种缓存视频巾贞的装置和方法
技术领域
[0001 ]本发明涉及通信技术领域,尤指一种缓存视频帧的装置和方法。
【背景技术】
[0002]目前,随着移动终端的发展,现在的手机不仅可以满足日常的通信功能,还可以进行摄影记录人们的生活,越来越多的人们喜欢通过便携的手机来进行拍摄。
[0003]现有技术中,人们在拍摄过程中采用的延时拍摄时,都是随着拍摄时间的延长,所生成的视频文件也会变得越大,这样容易达到文件系统支持的文件容量的上限,会导致长时间拍摄的视频文件不可用,无法完整的存储整个视频文件,降低了用户的体验度。
【发明内容】
[0004]为了解决上述技术问题,本发明提供了一种缓存视频帧的装置和方法,能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0005]为了达到本发明目的,第一方面,本发明提供了一种缓存视频帧的装置,该装置包括:获取模块、压缩模块和缓存模块;
[0006]所述获取模块,设置为获取数据源产生的预定时间间隔的视频帧数据;
[0007]所述压缩模块,设置为将所获取的视频帧数据压缩成关键帧数据;
[0008]所述缓存模块,设置为将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据。
[0009]在一个实施例中,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,是指:
[0010]所述缓存模块设置为将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问。
[0011]在一个实施例中,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,是指:
[0012]所述缓存模块设置为将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问。
[0013]在一个实施例中,所述缓存模块设置为当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,是指:
[0014]所述缓存模块设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据。
[0015]在一个实施例中,所述缓存模块设置为当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,是指:
[0016]所述缓存模块设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据。
[0017]本发明实施例提供了一种缓存视频帧的装置,包括:获取模块、编码压缩模块和缓存模块,获取模块、压缩模块和缓存模块,所述获取模块设置为获取数据源产生的预定时间间隔的视频帧数据,所述压缩模块设置为将所获取的视频帧数据压缩成关键帧数据,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0018]第二方面,提供一种缓存视频帧的方法,包括:
[0019]获取数据源产生的预定时间间隔的视频帧数据;
[0020]将所获取的视频帧数据压缩成关键帧数据;
[0021]将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据。
[0022]在一个实施例中,将所述关键帧数据以队列的方式进行存储,包括:
[0023]将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问。
[0024]在一个实施例中,将所述关键帧数据以队列的方式进行存储,包括:
[0025]将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问。
[0026]在一个实施例中,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,包括:
[0027]为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据。
[0028]在一个实施例中,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,包括:
[0029]当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据。
[0030]本发明实施例提供了一种缓存视频帧的方法,包括:获取数据源产生的预定时间间隔的视频帧数据,将所获取的视频帧数据压缩成关键帧数据,将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0031]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0032]附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0033]图1为实现本发明各个实施例一个可选的移动终端的硬件结构示意图;
[0034]图2为如图1所示的移动终端的无线通信系统示意图;
[0035]图3为本发明提供的一种缓存视频帧的装置实施例一的结构示意图;
[0036]图4为本发明提供的一种缓存视频帧的装置实施例一关键帧数据存储示意图;
[0037]图5为本发明提供的一种缓存视频帧的装置实施例一关键帧数据存储示意图;
[0038]图6为本发明提供的一种缓存视频帧的装置实施例一关键帧数据缓存示意图;
[0039]图7为本发明提供的一种缓存视频帧的装置实施例一关键帧数据缓存示意图;
[0040]图8为本发明提供的一种缓存视频帧的方法实施例一的流程示意图。
[0041 ]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
【具体实施方式】
[0042]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0043]现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
[0044]移动终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。下面,假设终端是移动终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
[0045]图1为实现本发明各个实施例一个可选的移动终端的硬件结构示意图。
[0046]移动终端100可以包括A/V(音频/视频)输入单元120、用户输入单元130、输出单元150、存储器160、接口单元170、控制器180和电源单元190等等。图1示出了具有各种组件的移动终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述移动终端的元件。
[0047]A/V输入单元120用于接收音频或视频信号。A/V输入单元120可以包括相机121和麦克风1220,相机121对在视频捕获模式或图像捕获模式中由图像捕获装置获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元151上。经相机121处理后的图像帧可以存储在存储器160(或其它存储介质)中或者经由无线通信单元110进行发送,可以根据移动终端的构造提供两个或更多相机1210。麦克风122可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由移动通信模块112发送到移动通信基站的格式输出。麦克风122可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
[0048]用户输入单元130可以根据用户输入的命令生成键输入数据以控制移动终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、锅仔片、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏。
[0049]接口单元170用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别模块可以是存储用于验证用户使用移动终端100的各种信息并且可以包括用户识别模块(UIM)、客户识别模块(SIM)、通用客户识别模块(USM)等等。另外,具有识别模块的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与移动终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端和外部装置之间传输数据。
[0050]另外,当移动终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到移动终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到移动终端的路径。从底座输入的各种命令信号或电力可以用作用于识别移动终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频信号、警报信号、振动信号等等)。输出单元150可以包括显示单元151、音频输出模块152、警报单元153等等。
[0051 ] 显示单元151可以显示在移动终端100中处理的信息。例如,当移动终端100处于电话通话模式时,显示单元151可以显示与通话或其它通信(例如,文本消息收发、多媒体文件下载等等)相关的用户界面(UI)或图形用户界面(GUI)。当移动终端100处于视频通话模式或者图像捕获模式时,显示单元151可以显示捕获的图像和/或接收的图像、示出视频或图像以及相关功能的UI或GUI等等。
[0052]同时,当显示单元151和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元151可以用作输入装置和输出装置。显示单元151可以包括液晶显示器(LCD)、薄膜晶体管IXD(TFT-1XD)、有机发光二极管(OLED)显示器、柔性显示器、三维(3D)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为TOLED(透明有机发光二极管)显示器等等。根据特定想要的实施方式,移动终端100可以包括两个或更多显示单元(或其它显示装置),例如,移动终端可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。
[0053]音频输出模块152可以在移动终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将无线通信单元110接收的或者在存储器160中存储的音频数据转换音频信号并且输出为声音。而且,音频输出模块152可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出模块152可以包括扬声器、蜂鸣器等等。
[0054]存储器160可以存储由控制器180执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储器160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
[0055]存储器160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(R0M)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,移动终端100可以与通过网络连接执行存储器160的存储功能的网络存储装置协作。
[0056]控制器180通常控制移动终端的总体操作。例如,控制器180执行与语音通话、数据通信、视频通话等等相关的控制和处理。另外,控制器180可以包括用于再现(或回放)多媒体数据的多媒体模块1810,多媒体模块1810可以构造在控制器180内,或者可以构造为与控制器180分离。控制器180可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
[0057]电源单元190在控制器180的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
[0058]这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器160中并且由控制器180执行。
[0059]至此,己经按照其功能描述了移动终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型移动终端等等的各种类型的移动终端中的滑动型移动终端作为示例。因此,本发明能够应用于任何类型的移动终端,并且不限于滑动型移动终端。
[0060]如图1中所示的移动终端100可以被构造为利用经由帧或分组发送数据的诸如有线和无线通信系统以及基于卫星的通信系统来操作。
[0061]现在将参考图2描述其中根据本发明的移动终端能够操作的通信系统。
[0062]这样的通信系统可以使用不同的空中接口和/或物理层。例如,由通信系统使用的空中接口包括例如频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA)和通用移动通信系统(UMTS)(特别地,长期演进(LTE))、全球移动通信系统(GSM)等等。作为非限制性示例,下面的描述涉及CDMA通信系统,但是这样的教导同样适用于其它类型的系统。
[0063]参考图2,⑶MA无线通信系统可以包括多个移动终端100、多个基站(BS)270、基站控制器(BSC)275和移动交换中心(MSCUSOJSCSSO被构造为与公共电话交换网络(PSTN)290形成接口。MSC280还被构造为与可以经由回程线路耦接到基站270的BSC275形成接口。回程线路可以根据若干己知的接口中的任一种来构造,所述接口包括例如E1/T1、ATM,IP、PPP、帧中继、HDSL、ADSL或xDSL。将理解的是,如图2中所示的系统可以包括多个BSC2750。
[0064]每个BS270可以服务一个或多个分区(或区域),由多向天线或指向特定方向的天线覆盖的每个分区放射状地远离BS270。或者,每个分区可以由用于分集接收的两个或更多天线覆盖。每个BS270可以被构造为支持多个频率分配,并且每个频率分配具有特定频谱(例如,1.25MHz,5MHz 等等)。
[0065]分区与频率分配的交叉可以被称为CDMA信道。BS270也可以被称为基站收发器子系统(BTS)或者其它等效术语。在这样的情况下,术语"基站"可以用于笼统地表示单个BSC275和至少一个BS270。基站也可以被称为〃蜂窝站〃。或者,特定BS270的各分区可以被称为多个蜂窝站。
[0066]如图2中所示,广播发射器(BT)295将广播信号发送给在系统内操作的移动终端100。如图1中所示的广播接收模块111被设置在移动终端100处以接收由BT295发送的广播信号。在图2中,示出了几个全球定位系统(GPS)卫星300。卫星300帮助定位多个移动终端100中的至少一个。
[0067]在图2中,描绘了多个卫星300,但是理解的是,可以利用任何数目的卫星获得有用的定位信息。如图1中所示的GPS模块115通常被构造为与卫星300配合以获得想要的定位信息。替代GPS跟踪技术或者在GPS跟踪技术之外,可以使用可以跟踪移动终端的位置的其它技术。另外,至少一个GPS卫星300可以选择性地或者额外地处理卫星DMB传输。
[0068]作为无线通信系统的一个典型操作,BS270接收来自各种移动终端100的反向链路信号。移动终端100通常参与通话、消息收发和其它类型的通信。特定基站270接收的每个反向链路信号被在特定BS270内进行处理。获得的数据被转发给相关的BSC275 ASC提供通话资源分配和包括BS270之间的软切换过程的协调的移动管理功能。BSC275还将接收到的数据路由到MSC280,其提供用于与PSTN290形成接口的额外的路由服务。类似地,PSTN290与MSC280形成接口,MSC与BSC275形成接口,并且BSC275相应地控制BS270以将正向链路信号发送到移动终端100。
[0069]基于上述移动终端硬件结构以及通信系统,本发明实施例主要应用于带有可以产生预览数据的数据源的移动终端,该数据源可以是摄像头,该移动终端可以是智能手机、智能手表、手持机、平板电脑等,但并不以此为限。
[0070]本发明实施例涉及的装置和方法,旨在解决现有技术中随着拍摄时间的延长,所生成的视频文件也会变得越大,而导致的长时间拍摄的视频文件不可用,无法完整的存储整个视频文件,降低了用户的体验度的技术问题。
[0071]下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0072]图3为本发明提供的一种缓存视频帧的装置实施例一的结构示意图,如图3所示,包括:获取模块I O、压缩模块20和缓存模块30;
[0073]所述获取模块10,设置为获取数据源产生的预定时间间隔的视频帧数据。
[0074]具体的,所述获取模块10在数据源产生了可以进行预览的数据时,可以以固定的时间间隔获取数据源产生的视频帧数据,例如:手机进入相机的拍摄应用时,通过摄像头拍摄了一组风景视频文件,可以设定每隔I秒的时间去获取该视频文件的一帧数据,其中,该数据格式可以是yuv或者rgb格式,但并不限于此。
[0075]所述压缩模块20,设置为将所获取的视频帧数据压缩成关键帧数据;
[0076]具体的,该压缩模块20根据该获取模块10获取的视频帧数据进行压缩得到压缩数据,其中,编码成关键帧数据是一种压缩方式,可以通过h264、mpeg4等压缩算法,但并不限于此,下面举例说明:一般一帧就是一个视频文件中的一个画面,对视频帧数据进行编码,就是按“组”进行的,每一组也叫一个画面组(Group of Pictures,简称:GOP),该GOP与GOP之间是没有联系的,编码关系只在GOP中间产生,每一个GOP组都从一个关键帧开始,关键帧是一辐完整的画面,GOP中间的那些帧都是不完整的,需要由关键帧、前面的帧或者也包括后面的帧一起,对于普通视频文件,加大GOP长度有利于减小体积,从原理上可知,GOP长度也不能过大,太大则会导致GOP后部帧的画面失真,一般建议GOP长度在250帧以下为宜,但并不限于此。
[0077]所述缓存模块30,设置将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据。
[0078]具体的,该缓存模块30将压缩后得到的关键帧数据直接按照队列的方式存储在运存中,例如:一组队列是500个字节,一帧数据是10个字节,这样一个队列的长度就是50个,但具体根据实际情况来确定,关键帧数据是按顺序加入队列进行存储的,可以通过下标来访问每个关键帧数据,其中,队列达到预定的长度时,则每次将队列中的关键帧数据按照预定的相同时间间隔进行丢弃,并继续按照所述预定的相同时间间隔存储所述关键帧数据,例如:当压缩后的关键帧数据是按照I秒时间间隔获取的,一组队列占据500个字节,每I秒关键帧数据存储占据10个字节,则这组队列只能存储50个关键帧数据,当还有关键帧数据想继续加入队列的时候,则可以将队列中的关键帧数据按照相同的预定间隔进行丢弃,可以是按照关键帧数据的采样时间,比如每隔I秒就丢弃一帧关键帧数据,也可以是每隔3秒丢一帧关键帧数据,此时队列长度可以变成之前的二分之一或者三分之一等等,那队列中剩余的长度就按照每隔I秒或者每隔3秒继续以队列的形式存储关键帧数据,直至全部存储完压缩后的所有关键帧数据,但并不限于此。
[0079]本发明实施例提供了一种缓存视频帧的装置,包括:获取模块、压缩模块和缓存模块,通过所述获取模块设置为获取数据源产生的预定时间间隔的视频帧数据,所述压缩模块设置为将所获取的视频帧数据压缩成关键帧数据,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,通过自动控制关键帧数据以队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0080]进一步地,在上述实施例的基础上,所述缓存模块20设置为将所述关键帧数据以队列的方式进行存储,是指:
[0081]所述缓存模块30设置为将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问。
[0082]具体的,图4为本发明提供的一种缓存视频帧的装置实施例二关键帧数据存储示意图,如图4所示,所述缓存模块30将压缩后的关键帧数据以队列的方式存储在运存中,该运存是指移动终端系统运行时的内存,即在移动终端的摄像头进行拍摄的时候运存就对该视频文件进行压缩后存储,并以队列的方式存储在运存中,可以通过下标访问所述关键帧数据,但并不限于此。
[0083]通过将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问,可以快速地找到所要访问的关键帧数据,从而可以高效地控制队列的长度。
[0084]进一步地,在上述实施例的基础上,所述缓存模块30设置为将所述关键帧数据以队列的方式进行存储,是指:
[0085]所述缓存模块30设置为将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问。
[0086]具体的,图5为本发明提供的一种缓存视频帧的装置实施例三关键帧数据存储示意图,如图5所示,该缓存模块30设置为将压缩后的关键帧数据按照顺序存储在物理磁盘中,该物理磁盘可以是硬盘、存储卡、光盘等存储介质,具体可以根据实际情况来定,一般来说,物理磁盘的存储空间比较大,利于延长时间拍摄的视频文件的存储,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,一般索引号所占据的字节都很小,这样使得队列可以存储更多的索引号,可以通过索引号访问所述关键帧数据,但并不限于此。
[0087]通过将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问,通过队列可以存储更多的索引号,从而可以存储更多的关键帧数据,减少缓存次数,可以延长摄影拍摄的视频文件的时间,提高了用户的体验度。
[0088]进一步地,在上述实施例的基础上,所述缓存模块30设置为当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,是指:
[0089]所述缓存模块30设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据。
[0090]具体的,图6为本发明提供的一种缓存视频帧的装置实施例一关键帧数据缓存示意图,如图6所示,所述缓存模块30设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据,例如:原来是I秒取一视频帧数据,即对应第I秒取第一帧视频帧数据,第二秒取第二帧视频帧数据,以此类推,并对所获取的视频帧数据压缩后按照队列的形式存储在运存中,当队列达到预定的长度时,则可以按相同的取一视频帧数据的时间间隔的整数倍来作为相同的预定间隔,例如可以是按相同的I秒的I倍(每I秒)或者相同的I秒的3倍(每3秒)的间隔将队列中的关键数据帧进行丢弃,即将按照队列形式存储的第I秒、第3秒、第5秒等关键帧数据进行丢弃,或者将第3秒、第6秒、第9秒等关键帧数据进行丢弃,从而使得队列的长度可以变成之前的二分之一或者三分之一,然后继续按照相同的取一视频帧数据的时间间隔的整数倍来作为相同的预定间隔存储所述关键帧数据,继续上述举例,可以是按相同的I秒的I倍(每I秒)或者相同的I秒的3倍(每3秒)的间隔以队列的方式存储关键数据帧,按照第7秒、第9秒、第11秒等存储关键帧数据,或者继续按照第12秒、第15秒、第18秒等存储关键帧数据,其中,对于具体的相同的时间间隔可以根据实际情况来定,但并不限于此。
[0091]通过所述缓存模块30设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据,从而可以通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0092]进一步地,在上述实施例的基础上,所述缓存模块30设置为当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,是指:
[0093]所述缓存模块30设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据。
[0094]具体的,图7为本发明提供的一种缓存视频帧的装置实施例一关键帧数据缓存示意图,如图7所示,所述缓存模块30设置为当在所述队列达到预定的长度时,则将队列中索引号所对应的关键帧数据按照相同的预定索引号间隔进行丢弃,例如:原来第I秒取第一帧视频帧数据对应的索引号为I,第2秒取第二帧视频帧数据对应的索引号为2,以此类推,并对所获取的视频帧数据压缩后对应的索引号按照队列的形式存储在运存中,当队列达到预定的长度时,即索引号占据队列的存储空间时,可以按照相同的预定索引号间隔的整数倍丢弃队列中索引号对应的关键帧数据,例如:索引号是1,可以按照相同的索引号I的整数倍数3倍或者索引号I的整数倍数5倍的索引号间隔对应的关键帧数据进行丢弃,如队列中索引号为1、3、6、9等索引号对应的关键帧数据进行丢弃,或者将队列中索引号为1、5、10、15等索引号对应的关键帧数据进行丢弃,从而使得队列的长度可以变成之前的三分之一或者五分之一,然后继续按照索引号的整数倍的相同时间隔存储所述关键帧数据,继续上述举例,可以按照相同的索引号I的整数倍数3倍或者索引号I的整数倍数5倍的索引号间隔以队列的方式存储索引号对应的关键数据帧,即继续按照12、15、18等索引号对应的关键帧数据以队列的形式进行存储,或者继续按照20、25、30等索引号对应的关键帧数据以队列的形式进行存储,其中,对于具体的相同的索引号间隔可以根据实际情况来定,但并不限于此。
[0095]通过所述缓存模块30设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据,从而可以通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0096]需要说明的是,本发明提供的装置中获取模块10可以设置在输入单元140中,压缩模块20可以设置在图1中的控制器180中,缓存模块30可以设置在图1中的存储器160中。
[0097]图8为本发明提供的一种缓存视频帧的方法实施例一的流程示意图,如图8所示,该方法包括:
[0098]S101、获取数据源产生的预定时间间隔的视频帧数据。
[0099]具体的,在数据源产生了可以进行预览的数据时,可以以固定的时间间隔获取数据源产生的视频帧数据,例如:手机进入相机的拍摄应用时,通过摄像头拍摄了一组风景视频文件,可以设定每隔I秒的时间去获取该视频文件的一帧数据,其中,该数据格式可以是yuv或者rgb格式,但并不限于此。
[0100]S102、将所获取的视频帧数据压缩成关键帧数据。
[0101]具体的,将获取的视频帧数据压缩成关键帧数据,可以通过h264、mpeg4等压缩算法,但并不限于此,下面举例说明:一般一帧就是一个视频文件中的一个画面,对视频帧数据进行压缩,就是按“组”进行的,每一组也叫一个画面组(Group of Pictures,简称:GOP),该GOP与GOP之间是没有联系的,压缩关系只在GOP中间产生,每一个GOP组都从一个关键帧开始,关键帧是一辐完整的画面,GOP中间的那些帧都是不完整的,需要由关键帧、前面的帧或者也包括后面的帧一起,对于普通视频文件,加大GOP长度有利于减小体积,从原理上可知,GOP长度也不能过大,太大则会导致GOP后部帧的画面失真,一般建议GOP长度在250帧以下为宜,但并不限于此。
[0102]S103、将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据。
[0103]具体的,该缓存模块30将压缩后得到的关键帧数据直接按照队列的方式存储在运存中,例如:一组队列是500个字节,一帧数据是10个字节,这样一个队列的长度就是50个,但具体根据实际情况来确定,关键帧数据是按顺序加入队列进行存储的,可以通过下标来访问每个关键帧数据,其中,队列达到预定的长度时,则每次将队列中的关键帧数据按照预定的相同时间间隔进行丢弃,并继续按照所述预定的相同时间间隔存储所述关键帧数据,例如:当压缩后的关键帧数据是按照I秒时间间隔获取的,一组队列占据500个字节,每I秒关键帧数据存储占据10个字节,则这组队列只能存储50个关键帧数据,当还有关键帧数据想继续加入队列的时候,则可以将队列中的关键帧数据按照相同的预定间隔进行丢弃,可以是按照关键帧数据的采样时间,比如每隔I秒就丢弃一帧关键帧数据,也可以是每隔3秒丢一帧关键帧数据,此时队列长度可以变成之前的二分之一或者三分之一等等,那队列中剩余的长度就按照每隔I秒或者每隔3秒继续以队列的形式存储关键帧数据,直至全部存储完压缩后的所有关键帧数据,但并不限于此。
[0104]本发明实施例提供了一种缓存视频帧的方法,包括:通过获取数据源产生的预定时间间隔的视频帧数据,获取数据源产生的预定时间间隔的视频帧数据,将所获取的视频帧数据压缩成关键帧数据,将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0105]进一步地,在上述实施例的基础上,将所述关键帧数据以队列的方式进行存储,包括:
[0106]将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问。
[0107]具体的,如图4所示,将压缩后的关键帧数据以队列的方式存储在运存中,该运存是指移动终端系统运行时的内存,即在移动终端的摄像头进行拍摄的时候运存就对该视频文件进行压缩后存储,并以队列的方式存储在运存中,可以通过下标访问所述关键帧数据,但并不限于此。
[0108]通过将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问,可以快速地找到所要访问的关键帧数据,从而可以高效地控制队列的长度。
[0109]进一步地,在上述实施例的基础上,将所述关键帧数据以队列的方式进行存储,包括:
[0110]将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问。
[0111]具体的,如图5所示,将压缩后的关键帧数据按照顺序存储在物理磁盘中,该物理磁盘可以是硬盘、存储卡、光盘等存储介质,具体可以根据实际情况来定,一般来说,物理磁盘的存储空间比较大,利于延长时间拍摄的视频文件的存储,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,一般索引号所占据的字节都很小,这样使得队列可以存储更多的索引号,可以通过索引号访问所述关键帧数据,但并不限于此。
[0112]通过将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问,通过队列可以存储更多的索引号,从而可以存储更多的关键帧数据,减少缓存次数,可以延长摄影拍摄的视频文件的时间,提高了用户的体验度。
[0113]进一步地,在上述实施例的基础上,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,包括:
[0114]当在所述队列达到预定的长度时,为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据。
[0115]具体的,如图6所示,当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据,例如:原来是I秒取一视频帧数据,即对应第I秒取第一帧视频帧数据,第二秒取第二帧视频帧数据,以此类推,并对所获取的视频帧数据压缩后按照队列的形式存储在运存中,当队列达到预定的长度时,则可以按相同的取一视频帧数据的时间间隔的整数倍来作为相同的预定间隔,例如可以是按相同的I秒的I倍(每I秒)或者相同的I秒的3倍(每3秒)的间隔将队列中的关键数据帧进行丢弃,即将按照队列形式存储的第I秒、第3秒、第5秒等关键帧数据进行丢弃,或者将第3秒、第6秒、第9秒等关键帧数据进行丢弃,从而使得队列的长度可以变成之前的二分之一或者三分之一,然后继续按照相同的取一视频帧数据的时间间隔的整数倍来作为相同的预定间隔存储所述关键帧数据,继续上述举例,可以是按相同的I秒的I倍(每I秒)或者相同的I秒的3倍(每3秒)的间隔以队列的方式存储关键数据帧,按照第7秒、第9秒、第11秒等存储关键帧数据,或者继续按照第12秒、第15秒、第18秒等存储关键帧数据,其中,对于具体的相同的时间间隔可以根据实际情况来定,但并不限于此。
[0116]当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据,从而可以通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0117]进一步地,在上述实施例的基础上,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,包括:
[0118]当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据。
[0119]具体的,如图7所示,当在所述队列达到预定的长度时,则将队列中索引号所对应的关键帧数据按照索引号的整数倍的相同时间间隔进行丢弃,例如:原来是I秒取一帧数据,即对应第I秒取第一帧视频帧数据,第二秒取第二帧视频帧数据,以此类推,并对所获取的视频帧数据压缩后对应的索引号按照队列的形式存储在运存中,当队列达到预定的长度时,即索引号占据队列的存储空间时,可以按照相同的预定索引号间隔的整数倍丢弃队列中索引号对应的关键帧数据,例如:索引号是I,可以按照相同的索引号I的整数倍数3倍或者索引号I的整数倍数5倍的索引号间隔对应的关键帧数据进行丢弃,如队列中索引号为1、
3、6、9等索引号对应的关键帧数据进行丢弃,或者将队列中索引号为1、5、10、15等索引号对应的关键帧数据进行丢弃,从而使得队列的长度可以变成之前的三分之一或者五分之一,然后继续按照索引号的整数倍的相同时间隔存储所述关键帧数据,继续上述举例,可以按照相同的索引号I的整数倍数3倍或者索引号I的整数倍数5倍的索引号间隔以队列的方式存储索引号对应的关键数据帧,即继续按照12、15、18等索引号对应的关键帧数据以队列的形式进行存储,或者继续按照20、25、30等索引号对应的关键帧数据以队列的形式进行存储,其中,对于具体的相同的索引号间隔可以根据实际情况来定,但并不限于此。
[0120]通过当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据,从而可以通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据,从而可以通过自动控制关键帧数据按队列存储的长度,可以不断地存储获取的视频帧数据,使得能够不管延时摄影拍摄多长时间,都可以完整的存储所生成的视频文件,提高了用户的体验度。
[0121]需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0122]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0123]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如R0M/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,月艮务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0124]以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
【主权项】
1.一种缓存视频帧的装置,其特征在于,包括:获取模块、压缩模块和缓存模块; 所述获取模块,设置为获取数据源产生的预定时间间隔的视频帧数据; 所述压缩模块,设置为将所获取的视频帧数据压缩成关键帧数据; 所述缓存模块,设置为将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据。2.根据权利要求1所述的装置,其特征在于,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,是指: 所述缓存模块设置为将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问。3.根据权利要求1所述的装置,其特征在于,所述缓存模块设置为将所述关键帧数据以队列的方式进行存储,是指: 所述缓存模块设置为将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问。4.根据权利要求2所述的装置,其特征在于,所述缓存模块设置为当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,是指: 所述缓存模块设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据。5.根据权利要求3所述的装置,其特征在于,所述缓存模块设置为当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,是指: 所述缓存模块设置为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据。6.一种缓存视频帧的方法,其特征在于,包括: 获取数据源产生的预定时间间隔的视频帧数据; 将所获取的视频帧数据压缩成关键帧数据; 将所述关键帧数据以队列的方式进行存储,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据。7.根据权利要求6所述的方法,其特征在于,将所述关键帧数据以队列的方式进行存储,包括: 将所述关键帧数据以队列的方式存储在运存中,其中,所述关键帧数据可以通过下标进行访问。8.根据权利要求6所述的方法,其特征在于,将所述关键帧数据以队列的方式进行存储,包括: 将所述关键帧数据存储在物理磁盘中,并将所述数据帧数据对应的索引号以队列的方式存储在运存中,其中,所述关键帧数据可以通过索引号进行访问。9.根据权利要求7所述的方法,其特征在于,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,包括: 为当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述预定时间间隔的整数倍的间隔进行丢弃,并按照相同的所述预定时间间隔的整数倍的间隔继续以队列的方式存储所述关键帧数据。10.根据权利要求8所述的方法,其特征在于,当所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的预定间隔进行丢弃,并按照所述相同的预定间隔继续以队列的方式存储所述关键帧数据,包括: 当在所述队列达到预定的长度时,则每次将队列中的关键帧数据按照相同的所述索引号的整数倍的间隔进行丢弃,并按照相同的所述索引号的整倍数的间隔继续以队列的方式存储所述关键帧数据。
【文档编号】H04N21/433GK105828180SQ201610199847
【公开日】2016年8月3日
【申请日】2016年3月31日
【发明人】王海滨
【申请人】努比亚技术有限公司