发明内容
本发明提出一种调整视频录像播放速度的方法,用于根据图像的运动速度动态调整视频录像的播放速度。
本发明还提出调整视频录像播放速度的系统及相关装置,用于根据图像的运动速度动态调整视频录像的播放速度。
本发明的技术方案是这样实现的:
一种调整视频录像播放速度的方法,包括:
A、对视频图像的帧进行运动检测,获取所述帧的运动速度;根据所述帧的运动速度查找预先设置的运动速度与运动等级值的第一对应关系,获取所述帧的运动等级值;
B、根据所述帧的运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取所述帧的播放速度;
C、按照所述帧的播放速度对所述帧进行播放。
一种调整视频录像播放速度的系统,包括:视频编码器、存储装置、视频解码器和媒体服务器;其中,
视频编码器,用于对视频图像的每一帧进行运动检测,获取所述每一帧的运动速度;根据每一帧的运动速度查找运动速度与运动等级值的第一对应关系,获取所述每一帧的运动等级值;将所述每一帧的运动等级值和对该帧进行编码后得到的视频数据一起发送至存储装置;
存储装置,用于存储所述视频图像的每一帧的视频数据及运动等级值;
视频解码器,用于接收视频图像帧的视频数据及运动等级值;按照所述运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取该帧的播放速度;按照该帧的播放速度对该帧进行播放;还用于向所述媒体服务器发送包含该帧的播放速度的实时流协议RTSP报文;
媒体服务器,用于判断所述RTSP报文包含的该帧的播放速度是否大于预先设定的阈值,如果大于,则从所述存储装置读取所述帧的下一个I帧的视频数据及运动等级值并发送至视频解码器;如果不大于,则从所述存储装置读取所述帧的下一帧的视频数据及运动等级值并发送至视频解码器。
一种视频编码器,用于对视频图像的每一帧进行运动检测,获取所述每一帧的运动速度;根据每一帧的运动速度查找运动速度与运动等级值的第一对应关系,获取所述每一帧的运动等级值;将所述每一帧的运动等级值和对该帧进行编码后得到的视频数据一起发送至存储装置。
一种视频解码器,包括:接收模块、查找模块、播放模块和报文发送模块;其中,
接收模块,用于接收视频图像帧的视频数据和运动等级值;
查找模块,用于根据所述运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取该帧的播放速度;
播放模块,用于按照所述帧的播放速度对该帧进行播放;
报文发送模块,用于向媒体服务器发送包含所述帧的播放速度的RTSP报文。
一种媒体服务器,包括报文接收模块和读取模块;其中,
报文接收模块,用于接收来自视频解码器的RTSP报文;
读取模块,用于判断所述RTSP报文包含的帧的播放速度是否大于预先设定的阈值,如果大于,则从存储装置读取所述帧的下一个I帧的视频数据及运动等级值并发送至视频解码器;如果不大于,则将从存储装置读取所述帧的下一帧的视频数据及运动等级值并发送至视频解码器。
一种调整视频录像播放速度的系统包括:视频解码器和媒体服务器;其中,
视频解码器,用于接收视频图像帧的视频数据,对接收的帧进行运动检测,获取所述帧的运动速度;根据所述运动速度查找预先设置的运动速度与运动等级值的第一对应关系,获取所述帧的运动等级值;根据所述帧的运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取所述帧的播放速度;按照所述帧的播放速度对所述帧进行播放;还用于向媒体服务器发送包含所述帧的播放速度的RTSP报文;
媒体服务器,用于判断所述RTSP报文包含的帧的播放速度是否大于预先设定的阈值,如果大于,则读取所述帧的下一个I帧的视频数据并发送至视频解码器;如果不大于,则读取所述帧的下一帧的视频数据并发送至视频解码器。
一种视频解码器,包括:接收模块、查找模块、播放模块和报文发送模块;其中,
接收模块,用于接收视频图像的帧的视频数据;
查找模块,用于对所述帧进行运动检测,获取所述帧的运动速度;根据所述运动速度查找预先设置的运动速度与运动等级值的第一对应关系,获取所述帧的运动等级值;根据所述帧的运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取所述帧的播放速度;
播放模块,用于按照所述帧的播放速度对所述帧进行播放;
报文发送模块,用于向媒体服务器发送包含所述帧的播放速度的RTSP报文。
一种媒体服务器,包括:报文接收模块和读取模块;其中,
报文接收模块,用于接收来自视频解码器的RTSP报文;
读取模决,用于判断所述RTSP报文包含的帧的播放速度是否大于预先设定的阈值,如果大于,则读取所述帧的下一个I帧的视频数据并发送至视频解码器;如果不大于,则读取所述帧的下一帧的视频数据并发送至视频解码器。
综上可见,本发明提出的调整视频录像播放速度的方法、系统及相关装置,在运动检测过程中获取每一帧的运动速度,根据预先设置的运动速度与运动等级值的第一对应关系、以及运动等级值与播放速度的第二对应关系,得到该帧的播放速度;按照该帧的播放速度对该帧进行播放;运动速度越快时播放速度越慢,从而快速跳过信息变化不大的画面、并以较慢的速度播放信息变化较大(也就是运动速度较快)的画面,实现了根据图像的运动速度动态调整视频录像播放速度的目的。
具体实施方式
本发明提出一种调整视频录像播放速度的方法,该方法在视频编码器或视频解码端采用运动检测技术获取每帧图像画面相对于前一帧的运动速度,利用该帧的运动速度查找预先设置的运动速度和运动等级值的对应关系,获取该帧的运动等级值;在视频解码器端利用该帧的运动等级值查找预先设置的运动等级值和播放速度的对应关系,获取该帧的播放速度,按照该播放速度对所述帧进行播放。通过上述方式,实现了基于运动检测动态调整视频录像的播放速度。以下举具体的实施例详细说明。
实施例一:
参见图2,图2为本发明调整视频录像播放速度的方法实施例一流程图。该实施例包括:
步骤201:摄像机采集数据,将采集到的数据发送至视频编码器。
步骤202:视频编码器中的A/D模块对数据进行模数变换,将变换后的数据发送至FPGA芯片。
步骤203:FPGA芯片对每帧进行运动检测,获取每帧相对于前一帧的运动速度。具体地,当检测第2帧相对于第1帧的运动速度时,FPGA芯片可以对第2帧和第1帧相同位置的各个宏块(16×16个像素)分别进行比较,记录各位置的宏块中的亮度分量(即Y分量)是否有变化,依次比较后,得到第2帧中发生变化的宏块数目;该数目就体现出第2帧相对于第1帧的运动速度,数目越大表明运动速度越大。
步骤204:FPGA芯片根据各帧的运动速度,查找预先设置的运动速度与运动等级值的对应关系,获取各帧的运动等级值。由于一个帧的运动速度可以由该帧中发生变化的宏块数目来体现,该对应关系也可以具体为发生变化的宏块数目与运动等级值的对应关系。
FPGA芯片将每帧的数据、连同该帧的运动等级值一起发送给DSP模块。
步骤205:DSP模块对数据进行编码;将编码后的每帧的视频数据和该帧的运动等级值发送至视频编码器自身的缓存装置进行缓存;等待一个I帧组(即一个I帧和其后的P帧和B帧)全部编码完成之后,缓存装置将该I帧组中每个帧的视频数据及运动等级值一起发送到存储装置进行存储。
为了具体说明本步骤中缓存装置向存储设备发送运动等级值的方式,以下首先介绍现有技术中缓存装置向存储设备发送视频数据的方式:
在现有技术中,缓存装置向存储设备发送视频数据是以I帧组为单位的,如图3所示,图3为现有技术中发送视频数据时的I帧组结构示意图。每个I帧组包括多个视频数据包,每一帧对应一个或多个视频数据包;每个视频数据包包括:包起始标志、时间戳、包头、视频数据和包结束标志。
其中,包头的长度为12字节,图4为现有技术中包头的结构示意图。包头主要包括以下字段:
种类(TYPE)字段,位于第一个字节的第0位;TYPE字段取值为0时,表示其所在视频数据包中所包含的数据为视频数据;
起始标识(V_FIRST)字段,位于第一个字节的第1位;V_FIRST字段取值为1时,表示其所在视频数据包为某一帧的第一个视频数据包,取值为0时表示为除第一个以外的其它视频数据包;
帧种类(FTYPE)字段,位于第一个字节的第2、3位;FTYPE字段取值为“00”时,表示其所在视频数据包包含I帧的视频数据,取值为“01”或“10”时表示包含P帧或B帧的视频数据;
保留字段,位于包头的第5个字节;该字段暂时保留,不携带任何数据。
根据上述结构,本步骤中可以将每一帧的运动等级值携带在该帧对应的第一个视频数据包包头的保留字段中,例如,当有8个运动等级值时,可以用保留字段中的3个比特表示。参见图5,图5为本发明实施例携带运动等级值的包头的结构示意图,其中,TYPE字段取值为0,V_FIRST字段取值为1,这两个字段表示该视频数据包是某个帧的第1个视频数据包;第5个字节的第0、1和2位表示该帧的运动等级值。
步骤206:最初播放视频录像时,媒体服务器按照正常速度从存储装置中读取视频录像第1个帧的视频数据并发送至视频解码器。(由于第1个帧是初始帧,不存在相对于前一帧的运动速度,也就不存在运动等级值。)
步骤207:视频解码器对第1个帧解码后,按照正常播放速度对第1个帧进行播放。
步骤208:媒体服务器按照正常读取速度从存储装置中读取视频录像第2个帧的视频数据及运动等级值,并发送至视频解码器。
步骤209:视频解码器根据第2个帧的运动等级值查找预先设置的运动等级值与播放速度的对应关系,获取第2个帧的播放速度;对第2个帧解码后,按照该播放速度对第2个帧进行播放;将第2个帧的播放速度携带于RTSP报文中发送至媒体服务器。
其中,运动等级值与播放速度的对应关系可以为:运动等级值越大,对应的播放速度越小;例如:
运动等级值为0或1时,对应播放速度为4倍正常速度;
运动等级值为2或3时,对应播放速度为2倍正常速度;
运动等级值为4或5时,对应播放速度为正常速度;
运动等级值为6或7时,对应播放速度为1/2倍正常速度。
当然,上述对应关系仅是一种实现方式,本发明可以采用其他的对应关系,也可以设置更多的运动等级值及播放速度。
步骤210:媒体服务器按照RTSP报文中的第2个帧播放速度,从存储装置中读取视频录像第3个帧的视频数据及运动等级值,并发送至视频解码器。
此后对每个帧按照与步骤209~步骤210相同的过程进行处理,直至播放完毕。可见,本实施例利用每一帧的运动等级值控制该帧的播放速度,从而实现了自动调整视频录像的播放速度;此外,还利用前一帧的运动等级值控制媒体服务器从存储装置中提取后一帧的速度。
本实施例中调整视频录像播放速度的方法应用于包含视频编码器、存储装置、媒体服务器和视频解码器的系统中,本发明也可以应用于不包含媒体服务器的系统;当系统中不包含媒体服务器时,视频解码器将视频图像所有帧的视频数据进行解码后存放于图片缓冲区,按照每一帧的播放速度对该帧进行播放。
在上述实施例一中,运动等级值由视频编码器生成、并连同视频数据一起保存在存储装置中;除此之外,运动等级值也可以由视频解码器生成,具体到视频解码器内部,运动等级值可以由视频解码器的DSP模块或FPGA芯片生成,以下介绍实施例二,在实施例二中,运动等级值由视频解码器的DSP模块生成。
实施例二:
参见图6,图6为本发明调整视频录像播放速度的方法实施例二流程图。该实施例包括:
步骤601:视频编码器生成视频录像,将视频录像保存在存储装置中。
步骤602:最初播放视频录像时,媒体服务器按照正常读取速度从存储装置中读取视频录像第1个帧的视频数据并发送至视频解码器。
步骤603:视频解码器将第1个帧解码后,按照正常播放速度对第1个帧的进行播放。
步骤604:媒体服务器按照正常速度从存储装置中读取视频录像第2个帧的视频数据并发送至视频解码器。
步骤605:视频解码器中的DSP模块对第2个帧解码后,对第2个帧进行运动检测,根据第2个帧的运动速度查找预先设置的运动速度和运动等级值的对应关系,获取第2个帧的运动等级值;再根据预先设置的运动等级值与播放速度的对应关系,查找第2个帧的播放速度;具体实现方式与实施例一中的方式相同,在此不赘。之后,视频解码器按照第2个帧的播放速度对第2个帧进行播放。
步骤606:视频解码器将第2个帧的播放速度携带于RTSP报文中发送至媒体服务器。
步骤607:媒体服务器按照RTSP报文中的第2个帧的播放速度,从存储装置中读取视频录像第3个帧的视频数据,并发送至视频解码器。
此后对每个帧都按照与步骤605~步骤607相同的过程处理,直至播放完毕。
实施例三:
本实施例与实施例二相似,不同点仅在于,进行运动检测、查找运动速度对应的运动等级值、以及查找运动等级值对应的播放速度的工作具体由视频解码器的FPGA芯片完成。
实施例四:
由前述三个实施例可见,视频录像中各个帧的运动等级值越小则视频录像的播放速度越快,而运动等级值小说明了每帧相对于前一帧的变化小,也就是该帧本身所携带的信息相对于前一帧的变化小;显然的,媒体服务器将信息变化很小的每个帧的视频数据都发送给视频解码器进行解码播放,不仅浪费传输带宽、也浪费了视频解码器的资源。本实施例正是为克服这一缺陷而提出的,在本实施例中,可以由媒体服务器根据接收的RTSP报文中的播放速度,选择是否将所有帧的视频数据均发送给视频解码器进行解码,具体方式为:
当媒体服务器接收到包含播放速度的RTSP报文后,判断该播放速度是否大于预先设定的阈值,如果大于,则读取存储装置中下一个I帧的视频数据(或者视频数据和运动等级值),并将该I帧的视频数据(或者视频数据和运动等级值)发送至视频解码器进行播放,对于存储装置中的P帧和B帧,媒体服务器则不读取;如果不大于,则读取存储装置中下一个帧的视频数据(或者视频数据和运动等级值)并发送至视频解码器进行播放。
上述阈值可以根据实际情况具体设定。例如,将阈值设置为4倍正常速度,当媒体服务器接收到RTSP报文中的播放速度大于4倍正常速度时,媒体服务器仅读取存储装置中的下一个I帧的视频数据(或者视频数据和运动等级值)并发送至视频解码器,视频解码器按照相应的速度进行播放。
本发明还提出一种调整视频录像播放速度的系统,包括:视频编码器、存储装置、视频解码器和媒体服务器;其中,
视频编码器,用于对视频图像的每一帧进行运动检测,获取所述每一帧的运动速度;根据每一帧的运动速度查找运动速度与运动等级值的第一对应关系,获取所述每一帧的运动等级值;将所述每一帧的运动等级值和对该帧进行编码后得到的视频数据一起发送至存储装置;
存储装置,用于存储所述视频图像的每一帧的视频数据及运动等级值;
视频解码器,用于接收视频图像帧的视频数据及运动等级值;按照所述运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取该帧的播放速度;按照该帧的播放速度对该帧进行播放;还用于向所述媒体服务器发送包含帧的播放速度的实时流协议RTSP报文;
媒体服务器,用于判断所述RTSP报文包含的该帧的播放速度是否大于预先设定的阈值,如果大于,则从所述存储装置读取所述帧的下一个I帧的视频数据及运动等级值并发送至视频解码器;如果不大于,则从所述存储装置读取所述帧的下一帧的视频数据及运动等级值并发送至视频解码器。
本发明还提出一种视频编码器,用于对视频图像的每一帧进行运动检测,获取所述每一帧的运动速度;根据每一帧的运动速度查找运动速度与运动等级值的第一对应关系,获取所述每一帧的运动等级值;将所述每一帧的运动等级值和对该帧进行编码后得到的视频数据一起发送至存储装置。
本发明还提出一种视频解码器,包括:接收模块、查找模块、播放模块和报文发送模块;其中,
接收模块,用于接收视频图像帧的视频数据和运动等级值;
查找模块,用于根据所述运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取该帧的播放速度;
播放模块,用于按照所述帧的播放速度对该帧进行播放;
报文发送模块,用于向媒体服务器发送包含所述帧的播放速度的RTSP报文。
本发明还提出一种媒体服务器,包括报文接收模块和读取模块;其中,
报文接收模块,用于接收来自视频解码器的RTSP报文;
读取模块,用于判断所述RTSP报文包含的帧的播放速度是否大于预先设定的阈值,如果大于,则从存储装置读取所述帧的下一个I帧的视频数据及运动等级值并发送至视频解码器;如果不大于,则将从存储装置读取所述帧的下一帧的视频数据及运动等级值并发送至视频解码器。
本发明还提出另一种调整视频录像播放速度的系统,包括:视频解码器和媒体服务器;其中,
视频解码器,用于接收视频图像帧的视频数据,对接收的帧进行运动检测,获取所述帧的运动速度;根据所述运动速度查找预先设置的运动速度与运动等级值的第一对应关系,获取所述帧的运动等级值;根据所述帧的运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取所述帧的播放速度;按照所述帧的播放速度对所述帧进行播放;还用于向媒体服务器发送包含所述帧的播放速度的RTSP报文;
媒体服务器,用于判断所述RTSP报文包含的帧的播放速度是否大于预先设定的阈值,如果大于,则读取所述帧的下一个I帧的视频数据并发送至视频解码器;如果不大于,则读取所述帧的下一帧的视频数据并发送至视频解码器。
本发明还提出另一种视频解码器,包括:接收模块、查找模块、播放模块和报文发送模块;其中,
接收模块,用于接收视频图像的帧的视频数据;
查找模块,用于对所述帧进行运动检测,获取所述帧的运动速度;根据所述运动速度查找预先设置的运动速度与运动等级值的第一对应关系,获取所述帧的运动等级值;根据所述帧的运动等级值查找预先设置的运动等级值与播放速度的第二对应关系,获取所述帧的播放速度;
播放模块,用于按照所述帧的播放速度对所述帧进行播放;
报文发送模块,用于向媒体服务器发送包含所述帧的播放速度的RTSP报文。
本发明还提出另一种媒体服务器,包括:报文接收模块和读取模块;其中,
报文接收模块,用于接收来自视频解码器的RTSP报文;
读取模块,用于判断所述RTSP报文包含的帧的播放速度是否大于预先设定的阈值,如果大于,则读取所述帧的下一个I帧的视频数据并发送至视频解码器;如果不大于,则读取所述帧的下一帧的视频数据并发送至视频解码器。
综上可见,本发明实施例提出的调整视频录像播放速度的方法、系统及相关装置,在运动检测过程中获取每一帧的运动速度,根据预先设置对应关系,得到该帧的播放速度;按照该帧的播放速度对该帧进行播放;运动速度越快时播放速度越慢,从而快速跳过信息变化不大的画面、并以较慢的速度播放信息变化较大的画面,实现了根据运动速度动态调整视频录像的播放速度。具体地,可以利用视频编码器的FPGA芯片、或视频解码器的FPGA芯片或DSP模块进行运动检测。另外,当播放速度超过预先设置的阈值时,媒体服务器可以进行抽帧处理,即只读取每个I帧组中的I帧数据发送至视频解码器进行播放,这样既能够节约传输带宽和视频解码器的资源,也不会对播放效果产生不良影响。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。