一种音频文件加载方法与流程

文档序号:15215736发布日期:2018-08-21 16:50阅读:170来源:国知局
本发明涉及音频文件管理
技术领域
,尤其涉及一种音频文件加载方法。
背景技术
:一般的电子播放装置都具有rom、ram,rom用来存储系统程序以及音乐、电影、电子书等用户资料,ram则是电子播放装置的运行内存,用于临时存储数据,通常来说,ram容量大,就能同时运行更多的应用程序。然而,由于成本的考虑,电子播放装置的ram容量是非常有限的,而且还要分配绝大部分容量用于运行更为基础重要的程序,因此分配用于缓存音频文件信息的容量就非常有限了。由于车机的ram容量十分有限,目前车载多媒体播放装置在扫描歌曲时采用一次性读取,这样做的好处是下次播放无需再扫描和调整播放列表,但是采用这种方法从存储器中读取的歌曲数目是固定有限的,无法读取超出这个数目的歌曲文件。因此,现有技术有待进一步改进。技术实现要素:本发明提供一种音频文件加载方法,旨在解决现有技术中的缺陷,实现动态调整缓存区,利用相对少的ram空间,达到读取不限数目的音频文件信息。为达到上述目的,本发明所采取的技术方案为:本发明提供一种音频文件加载方法,包括:s1、设置音频文件信息缓存单元的总长度;s2、将所述音频文件信息缓存单元等分为若干个功能缓存区,所述功能缓存区包括最前端的前置缓存区、位于前置缓存区之后的前列表缓存区、最后端的后置缓存区、位于后置缓存区之前的后列表缓存区,以及位于前列表缓存区和后列表缓存区之间的播放缓存区;s3、扫描存储器中的所有文件,获取音频文件的总数目;s4、根据单个功能缓存区的容量将音频文件的总数目分割为块,将每块的第一个音频文件作为存储节点,生成存储节点列表;s5、判断上次是否有播放记录,是则获取该播放记录对应的存储节点,根据所述存储节点刷新各缓存区,否则根据第一个存储节点刷新各缓存区;s6、接收当前输入的音频文件信息;s7、判断所述当前输入的音频文件信息是否在播放缓存区里,是则不刷新缓存区,否则进入下一步;s8、确定本次缓存区的刷新方向,若本次缓存区的刷新方向与上一次缓存区的刷新方向相同,则等待上一次缓存区的刷新完成后才能继续执行本次缓存区的刷新,否则直接执行本次缓存区的刷新。具体地,所述根据所述存储节点刷新各缓存区,包括:将存储节点n及存储节点n+1之间的音频文件信息存入播放缓存区;将存储节点n+1及存储节点n+2之间的音频文件信息存入后列表缓存区;将存储节点n+2及存储节点n+3之间的音频文件信息存入后置缓存区;若n≥2,则将存储节点n-1及存储节点n之间的音频文件信息存入前列表缓存区,否则前列表缓存区为空;若n≥3,将存储节点n-2及存储节点n-1之间的音频文件信息存入前置缓存区,否则前列表缓存区为空。具体地,所述根据第一个存储节点刷新各缓存区,包括:将存储节点1及存储节点2之间的音频文件信息存入播放缓存区;将存储节点2及存储节点3之间的音频文件信息存入后列表缓存区;将存储节点3及存储节点4之间的音频文件信息存入后置缓存区;前置缓存区、前列表缓存区为空。具体地,所述确定本次缓存区的刷新方向,若本次缓存区的刷新方向与上一次缓存区的刷新方向相同,则等待上一次缓存区的刷新完成后才能继续执行本次缓存区的刷新,否则直接执行本次缓存区的刷新,包括:如果本次缓存区的刷新方向是向前,则判断上次刷新缓存区的方向是否一致,是则等待上一次刷新完成,然后将所有缓存区向前移动一个,并刷新新前置缓存区,否则停止上次缓存区刷新,将所有缓存区向前移动一个,并刷新前置缓存区;如果本次缓存区的刷新方向是向后,则判断上次刷新缓存区的方向是否一致,是则等待上一次刷新完成,然后将所有缓存区向后移动一个,并刷新后置缓存区,否则停止上次缓存区刷新,将所有缓存区向后移动一个,并刷新后置缓存区。具体地,所述刷新缓存区包括:步骤a、根据当前正在播放的音频文件,找到对应存储节点所在的文件夹;步骤b、递归遍历后续音频文件和文件夹;步骤c、将遍历到的音频文件信息存入到各功能缓存区;步骤d、判断各功能缓存区是否已满,是则结束刷新,否则进入下一步;步骤e、判断当前目录下所有文件是否已遍历完毕,是则进入下一步,否则返回步骤b;步骤f、判断当前目录是否为根目录,是则结束刷新,否则进入下一个文件夹,并返回步骤b。具体地,所述前置缓存区、前列表缓存区、播放缓存区、后列表缓存区、后置缓存区的容量相等。本发明的有益效果在于:本发明通过将音频文件信息缓存单元等分为若干个功能缓存区,根据功能缓存区的容量将音频文件的总数目分割为块,生成存储节点列表,并根据存储节点列表刷新各缓存区,然后根据接收的音频文件信息来刷新缓存区,实现了动态调整缓存区,利用相对少的ram空间,达到读取不限数目的音频文件信息。附图说明图1是本发明的音频文件加载方法的流程示意图;图2是本发明的音频文件信息缓存单元示意图。具体实施方式下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。如图1所示,本发明的实施例提供一种音频文件加载方法,包括:步骤1、设置音频文件信息缓存单元的总长度。在本实施例中,将音频文件信息缓存单元总长度设置为可以存储500个音频文件信息。步骤2、将所述音频文件信息缓存单元等分为若干个功能缓存区,所述功能缓存区包括最前端的前置缓存区、位于前置缓存区之后的前列表缓存区、最后端的后置缓存区、位于后置缓存区之前的后列表缓存区,以及位于前列表缓存区和后列表缓存区之间的播放缓存区。图2是本发明的音频文件信息缓存单元示意图,temp_buff1为前置缓存区,位于最前端;temp_buff2为后置缓存区,位于最后端;位于前置缓存区temp_buff1、后置缓存区temp_buff2之间的buff1、buff2、buff3为列表显示区,只有该区域buff的歌曲信息可被音乐播放应用程序访问,其中buff1为前列表缓存区,buff3为后列表缓存区,buff2为播放缓存区,当播放歌曲超出播放缓存区,列表显示区将被刷新。在本实施例中,前置缓存区、前列表缓存区、播放缓存区、后列表缓存区、后置缓存区的容量相等,即可以存储100个音频文件信息。例如,当前的列表显示区如表1所示:表1buff1buff2buff31-100101-200201-300表1表示buff1存储第1至第100个音频文件信息,buff2存储第101至第200个音频文件信息,buff3存储第201至第300个音频文件信息。如果当前播放的是第150个音频文件,而当用户选择切换到播放第210个音频文件,由于第210个音频文件对应的音频文件信息在buff3里,超出了播放缓存区buff2的区域,列表就会刷新如表2所示:表2buff1buff2buff3101-200201-300301-400步骤3、扫描存储器中的所有文件,获取音频文件的总数目。存储器中的每个文件有相应的结构体用于存储该文件信息。通过文件系统遍历文件的api和读取文件信息的api即可获取存储器中音频文件的总数目。步骤4、根据单个功能缓存区的容量将音频文件的总数目分割为块,将每块的第一个音频文件作为存储节点,生成存储节点列表。例如,usb存储器中共有620个音频文件,单个功能缓存区的容量为100个音频文件信息,则将第1个音频文件作为第1个节点,将第101个音频文件作为第2个节点,以此类推,直至将第601个音频文件作为第7个节点。步骤5、判断上次是否有播放记录,是则获取该播放记录对应的存储节点,根据所述存储节点刷新各缓存区,否则根据第一个存储节点刷新各缓存区。所述根据所述存储节点刷新各缓存区,具体是:将存储节点n及存储节点n+1之间的音频文件信息存入播放缓存区;将存储节点n+1及存储节点n+2之间的音频文件信息存入后列表缓存区;将存储节点n+2及存储节点n+3之间的音频文件信息存入后置缓存区;若n≥2,则将存储节点n-1及存储节点n之间的音频文件信息存入前列表缓存区,否则前列表缓存区为空;若n≥3,将存储节点n-2及存储节点n-1之间的音频文件信息存入前置缓存区,否则前列表缓存区为空。例如,音频文件总数是620个,并且播放记录是第310个,由于第310个音频文件对应的存储节点是存储节点4(第4个存储节点),于是将存储节点4到存储节点5之间的音频文件信息(即第301-400个)存入到播放缓存区buff2,将存储节点5到存储节点6之间的音频文件信息(即第401-500个)存入到后列表缓存区buff3,将存储节点6到存储节点7之间的音频文件信息(即第501-600个)存入到后置缓存区temp_buff2,将存储节点3到存储节点4之间的音频文件信息(即第201-300个)存入到前列表缓存区buff1,将存储节点2到存储节点3之间的音频文件信息(即第101-200个)存入到前列表缓存区temp_buff1,如表3所示:表3temp_buff1buff1buff2buff3temp_buff2101-200201-300301-400401-500501-600所述根据第一个存储节点刷新各缓存区,具体是:将存储节点1及存储节点2之间的音频文件信息存入播放缓存区;将存储节点2及存储节点3之间的音频文件信息存入后列表缓存区;将存储节点3及存储节点4之间的音频文件信息存入后置缓存区;前置缓存区、前列表缓存区为空。例如,音频文件总数是620个,没有播放记录,于是将存储节点1到存储节点2之间的音频文件信息(即第1-100个)存入到播放缓存区buff2,将存储节点2到存储节点3之间的音频文件信息(即第101-200个)存入到后列表缓存区buff3,将存储节点3到存储节点4之间的音频文件信息(即第201-300个)存入到后置缓存区temp_buff2,如表4所示:表4temp_buff1buff1buff2buff3temp_buff21-100101-200201-300步骤6、接收当前输入的音频文件信息。步骤7、判断所述当前输入的音频文件信息是否在播放缓存区里,是则不刷新缓存区,否则进入下一步。步骤8、确定本次缓存区的刷新方向,若本次缓存区的刷新方向与上一次缓存区的刷新方向相同,则等待上一次缓存区的刷新完成后才能继续执行本次缓存区的刷新,否则直接执行本次缓存区的刷新。具体是:如果本次缓存区的刷新方向是向前,则判断上次刷新缓存区的方向是否一致,是则等待上一次刷新完成,然后将所有缓存区向前移动一个,并刷新新前置缓存区,否则停止上次缓存区刷新,将所有缓存区向前移动一个,并刷新前置缓存区;如果本次缓存区的刷新方向是向后,则判断上次刷新缓存区的方向是否一致,是则等待上一次刷新完成,然后将所有缓存区向后移动一个,并刷新后置缓存区,否则停止上次缓存区刷新,将所有缓存区向后移动一个,并刷新后置缓存区。例如,当前缓存区如表5所示:表5temp_buff1buff1buff2buff3temp_buff2101-200201-300301-400401-500501-600如果输入的音频文件信息是第480个,由于该音频文件不在播放区播放缓存区buff2里,且本次缓存区的刷新方向是向后,则将所有缓存区向后移动一个,并刷新后置缓存区temp_buff2(temp_buff2中存入了之前整个音频文件信息缓存单元没有的音频文件信息601-620),如表6所示:表6temp_buff1buff1buff2buff3temp_buff2201-300301-400401-500501-600601-620如果输入的音频文件信息是第280个,由于该音频文件不在播放区播放缓存区buff2里,且本次缓存区的刷新方向是向前,则将所有缓存区向前移动一个,并刷新前置缓存区temp_buff1(temp_buff1被清空),如表7所示:表7temp_buff1buff1buff2buff3temp_buff2101-200201-300301-400401-500刷新缓存区的具体方法是:步骤a、根据当前正在播放的音频文件,找到对应存储节点所在的文件夹;步骤b、递归遍历后续音频文件和文件夹;步骤c、将遍历到的音频文件信息存入到各功能缓存区;步骤d、判断各功能缓存区是否已满,是则结束刷新,否则进入下一步;步骤e、判断当前目录下所有文件是否已遍历完毕,是则进入下一步,否则返回步骤b;步骤f、判断当前目录是否为根目录,是则结束刷新,否则进入下一个文件夹,并返回步骤b。例如,当前正在播放的音频文件是第310个,对应的存储节点是第301个,对应的文件夹是folder4。在刷新各功能缓存区的时候,遍历文件夹folder4,并将其中的音频文件存储到各功能缓存区,如果folder4中有600首歌,则将其中的500首刷新到各功能缓存区后结束刷新,如果folder4只有400个音频文件,则在遍历完folder4后,继续遍历该目录下的其它文件夹中是否有音频文件,是则将其刷新到各功能缓存区中,直到各功能缓存区已满,或者虽然各功能缓存区未满,但是该目录已是根目录,则结束刷新。以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1