本申请涉及文件转码技术领域,特别涉及一种文件编解码方法、装置、终端及存储介质。
背景技术:
近年来,随着国家在网络建设上的不断投入,以及上网资费的不断降低,人们日常生活中的大量应用,已经可以脱离本地电脑环境,实现完全的“在线式”,“云端式”处理,例如,针对视频文档在在线处理应用。当前的针对视频文档的再次处理,以便是在用户将视频上传至服务器端后,通过ffmpeg程序实现转码。这种转码方式主要包括两种方法:一、按文件来启动ffmpeg进程,每一个文件启动一个ffmpeg进程,即用户上传一个文件,服务器集群启动一个ffmpeg进程执行转码;二、按文件的时间分段转码,例如把一个50分钟时长的文件分成50份小文件,每个小文件启动一个ffmpeg进程,每一个进程转码一个小文件,等待所有小文件转码完成后通过管理程序组合成最终的目标文件。
前一种转码的速度取决于单个进程的处理速度,而后一种处理取决于单个小文件的处理速度并且解码、编码没有有效拆分,解码、编码内部软硬件算法没有有效拆分,另外音、视频的处理没有单独考虑。因此,这两种文件编解码要么存在处理速度慢的问题,要么存在无法对视频文件进行有效拆分的问题。
技术实现要素:
本申请旨在解决至少一个上述技术问题,本申请提出一种文件编解码方法、装置、终端及存储介质。
第一方面,本申请提供一种文件编解码方法,该方法包括:
获取待处理的原始文件,并将所述原始文件分割为多个子文件包;
确定针对多个子文件包的多个解码节点以及多个编码节点;
依据多个所述解码节点以及所述多个编码节点,对多个所述子文件包进行处理,得到多个目标子文件;
将多个所述目标子文件合并处理,得到目标文件。
第二方面,本申请提供一种文件编解码装置,该装置包括:
文件分割模块,用于获取待处理的原始文件,并将所述原始文件分割为多个子文件包;
节点确定模块,用于确定针对多个子文件包的多个解码节点以及多个编码节点;
编解码处理模块,用于依据多个所述解码节点以及所述多个编码节点,对多个所述子文件包进行处理,得到多个目标子文件;
文件合并模,用于将多个所述目标子文件合并处理,得到目标文件。
第三方面,本申请提供一种终端,该终端包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述文件编解码方法。
第四方面,本申请提供一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行上述文件编解码方法。
本申请实施例的有益效果:通过将获取到的待处理的原始文件的分割为多个子文件包,从而确定针对多个子文件包的多个解码节点以及多个编码节点,以便依据多个解码节点以及多个编码节点,对多个子文件包进行处理,得到多个目标子文件,进而将多个目标子文件合并处理,得到目标文件,这种通过确定多个解码节点以及多个编码节点的方式,起到了对多个子文件包同时处理的作用,实现对文件编解码的分布式处理目的,解决了现有技术中文件编解码速度慢、效率低的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种文件编解码方法一个实施例的流程示意图;
图2是本申请实施例提供的一种文件编解码方法另一个实施例应用框架示意图;
图3是本申请实施例提供的一种文件编解码装置一个实施例的框图结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
实施例一
本申请提供了一种文件编解码方法,如图1所示,该方法包括:步骤s101至步骤s104。
步骤s101:获取待处理的原始文件,并将原始文件分割为多个子文件包。
本申请实施例中,服务端获取原始文件,并将原始文件分割为多个子文件包。具体地,原始文件可以为视频文件、音频文件。
应用时,可以利用任意一种分割算法对原始文件进行分割处理,分割算法可以为按照预定的分割表征进行分割的方式。例如视频文件,按照每分钟一个子文件进行划分;再入音频文件,按照4096个音频包进行划分,即通过封装将4096个音频包放到一个栈里。通过将4096个音频包划分至一个栈为后续编码为aac格式提供的基础,保证对栈进行解码的结果与以后的采样的总字节数是跟4096对齐,避免了后续前后栈之间的对齐操作。
本申请实施例中,服务端利用分布式系统执行本申请实施例提供的文件编解码方法。
具体地,待处理的原始文件一般通过队列来存储,从而保证对海量客户发送的原始文件的处理顺序。具体应用时,可以通过账户等级来对原始文件进行分类,例如,账户登等级高的客户端发送的原始文件的处理优先级较高,即优先处理账户登等级高的客户端发送的原始文件。
步骤s102:确定针对多个子文件包的多个解码节点以及多个编码节点。
本申请实施例通过确定多个解码节点和多个编码节点,起到了对多个子文件包的并行处理作用,提高了对子文件包的处理速度,提高了处理效率。
具体地,假设子文件包围视频文件,那么通过解码节点将该视频文件解码为图像帧,进而对图像帧进行编码,完成对视频文件的转码。
具体地,解码节点以及编码节点的数量可以根据预配置的策略来确定。例如,一个解码节点或一个编码节点处理一个子文件包,或者一个解码节点或一个编码节点处理多个子文件包。具体应用时,通过栈或队列来存储预定数量的子文件包,从而通过一个解码节点或编码节点来对这个栈或队列中存储的子文件包来进行处理。
步骤s103:依据多个解码节点以及多个编码节点,对多个子文件包进行处理,得到多个目标子文件。
步骤s104:将多个目标子文件合并处理,得到目标文件。
本申请实施例中,通过将获取到的待处理的原始文件的分割为多个子文件包,从而确定针对多个子文件包的多个解码节点以及多个编码节点,以便依据多个解码节点以及多个编码节点,对多个子文件包进行处理,得到多个目标子文件,进而将多个目标子文件合并处理,得到目标文件,这种通过确定多个解码节点以及多个编码节点的方式,起到了对多个子文件包同时处理的作用,实现对文件编解码的分布式处理目的,解决了现有技术中文件编解码速度慢、效率低的问题。
在一个实现方式中,如图1所示,步骤s101获取待处理的原始文件,并将原始文件分割为多个子文件包,包括:
步骤s1011(图中未示出):确定针对原始文件的文件指纹id串;
步骤s1012(图中未示出):将原始文件分割为多个子文件包,并确定多个子文件包各自对应的子标签;
步骤s1013(图中未示出):将多个子文件包各自对应的子标签以及原始文件的文件指纹id串,作为多个子文件包各自对应的文件标签,以依据文件标签来对多个子文件包进行处理。
本申请实施例中,文件指纹id串用于表征待处理的原始文件的文件标识,以便在对原始文件进行分割时,能够通过文件指纹id串来确定分割后的子文件包。
在另一个实现方式中,如图1所示,步骤s102确定针对多个子文件包的多个解码节点以及多个编码节点,包括:
步骤s1021(图中未示出):基于子文件包的文件类型,创建针对文件类型的多个栈对象,并依据多个所述栈对象对多个所述子文件包进行存储;
步骤s1022(图中未示出):确定多个栈对象各自对应的解码节点以及编码节点。
具体地,文件类型可以通过文件格式来表征,例如,文件格式为rm,则确定为视频文件;再如,文件格式为mp3,则确定为音频文件。
具体地,栈对象用于存储子文件包,应用时,时间顺序在先的先入栈,时间顺序再后的后入栈。具体应用时,栈对象可以在存储过程中实时创建。即前一个栈存储存储预定条件的子文件包后,再创建另一个栈对象。
在又一个实现方式中,步骤s1021基于所述子文件包的文件类型,创建针对文件类型的多个栈对象,并依据多个栈对象对多个所述子文件包进行存储,包括:
若多个子文件包为视频文件,则基于时间顺序,并依据多个针对视频文件的多个栈对象对多个子文件包进行存储,任一针对视频文件的栈对象包括预定时长内的多个子文件包象;
若多个子文件包为音频文件,则基于时间顺序,并依据多个针对音频文件的多个栈对象对多个所述子文件包进行存储,任一针对音频时间的栈对象存储预定数量的子文件包。
具体地,针对音频文件的栈存储4096个子文件包,即每个栈存储4096个子文件包,从而保护后续编码无需重新对齐,实现快速编码的目的。
在又一个实现方式中,步骤s104将多个目标子文件合并处理,得到目标文件,包括:
对多个目标子文件进行封装处理;
依据多个目标子文件各自对应的时间,对封装处理后的目标子文件进行合并处理,以得到目标文件。
本申请实施例中目标子文件为经过解码、编码处理后的子文件包,处理完成后通过封装处理,将编码好的、时间戳排序好的音频文件或视频文件包字节化写到文件中,为后续合并处理提供准备,保证最终得到的目标文件的完整性。
在又一个实现方式中,如图1所示,步骤s104将多个目标子文件合并处理,得到目标文件之后,该方法还包括:
步骤s105(图中未示出):依据预构建的分布式存储系统,对目标文件进行分布式存储。
本申请实施例通过分布式存储系统实现了对目标文件的分布式存储,提高了对存储资源的有效利用率。
实施例二
为了进一步的说明本申请实施例提供的文件编解码方法,下面以图2所示的流程框图为例进行说明。
应用时,服务器接收客户端上传的原始文件,并队列进行存储。假设,当前队列中待处理的对象为客户端a上传的原始文件。服务器通过解封装节点将该原始文件进行分割,假设该原始文件为视频文件,解封装节点提取该原始文件的视频部分和音频部分,并将视频部分、音频部分分别按照如图2所示的栈进行存储。图2中左半部分为针对视频部分的多个栈,针对视频部分的每个栈存储约1分钟的原始视频(即子文件包),针对视频部分的每个栈对应一个解码节点,通过多个解码节点的处理,得到原始视频帧栈,再通过针对视频部分的每个栈的编码节点进行处理,得到目标视频包栈。图2右半部分为针对音频部分的多个栈,针对音频部分的每个栈中存储4096个子音频包,针对音频部分的每个栈对应一个编码节点,通过针对音频部分的多个编码节点处理得到,多个原始音频帧栈,每个原始音频帧栈对应一个解码节点,通过解码节点的处理,得到原始音频包栈。最终通过封装节点将多个目标视频包栈和多个原始音频包栈进行封装,并合并处理为目标文件。
具体地,针对视频文件的栈存储预定时长的子文件包。例如假设预定时长为1分钟,因此,每个栈对象中存储时长为1分钟的子文件包,以保证视频画面的完整性,从而对这1分钟的子文件包进行解码,可能得到多帧图像帧。因此,多个处理节点(如图2中解码节点)的处理,使得本申请实施例提供的方法相比较现有方法,提高了20-30倍速度,缩短了对音视频文件的处理时间,提高了处理效率。
实施例三
本申请实施例提供了一种文件编解码装置,如图3所示,该装置30包括:文件分割模块301、节点确定模块302、编解码处理模块303及文件合并模块304。
文件分割模块301,用于获取待处理的原始文件,并将所述原始文件分割为多个子文件包;
节点确定模块302,用于确定针对多个子文件包的多个解码节点以及多个编码节点;
编解码处理模块303,用于依据多个所述解码节点以及所述多个编码节点,对多个所述子文件包进行处理,得到多个目标子文件;
文件合并模块304,用于将多个所述目标子文件合并处理,得到目标文件。
本申请实施例,通过将获取到的待处理的原始文件的分割为多个子文件包,从而确定针对多个子文件包的多个解码节点以及多个编码节点,以便依据多个解码节点以及多个编码节点,对多个子文件包进行处理,得到多个目标子文件,进而将多个目标子文件合并处理,得到目标文件,这种通过确定多个解码节点以及多个编码节点的方式,起到了对多个子文件包同时处理的作用,实现对文件编解码的分布式处理目的,解决了现有技术中文件编解码速度慢、效率低的问题。
进一步地,文件分割模块用于:
确定针对所述原始文件的文件指纹id串;
将所述原始文件分割为多个子文件包,并确定多个所述子文件包各自对应的子标签;
将多个所述子文件包各自对应的子标签以及所述原始文件的文件指纹id串,作为多个所述子文件包各自对应的文件标签,以依据所述文件标签来对多个所述子文件包进行处理。
进一步地,节点确定模块用于:
基于所述子文件包的文件类型,创建针对所述文件类型的多个栈对象,并依据多个所述栈对象对多个所述子文件包进行存储;
确定多个所述栈对象各自对应的解码节点以及编码节点。
进一步地,节点确定模块用于:
若多个所述子文件包为视频文件,则基于时间顺序,并依据多个针对视频文件的多个所述栈对象对多个所述子文件包进行存储,任一针对视频文件的栈对象包括预定时长内的多个所述子文件包象;
若所述多个子文件包为音频文件,则基于时间顺序,并依据多个针对音频文件的多个所述栈对象对多个所述子文件包进行存储,任一针对音频时间的栈对象存储预定数量的所述子文件包。
进一步地,文件合并模块用于:
对多个所述目标子文件进行封装处理;
依据多个所述目标子文件各自对应的时间,对封装处理后的所述目标子文件进行合并处理,以得到所述目标文件。
进一步地,文件合并模块用于所述将多个所述目标子文件合并处理,得到目标文件之后,还用于:
依据预构建的分布式存储系统,对所述目标文件进行分布式存储。
进一步地,文件合并模块还用于:
基于来自客户端的播放请求,将所述目标文件按照预定加载时长逐步推送至所述客户端。
本实施例的文件编解码装置可执行本申请实施例一提供的文件编解码方法,其实现原理相类似,此处不再赘述。
实施例四
本申请实施例提供了一种终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该计算机程序时以实现上述文件编解码方法。
具体地,处理器可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
具体地,处理器通过总线与存储器连接,总线可包括一通路,以用于传送信息。总线可以是pci总线或eisa总线等。总线可以分为地址总线、数据总线、控制总线等。
存储器可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选的,存储器用于存储执行本申请方案的计算机程序的代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,以实现图3所示实施例提供的文件编解码装置的动作。
本申请实施例,通过将获取到的待处理的原始文件的分割为多个子文件包,从而确定针对多个子文件包的多个解码节点以及多个编码节点,以便依据多个解码节点以及多个编码节点,对多个子文件包进行处理,得到多个目标子文件,进而将多个目标子文件合并处理,得到目标文件,这种通过确定多个解码节点以及多个编码节点的方式,起到了对多个子文件包同时处理的作用,实现对文件编解码的分布式处理目的,解决了现有技术中文件编解码速度慢、效率低的问题。
实施例五
本申请实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行上述实施例提供的文件编解码方法。
本申请实施例,通过将获取到的待处理的原始文件的分割为多个子文件包,从而确定针对多个子文件包的多个解码节点以及多个编码节点,以便依据多个解码节点以及多个编码节点,对多个子文件包进行处理,得到多个目标子文件,进而将多个目标子文件合并处理,得到目标文件,这种通过确定多个解码节点以及多个编码节点的方式,起到了对多个子文件包同时处理的作用,实现对文件编解码的分布式处理目的,解决了现有技术中文件编解码速度慢、效率低的问题。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
1.一种文件编解码方法,其特征在于,包括:
获取待处理的原始文件,并将所述原始文件分割为多个子文件包;
确定针对多个子文件包的多个解码节点以及多个编码节点;
依据多个所述解码节点以及所述多个编码节点,对多个所述子文件包进行处理,得到多个目标子文件;
将多个所述目标子文件合并处理,得到目标文件。
2.根据权利要求1所述的方法,其特征在于,所述获取待处理的原始文件,并将所述原始文件分割为多个子文件包,包括:
确定针对所述原始文件的文件指纹id串;
将所述原始文件分割为多个字文件包,并确定多个所述字文件包各自对应的子标签;
将多个所述子文件包各自对应的子标签以及所述原始文件的文件指纹id串,作为多个所述子文件包各自对应的文件标签,以依据所述文件标签来对多个所述子文件包进行处理。
3.根据权利要求1所述的方法,其特征在于,所述确定针对多个子文件包的多个解码节点以及多个编码节点,包括:
基于所述子文件包的文件类型,创建针对所述文件类型的多个栈对象,并依据多个所述栈对象对多个所述子文件包进行存储;
确定多个所述栈对象各自对应的解码节点以及编码节点。
4.根据权利要求3所述的方法,其特征在于,所述基于所述子文件包的文件类型,创建针对所述文件类型的多个栈对象,并依据多个所述栈对象对多个所述子文件包进行存储,包括:
若多个所述子文件包为视频文件,则基于时间顺序,并依据多个针对视频文件的多个所述栈对象对多个所述子文件包进行存储,任一针对视频文件的栈对象包括预定时长内的多个所述子文件包象;
若所述多个子文件包为音频文件,则基于时间顺序,并依据多个针对音频文件的多个所述栈对象对多个所述子文件包进行存储,任一针对音频时间的栈对象存储预定数量的所述子文件包。
5.根据权利要求1所述的方法,其特征在于,所述将多个所述目标子文件合并处理,得到目标文件,包括:
对多个所述目标子文件进行封装处理;
依据多个所述目标子文件各自对应的时间,对封装处理后的所述目标子文件进行合并处理,以得到所述目标文件。
6.根据权利要求1所述的方法,其特征在于,所述将多个所述目标子文件合并处理,得到目标文件之后,所述方法还包括:
依据预构建的分布式存储系统,对所述目标文件进行分布式存储。
7.一种文件编解码装置,其特征在于,包括:
文件分割模块,用于获取待处理的原始文件,并将所述原始文件分割为多个子文件包;
节点确定模块,用于确定针对多个子文件包的多个解码节点以及多个编码节点;
编解码处理模块,用于依据多个所述解码节点以及所述多个编码节点,对多个所述子文件包进行处理,得到多个目标子文件;
文件合并模块,用于将多个所述目标子文件合并处理,得到目标文件。
8.根据权利要求7所述的装置,其特征在于,所述文件分割模块用于:
确定针对所述原始文件的文件指纹id串;
将所述原始文件分割为多个字文件包,并确定多个所述字文件包各自对应的子标签;
将多个所述子文件包各自对应的子标签以及所述原始文件的文件指纹id串,作为多个所述子文件包各自对应的文件标签,以依据所述文件标签来对多个所述子文件包进行处理。
9.一种终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任意一项所述的文件编解码方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1至6中任意一项所述的文件编解码方法。
技术总结