一种视频录制方法及装置的制造方法

文档序号:9891844阅读:381来源:国知局
一种视频录制方法及装置的制造方法
【技术领域】
[0001]本发明涉及本发明涉及视频处理领域,尤其涉及一种视频录制方法及装置。
【背景技术】
[0002]视频录制是指录制来自于计算机硬件终端、计算机视窗环境的视频,常见的录制模式包括捕捉摄像头、摄像机、数码相机、电视卡、DVR等硬件视频,录制计算机视窗的游戏视频、QQ视频、录制电影等。随着时代进步,科技发展,人民追求精神享受的愿望的提高,对视频录制的清晰度,可靠性也随之增加,通常视频录制的帧数越高,视频越清晰,但是视频录制帧数越高,越容易出现漏帧,漏秒的情况。通常是通过提升硬件配置,加强视频处理芯片和存储介质的处理速度来解决漏帧,漏秒的情况。没有一种在当前有限的硬件资源下,解决视频录制不理想,漏帧,漏秒的情况。

【发明内容】

[0003]为了解决上述技术问题,本发明的目的是提供一种在有限的硬件资源下,解决视频录制不理想,漏帧,漏秒的情况的视频录制方法及装置。
[0004]本发明所采用的技术方案是:一种视频录制方法,其包括如下步骤:
一种视频录制方法,其特征在于,其包括如下步骤:
步骤11、视频数据采集;
步骤12、建立视频帧缓存;
步骤13、建立循环队列;
步骤14、建立写卡缓存a;
步骤15、将采集的视频数据写入循环队列,标示w;
步骤16、读循环队列,标示r,并写入卡缓存a;
步骤17、动态增减循环队列节点。
[0005]进一步,所述视频数据包括H264或MPEG1-4视频编码方式的数据。
[0006]进一步,所述的步骤12、建立视频帧缓存,具体分为2种:第一种为bigBuf,主要为存储关键帧I帧,缓存大小为(480*1024)Byte;第二种为smallBuf,主要为存储预测帧P帧,缓存大小为(120*1024)Byte。
[0007]进一步,步骤13建立循环队列,所述循环队列节点包括写入的视频数据的数据包长度D1。
[0008]进一步,所述的循环节点数为300。
[0009]进一步,步骤14、建立写卡缓存a,为3M连续内存,所述写卡缓存a包括写入的视频的数据长度D2。
[0010]进一步,步骤17、动态增减循环队列节点,具体为当写入循环队列结点中的成员“数据包长度D1”不为O时,读取循环队列的内容,同时标示r,开始解析。当写卡缓存a中“数据长度D2”加上“数据包长度D1”〈3M,将解析后的数据写入卡缓存a,否则开始写卡,写卡完后将循环队列节点中的“数据长度”清O,同时将该次解析数据写入卡缓存a。
[0011]进一步,所述步骤17包括:当循环队列剩余可用节点小于循环队列节点数的六分之一大小时,则增加循环队列节点数的1/6个节点;当循环队列剩余可用节点不少于循环队列总节点数1/2时,则一次释放;当循环队列剩余可用节点大于循环队列总节点数1/3,小于循环队列总节点数1/2时,则逐渐释放。
[0012]此外,本发明的另一方面,提供了一种视频录制装置,其包括:
视频采集单元:用于视频数据采集,所提供数据可以是来自任何视频源设备;
视频帧缓存创建单元:用于建立视频帧缓存;
循环队列创建单元:用于建立循环队列;
写卡缓存创建单元:用于建立写卡缓存a;
数据写入单元:用于将采集的视频数据写入循环队列,标示w;
数据读取单元:用于将视频数据读循环队列,标示r,并写入卡缓存a;
控制单元:用于动态增减循环队列节点。
[0013]本发明的有益效果是:本发明通过建立循环队列,实现动态缓冲机制,动态分配资源,在有限的硬件资源下,解决视频录制不理想,漏帧,漏秒的情况。
【附图说明】
[0014]下面结合附图对本发明的【具体实施方式】作进一步说明:
图1是本发明的一具体实施例的流程图;
图2是本发明的一具体实施例的功能模块图。
【具体实施方式】
[0015]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0016]如图1所示,一种视频录制方法,其包括如下步骤:
本发明所采用的技术方案是:一种视频录制方法,其包括如下步骤:
步骤11、视频数据采集;
步骤12、建立视频帧缓存;
步骤13、建立循环队列;
步骤14、建立写卡缓存a;
步骤15、将采集的视频数据写入循环队列,标示w;
步骤16、读循环队列,标示r,并写入卡缓存a;
步骤17、动态增减循环队列节点。
[0017]进一步作为优选的实施方式,所述视频数据包括H264或MPEG1-4视频编码方式的数据。
[0018]进一步作为优选的实施方式,所述的步骤12、建立视频帧缓存,具体分为2种:第一种为bigBuf,主要为存储关键帧I帧,缓存大小为(480*1024)Byte;第二种为smallBuf,主要为存储预测帧P帧,缓存大小为(120*1024)Byte,目的在于减少无效内存的分配。
[0019]进一步作为优选的实施方式,步骤13建立循环队列,所述循环队列节点包括写入的视频数据的数据包长度D1。循环队列及每个节点中成员如下: struct bufQue{
队列头;
头索引w;
尾索引r;
}
struct bufNode
{
视频帧缓存指针;
数据包长度;
时间戳;
关键帧标示;
下一个节点指针;
};
此循环队列判别队列是〃空〃还是〃满〃另设一 char变量(以下简称F)标示。此循环的队列节点个数为300。
[0020]进一步作为优选的实施方式,步骤14、建立写卡缓存a,为3M连续内存,所述写卡缓存a包括写入的视频的数据长度D2。以3M左右大小写卡时,速度最快,具体大小视系统而
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1