一种优化提取视频帧读取速度的方法与流程

文档序号:17898429发布日期:2019-06-13 16:09阅读:1530来源:国知局
一种优化提取视频帧读取速度的方法与流程

本发明涉及一种读取速度的方法,更具体一点说,涉及一种优化提取视频帧读取速度的方法,属于嵌入式视频播放领域。



背景技术:

在嵌入式系统中播放存放在fat32文件系统中的视频文件时读取视频文件会有以下几个步骤:

1)、分析视频文件的格式,根据特定格式确定视频帧位于视频文件的具体位置和长度;

2)、根据前一步获取到的位置和长度向fat32文件系统请求读取视频帧;

3)、fat32文件系统依据本身的fat表格式,获取上一步请求的位置对应的簇号,并将簇号转换为最终的硬件地址;

4)、根据上一步获取的硬件地址,向硬件发起多次读请求;

5)、硬件返回视频帧数据给程序使用;

在播放视频时为了达到一定的帧率,在播放完上一帧之前,下一帧的数据一定要准备好,于是读取视频帧的速度尤为关键,但由于fat32文件系统自身存储特点,以下几点严重限制视频帧的读取速度,即存在的问题:

1)、如图1所示,为了确定每个视频帧的位置必须需要多次读取fat表,将文件偏移转换为簇号;

2)、如图1所示,fat32文件系统以簇为存储单位,一个视频帧的数据长度有大有小,如果一个帧跨越几个簇,有可能需要多次读取fat表的才能确定所有视频帧对应的簇的位置;

3)、向硬件多次请求读取操作速度会大大增加协议开销,进而影响速度。

由于以上几个问题的存在,很可能会严重影响视频数据读取效率从而影响视频播放帧率,如果是多路本地视频显示时,影响更为严重。



技术实现要素:

为了解决上述现有技术问题,本发明提供具有可提高本地视频帧读取速度等技术特点的一种优化提取视频帧读取速度的方法。

为了实现上述目的,本发明是通过以下技术方案实现的:

一种优化提取视频帧读取速度的方法,该方法包括存储步骤、读取步骤,所述存储步骤是将视频文件下载存放到嵌入式fat32文件系统当中,其包括如下步骤:

步骤1):格式化存储介质为fat32文件系统,并指定簇大小可足够容纳每一帧视频数据,将每一帧视频数据限制存放在一簇中;

步骤2):移植一个fat32文件系统到嵌入式系统当中;

步骤3):编写上位机软件解析视频格式文件,获取每一帧的视频数据,并请求将每一帧的视频数据发送至嵌入式系统;

步骤4):编写本地嵌入式系统软件用于接收上位机软件的请求,接收上位机软件发送视频数据请求,且为每一个新视频文件在根目录下创建一个视频目录;

步骤5):接收上位机的每一帧的视频数据,且为每一帧的视频数据在对应的视频目录下创建一个文件,以帧号命名视频文件名,获得若干个视频帧文件;

所述读取步骤是读取每一帧的视频数据,其包括如下步骤:

步骤1):获取根目录的簇号,所述根目录的首簇紧邻fat2,占簇区顺序上的第1个簇;

步骤2):读取根目录对应的簇的数据,并根据需要读取视频文件名,找到对应的目录项,以此来找到该目录项对应的簇号;簇的数据为每个视频帧文件的文件表项,当中记录了每个视频帧文件对应的簇位置;

步骤3):读取所述目录项对应的簇;

步骤4):依次根据视频文件名的帧号来索引簇中对应的文件表项,分别找到每一帧视频数据对应的文件表项;

步骤5):根据每一帧视频数据的文件表项找到视频帧文件对应的簇号和簇长度;

步骤6):将簇号和簇长度转换为硬件需要的地址和长度;

步骤7):根据获取的簇号和长度,发起硬件读命令;

步骤8):硬件返回视频帧数据。

作为一种改进,短的文件表项长度都固定为4字节,视频文件名的帧号是从0开始以自然正整数命名排序。

有益效果:使用本发明方法读取视频帧数据可以实现从现有技术中一秒几帧增强到一秒上百帧,从而保证视频帧读取的稳定高帧率;不会影响视频播放帧率,提高了视频帧的读取速度,从而保证视频播放帧率。

附图说明

图1是现有技术中需寻找下一簇示意图。

图2是本发明中视频帧文件索引簇示意图。

图3是本发明实施例1中视频目录下视频帧文件。

具体实施方式

以下结合说明书附图,对本发明作进一步说明,但本发明并不局限于以下实施例。

实施例1

如图2-3所示为的具体实施例,该实施例一种优化提取视频帧读取速度的方法,该方法包括存储步骤、读取步骤,所述存储步骤是将视频文件下载存放到嵌入式fat32文件系统当中,其包括如下步骤:

步骤1):格式化存储介质(如cf卡等)为fat32文件系统,并指定簇大小可足够容纳每一帧视频数据,将每一帧视频数据限制存放在一簇中;

步骤2):移植一个fat32文件系统到嵌入式系统当中;嵌入式系统是完全嵌入受控器件内部,为特定应用而设计的专用计算机系统,嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的,所以经常称为固件;

步骤3):编写上位机软件解析视频格式文件,获取每一帧的视频数据,并请求将每一帧的视频数据发送至嵌入式系统;上位机软件是安装在电脑里的软件,用来和下位机进行通信,控制或者读取下位机的数据;

步骤4):编写本地嵌入式系统软件用于接收上位机软件的请求,接收上位机软件发送视频数据请求,且为每一个新视频文件在根目录下创建一个视频目录;

步骤5):接收上位机的每一帧的视频数据,且为每一帧的视频数据在对应的视频目录下创建一个文件,以帧号命名视频文件名,如图3所示,目录名称为video,目录下包括frame0、frame1、rame2、frame3、rame4、frame5、rame6、frame7视频帧文件;

所述读取步骤是读取每一帧的视频数据,其包括如下步骤:

步骤1):获取根目录的簇号,所述根目录的首簇紧邻fat2,占簇区顺序上的第1个簇;

步骤2):读取根目录对应的簇的数据,并根据需要读取视频文件名,找到对应的目录项,以此来找到该目录项对应的簇号;簇的数据为每个视频帧文件的文件表项,当中记录了每个视频帧文件对应的簇位置;由于目录是放在根目录下的,根目录的簇的位置是固定的,所以获取根据根目录簇当中每个目录项位置非常快;如图2所示,根据视频帧文件名索引到文件表项从而确定视频帧对应的簇位置,短文件表项长度都固定4字节,根据视频文件名的帧号0、1、2、x,就可以根据公式4*x来确定文件表项的位置;

步骤3):读取所述目录项对应的簇;

步骤4):依次根据视频文件名的帧号来索引簇中对应的文件表项,分别找到每一帧视频数据对应的文件表项;如图2所示,如frame0对应第一个文件表项1,frame1对应第二个文件表项2,每一个短文件表项为4个字节;

步骤5):根据每一帧视频数据的文件表项找到视频帧文件对应的簇号和簇长度;

步骤6):将簇号和簇长度转换为硬件需要的地址和长度;

步骤7):根据获取的簇号和长度,发起硬件读命令;

步骤8):硬件返回视频帧数据。

最后,需要注意的是,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

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