一种面向嵌入式音视频设备的文件定位方法、系统及设备与流程

文档序号:23469581发布日期:2020-12-29 13:09阅读:90来源:国知局
一种面向嵌入式音视频设备的文件定位方法、系统及设备与流程

本发明涉及文件定位领域,尤其涉及一种面向嵌入式音视频设备的文件定位方法、系统和设备。



背景技术:

一般嵌入式音视频设备既可以直播也可以录像,而录像文件一般以固定的文件封装格式临时存储在sd卡上。常见的视频封装格式有mp4、mpegts等。mpegts格式的优势是大多数云厂商都支持,可以支持浏览器播放。在回放录像文件时,需要对录像文件进行快进快退等定位播放操作。

目前通常为了尽可能使回放首开快,mpegts格式的录像文件应尽可能小,一般嵌入式音视频设备视音频流每5s切片封装为一个ts文件,常规的音视频录制文件采用时间戳作为文件名的一部分,通过文件名中的时间戳信息完成文件的搜索和定位,例如文件命名方法是按照年/月/日/小时/starttime-endtime.ts的文件名结构来存储,每一个ts文件名都包含开始和结束时间戳,比如在2020/6/2418:6:14这个时间点产生了一个ts文件,它对应的时间戳是1592993174,单位为秒,那么这个ts的结束时间戳就是1592993174,开始时间戳为1592993174-5=1592993169,那么这个ts文件的名字即为1592993169-1592993174.ts,它会存储在如下目录:/mnt/sdcard/2020/06/24/18/1592993169-1592993174.ts,这样就会导致sd卡中存储大量的ts文件。

当播放时,需要根据给定的时间进行定位,目前的流程是首先对于定位时间转换出它对应的时间。比如时间戳为1592993150,他对应的时间为2020/6/2418:5:50,这样我们得到文件位于/mnt/sdcard/2020/06/24/18目录下。由于一个小时为3600s,每5s切片封装为一个ts文件,则每个小时的音视频切片存储为大概720个ts文件,那么就需要在这些ts文件里面,找到我们需要的。常规使用库函数readdir去遍历这720个文件,在嵌入式音视频设备的cpu上做这样的遍历处理非常耗时,可能要耗时几秒钟,这样使得回放首开比较慢,用户体验较差。而通常嵌入式音视频设备的cpu的性能也会比x86架构的差很多,因此在数量庞的ts文件在播放视频文件时,难以快速定位到指定的位置的视频。

综上,如何提高嵌入式音视频设备的音视频录制文件的定位速度是本领域技术人员亟需解决的技术问题。



技术实现要素:

本发明为解决现有技术存在的嵌入式音视频设备的音视频录制文件的定位的不足,提出一种面向嵌入式音视频设备的文件定位的解决方案,目的是提高嵌入式音视频设备的文件定位速度。

为了实现以上目的,本发明设计了一种面向嵌入式音视频设备的文件定位方法,所述方法包括:获取索引文件中记录的切片文件的总数;读入索引文件的内容,所述索引文件用于记录本地存储的音视频切片文件的存储路径记录;初始化检索目标切片文件的记录区间;获取所述记录区间的中间记录的第一时间戳,比较判断所述目标切片文件的时间戳与所述第一时间戳,如果不一致,则重新计算调整检索目标切片文件的记录区间,重复该步骤;返回获得的目标切片文件的存储路径。

优选的,在所述的初始化检索目标切片文件的记录区间之前还包括:在所述索引文件中获取切片文件记录的第一条记录的位置和最后一条记录的位置。

优选的,所述的初始化检索目标切片文件的记录区间的方法为:将检索目标切片文件的记录区间的最小值设置为所述第一条记录的位置;将检索目标切片文件的记录区间的最大值设置为所述最后一条记录的位置设置。

优选的,所述的重新计算调整检索目标切片文件的记录区间的方法是:如果所述目标切片视频的时间戳大于第一时间戳,则将第一时间戳对应记录的位置设为检索目标切片文件的记录区间的最小值;如果所述目标切片视频的时间戳小于第一时间戳,则将第一时间戳对应记录的位置设为检索目标切片文件的记录区间的最大值。

优选的,所述获取所述记录区间的中间记录的方法是:移动文件指针到所述记录区间的中间位置。

本发明还公开一种面向嵌入式音视频设备的文件定位方法,包括以下步骤:产生计数文件,初始化文件内容为0,所述计数文件记录索引文件中记录的切片文件的总数;产生索引文件,初始化索引文件为空。

本发明还公开一种面向嵌入式音视频设备的文件定位方法,包括以下步骤:产生新的切片文件时,将新的切片文件的路径写入索引文件末尾,同时将当前计数文件内容加一。

本发明还公开一种面向嵌入式音视频设备的文件定位系统,包括:初始化模块、切片文件存储模块、切片文件获取模块、文件定位模块,其中:初始化模块:初始化计数文件和索引文件;切片文件存储模块:用于存储切片文件,同时更新索引文件和计数文件;切片文件获取模块:用于调用文件定位模块获取切片文件;文件定位模块:用于在本地存储的音视频切片文件中获取目标切片文件。

本发明还公开一种电子设备,其特征在于,所述系统包括处理器以及存储器,所述存储器用于存储可执行程序;所述处理器用于执行所述可执行程序以实现所述的方法。

本发明公开的方法和系统中所述的模块,在实际应用中,即可以在一台服务器上部署多个模块,也可以每一模块独立部署在不同的服务器上,特别的,根据需要,为了提供更强大的计算处理能力,也可以根据需要将模块部署到集群服务器上。

利用本发明公开的方法、系统和设备,大大降低了文件定位时间,例如n条记录,采用原始的检索方法需要检索n条,传统搜索的时间复杂度为o(n),采用本发明公开的方法检索,搜索的时间复杂度为o(logn),由此可见,本发明所述的方法可大大提高文件定位速度,降低文件定位的时间成本,故具有明显的技术优势和有益效果。

为了对本发明有更清楚全面的了解,下面结合附图,对本发明的具体实施方式进行详细描述。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了一种实施例中面向嵌入式音视频设备的文件定位方法的流程示意图。

图2示出了一种实施例中查找目标切片文件的原理示意图。

图3示出了一种实施例中面向嵌入式音视频设备的文件定位系统的结构示意图。

具体实施方式

请参阅图1,图1示出了一种实施例中面向嵌入式音视频设备的文件定位方法的流程示意图,具体包括步骤s11~s15:

步骤s11,获取索引文件中记录的切片文件的总数。

步骤s12,读入索引文件的内容,所述索引文件用于记录本地存储的音视频切片文件的存储路径记录。

在该实施例中,读入索引文件代码示例如下:

file*fp=fopen("xxx.index","r");

if(!fp){return;}

步骤s13,初始化检索目标切片文件的记录区间。

在该实施例中中,需要初始化三个值:索引文件记录的总数total,索引文件内查找目标文件记录的搜索范围[start,end],初始化时,start=0即是第一条记录的开始位置,end=total,即最后一条记录的位置。

步骤s14,获取所述记录区间的中间记录的第一时间戳,比较判断所述目标切片文件的时间戳与所述第一时间戳,如果不一致,则重新计算调整检索目标切片文件的记录区间,重复该步骤。

该步骤的原理请参考图2所示的过程。

步骤s15,返回获得的目标切片文件的存储路径。

请参阅图2,图2示出了一种实施例中查找目标切片文件的原理示意图,图2包括三个阶段图2a、图2b和图2c,其中图2a代表第一次查找示例,图2b代表第二次查找示例,图2c代表第三次查找示例。

在本实施例中,首先设定三个变量:inttotal=0;intstart=0,end=0;total表示记录总数,start和end表示搜索的起止记录的范围。

读出索引文件记录的总数,得到total的值。

用fopen打开索引文件,获取索引文件的记录的开始和结束的位置,获得start和end的值,初始化时,start=0,end=total。

如图2a所示,第一次搜索,调用fseek移动文件指针到文件的中间位置,中间位置为:(end-start)/2,代码示例如下:

fseek(fp,(end-start)/2);

如图2b所示,根据上一次判断的结果是,要查找的目标文件时间戳大于中间记录文件的时间戳,则此时更新start,将上一次中间记录文件的位置作为新的start,此时start=(end-start)/2;继续在新的搜索范围[start,end]中查找,同样的,调用fseek移动文件指针到文件的中间位置,中间位置为:(end-start)/2,代码示例为:

fseek(fp,(end-start)/2);

如图2c所示,根据上一次判断的结果,要查找的目标文件时间戳小于中间记录文件的时间戳,则此时更新end,将上一次中间记录文件的位置作为新的end,此时end=(end-start)/2;继续在新的搜索范围[start,end]中查找,同样的,调用fseek移动文件指针到文件的中间位置,中间位置为:(end-start)/2,代码示例为:

fseek(fp,(end-start)/2)。

后面以此类推,直到查找到目标文件。

请参阅图3,图3示出了一种实施例中面向嵌入式音视频设备的文件定位系统的结构实施例,该实施例中,文件定位系统包括初始化模块01、切片文件存储模块02、切片文件获取模块03、文件定位模块04,其中:

初始化模块01:初始化计数文件和索引文件;

产生计数文件,初始化文件内容为0,所述计数文件记录索引文件中记录的切片文件的总数;产生索引文件,初始化索引文件为空。

切片文件存储模块02:用于存储切片文件,同时更新索引文件和计数文件。

在该实施例中中,产生新的切片文件时,将新的切片文件的路径写入索引文件末尾,同时将当前计数文件内容加一。

切片文件获取模块03:用于调用文件定位模块获取切片文件。

文件定位模块04:用于在本地存储的音视频切片文件中获取目标切片文件。

本申请实施例还提供一种电子设备,所述电子设备中包括处理器及存储器,所述存储器中存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述任一实施例所述的方法和系统。

需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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