发明内容
本发明提供一种视频文件处理方法及装置、系统,用以解决基于现有的分布式文件系统,造成了大量不必要的网络IO操作,当网络带宽较差的情况下,会造成视频转码应用性能的急剧下降的问题。
第一方面,本发明提供一种视频文件处理方法,应用于分布式文件系统,包括:
元数据服务器接收客户端发送的转码请求消息,所述转码请求消息中包括源文件片段的元数据信息、源编码格式和目标编码格式;
根据所述源文件片段的元数据信息,获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;
若所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同,则向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。
基于第一方面,在第一种可能的实现方式中,所述元数据服务器接收客户端发送的转码请求消息之后,还包括:
所述元数据服务器根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息;
根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点;
将所述确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式。
基于第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定对所述源文件片段进行转码处理的处理节点之前,还包括:
所述元数据服务器定期接收所述各处理节点分别发送的工作状态信息、存储空间状态信息,以及所述各处理节点能够转码的源编码格式和目标编码格式。
基于第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,将所述确定的处理节点的标识发送给所述客户端之后,还包括:
所述处理节点接收所述客户端发送的所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;
所述处理节点根据所述目标编码格式,将所述源文件片段从所述源编码格式转码为所述目标编码格式,生成目标文件片段以及所述生成的目标文件片段的元数据信息;
所述处理节点向所述元数据服务器发送所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息。
基于第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述处理节点向所述元数据服务器发送所述生成的目标文件的元数据信息以及对应的所述源文件片段的元数据信息之后,包括:
所述元数据服务器接收所述处理节点发送的所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息;
建立所述生成的目标文件片段的元数据信息与所述源文件片段的元数据信息之间的对应关系。
基于第一方面或第一方面的第一至第四种任一可能的实现方式,在第六种可能的实现方式中,所述元数据服务器接收客户端发送的转码请求消息之前,包括:
所述客户端将源文件的起始位置作为第一个源文件片段的起始边界;根据所述源文件中的每一个I帧的顺序,依此计算每一个I帧的指纹特征值,分别将每一个I帧的指纹特征值整数取模得到每一个I帧的模数;将第一个符合预设的切分数值的模数对应的I帧确定为第一特征帧,记录所述第一特征帧的偏移位置,将所述第一特征帧的偏移位置作为所述第一个源文件片段的结束边界和第二个源文件片段的起始边界,直至将所述源文件划分为多个源文件片段;
所述客户端分别计算所述多个源文件片段中的每一个源文件片段的哈希值;
生成每一个源文件片段的元数据信息,所述每一个源文件片段的元数据信息包括所述每一个源文件片段的位置信息、长度和哈希值。
第二方面,本发明提供一种元数据服务器,应用于分布式文件系统,包括:
接收模块,用于接收客户端发送的转码请求消息,所述转码请求消息中包括源文件片段的元数据信息、源编码格式和目标编码格式;
获取模块,用于根据所述接收模块接收的源文件片段的元数据信息,获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;
发送模块,用于在所述获取模块获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。
基于第二方面,在第一种可能的实现方式中,在所述获取模块根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息时,所述元数据服务器还包括:
确定模块,用于根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点;
所述发送模块,还用于将所述确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式。
基于第二方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述确定模块确定对所述源文件片段进行转码处理的处理节点之前;
所述接收模块,还用于定期接收所述各处理节点分别发送的工作状态信息、存储空间状态信息,以及所述各处理节点能够转码的源编码格式和目标编码格式。
基于第二方面的第一种可能的实现方式,在第三种可能的实现方式中,在所述发送模块将所述确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式之后;
所述接收模块,还用于接收所述处理节点发送的所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息,所述生成的目标文件片段的元数据信息为所述处理节点根据所述客户端发送的所述源文件片段、所述源文件片段的元数据信息和所述目标编码格式,将所述源文件片段从所述源编码格式转码为所述目标编码格式,生成目标文件片段以及所述生成的目标文件片段的元数据信息;
还包括:
建立模块,用于建立所述生成的目标文件片段的元数据信息与所述源文件片段的元数据信息之间的对应关系。
第三方面,本发明提供一种分布式文件系统,包括:元数据服务器、客户端和处理节点;
所述元数据服务器为上述第二方面所述的元数据服务器;
所述客户端,用于向所述元数据服务器发送转码请求消息,所述转码请求消息中包括源文件片段的元数据信息、所述源编码格式和目标编码格式;
所述客户端,还用于接收所述元数据服务器发送的所述目标文件片段的元数据信息,根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段;
所述元数据服务器发送的所述目标文件片段的元数据信息为所述元数据服务器根据客户端发送的转码请求消息中包括源文件片段的元数据信息,获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式,在所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同时,向所述客户端发送的所述目标文件片段的元数据信息。
基于第三方面,在第一种可能的实现方式中,所述处理节点的数量为一个或一个以上;
所述客户端,还用于在所述元数据服务器根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息时,根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点的基础上,接收所述元数据服务器发送的所述确定的处理节点的标识,向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;
所述处理节点为所述元数据服务器根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息时,根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点;
所述处理节点,用于接收所述客户端发送的所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;根据所述目标编码格式,将所述源文件片段从所述源编码格式转码为所述目标编码格式,生成目标文件片段以及所述生成的目标文件片段的元数据信息;向所述元数据服务器发送所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息。
基于第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述客户端向所述元数据服务器发送转码请求消息之前;
所述客户端,还用于将源文件的起始位置作为第一个源文件片段的起始边界;根据所述源文件中的每一个I帧的顺序,依此计算每一个I帧的指纹特征值,分别将每一个I帧的指纹特征值整数取模得到每一个I帧的模数;将第一个符合预设的切分数值的模数对应I帧确定为第一特征帧,记录所述第一特征帧的偏移位置,将所述第一特征帧的偏移位置作为所述第一个源文件片段的结束边界和第二个源文件片段的起始边界,直至将所述源文件划分为多个源文件片段;分别计算所述多个源文件片段中的每一个源文件片段的哈希值;生成每一个源文件片段的元数据信息,所述每一个源文件片段的元数据信息包括所述每一个源文件片段的位置、长度和哈希值。
本发明通过元数据服务器根据客户端发送的转码请求消息中包括的源文件片段的元数据信息,若能获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;且在获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。从而不需要客户端向处理节点发送源文件,减少了网络IO操作,在客户端与处理节点之间的网络状况较差的情况下,也不会影响视频转码应用性能,提高用户体验度。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中源文件具体指源视频文件,目标文件具体指目标视频文件。
图2为本发明一实施例提供的视频文件处理方法的流程示意图;具体应用于分布式文件系统,如图2所示,本实施例的视频文件处理方法可以包括:
201、元数据服务器接收客户端发送的转码请求消息。
其中,元数据服务器和客户端位于本实施例应用的分布式文件系统中。
其中,所述转码请求消息中包括源文件片段的元数据信息、源编码格式和目标编码格式,所述源编码格式是转码前的编码格式,目标编码格式是转码后的编码格式;
当源视频文件很大时,为了减轻处理节点的转码负担,在本发明的一个可选实施方式中,在步骤201之前,客户端会将源文件进行分段处理,本发明通过对源文件中的每一个I帧计算指纹特征值,根据每一个I帧的指纹特征值,找出指纹特征值符合切分数值的I帧,并将该I帧的位置作为源文件分段的边界。图8为本发明实施例应用的视频文件的格式示意图,如图8所示,视频文件通常由视频文件头、I帧、B帧、P帧等不同类型的帧组成,其中I帧是关键帧,它是帧间压缩编码里的重要帧,解码时仅用I帧的数据就可重构完整图像。
具体实现时:
客户端将源文件的起始位置作为第一个源文件片段的起始边界;
根据所述源文件中的每一个I帧的顺序,依次计算每一个I帧的指纹特征值,具体可以使用rabin指纹算法计算每一个I帧的指纹特征值,至于rabin指纹算法是现有技术的一种指纹算法,本发明对比不做限定,不再赘述。
分别将每一个I帧的指纹特征值整数(例如整数1000)取模得到每一个I帧的模数;
将第一个符合预设的切分数值(例如切分数值618)的模数对应I帧确定为第一特征帧;例如,确定第一I帧的指纹特征值整数取模后的模数是否等于切分数值618,若不是,确定第二I帧的指纹特征值整数取模后的模数是否等于切分数值618,若是,则该第二I帧为第一个符合预设的切分数值的模数,将该第二I帧确定为第一特征帧;
记录所述第一特征帧的偏移位置,将所述第一特征帧的偏移位置作为所述第一个源文件片段的结束边界和第二个源文件片段的起始边界,直至将所述源文件划分为多个源文件片段;
分别计算所述多个源文件片段中的每一个源文件片段的哈希值;具体可以使用SHA-1和/或MD5哈希计算程序计算每一个源文件片段的哈希值,至于SHA-1和/或MD5哈希计算程序为现有技术,不再赘述。
生成每一个源文件片段的元数据信息,其中,所述每一个源文件片段的元数据信息包括但不限于所述每一个源文件片段的位置信息(起始边界和结束边界)、长度和哈希值。
之后,客户端向元数据服务器发送转码请求消息。
202、元数据服务器根据所述源文件片段的元数据信息,是否获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,若是,则执行步骤203,否则执行步骤204。
在现有的分布式文件系统,当不同用户需要通过分布式文件系统的处理节点进行相同的源文件片段的转码处理时,都需要通过客户端将源文件片段上传给处理节点,这样会增加网络IO操作,重复占用分布式文件系统的存储资源和网络带宽。为了减少网络IO操作,本发明实施例中,当不同用户需要通过分布式文件系统的处理节点进行相同的源文件片段的转码处理时,可以通过客户端向元数据服务器发送源文件片段的元数据信息,以使元数据服务器根据源文件片段的元数据信息,确定所述分布式文件系统中是否存在所述源文件片段的元数据信息对应的目标文件片段的元数据信息;
具体地,元数据服务器接收到客户端发送的源文件片段的元数据信息,根据步骤207建立的所述源文件片段的元数据信息与所述目标文件片段的元数据信息之间的对应关系,确定所述分布式文件系统中是否存在所述源文件片段的元数据信息对应的目标文件片段的元数据信息,若存在则获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息。所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式。
203、若所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同,则元数据服务器向所述客户端发送所述目标文件片段的元数据信息。
对应地,客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。具体地,根据所述目标文件片段所在的处理节点的标识,以及所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息,在所述处理节点的标识指向的处理节点中获取所述目标文件片段。
204、元数据服务器根据各处理节点的当前工作状态信息、存储空间状态信息和所述转码后的编码格式,确定对所述源文件进行转码处理的处理节点。
需要说明的是,本实施例应用的分布式文件系统可以包括多个处理节点,举例来说,在确定对所述源文件片段进行转码处理的处理节点之前,元数据服务器定期接收所述各处理节点分别发送的工作状态信息、存储空间状态信息,以及所述各处理节点能够转码的源编码格式和目标编码格式。
假设元数据服务器根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息;则根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点。
进一步地举例来说,元数据服务器根据源文件的元数据信息中包含的源文件的大小,可以确定多个处理节点对所述源文件进行转码处理。具体地,元数据服务器会根据源文件的大小、处理节点的数量、以及各处理节点的工作状态信息、存储空间状态信息等信息,确定各处理节点转码处理的文件大小,例如,尽量使得每个处理节点转码处理的文件大小一致、文件以帧或帧组为界。之后,元数据服务器向所述客户端发送各处理节点标识以及各处理节点转码处理的文件大小。
205、元数据服务器将所述确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式。
对应地,客户端接收元数据服务器发送的处理节点的标识之后,向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式。
需要说明的是,本实施例应用的处理节点包括转码器、存储器,其中,转码器中设置有视频编解码器和音频编解码器,用于对源文件片段进行转码处理,存储器用于保存转码处理后的目标文件片段;
当处理节点接收所述客户端发送的所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式之后,根据所述目标编码格式,将所述源文件片段从所述源编码格式转码为所述目标编码格式,并生成目标文件片段以及所述生成的目标文件片段的元数据信息;
其中,所述目标文件的元数据信息中包括所述目标文件所在的处理节点的标识以及所述目标文件所在处理节点中的存储位置信息和所述目标文件的编码格式。进一步地,所述目标文件片段的元数据信息中换可以包括所述目标文件片段在整个目标文件中的序号以及所述目标文件片段的视频播放时长、播放起始位置、帧数、字节数等信息。
之后,所述处理节点向所述元数据服务器发送所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息。
图3为本发明实施例中应用的元数据信息的一种格式示意图,如图3所示,NodNO为处理节点的序号可以表示处理节点的标识;Offset表示目标文件片段在该处理节点中的存储位置信息;Length为长度,表示目标文件片段的字节数。
图4为本发明实施例中处理节点进行转码处理的过程示意图,如图4所示,处理节点将源文件片段拆分为具体的视频帧和音频帧,再将视频帧、音频帧分别导入到各自的视频编解码器和音频编解码器中,由视频编解码器和音频编解码器处理后,再将编解码处理后的视频帧、音频帧进行排序并合成,输出对应的目标文件片段。之后,处理节点还可以将对应的目标文件片段进一步处理,例如,修改文件头信息、调整帧号、调整帧时序等处理。处理节点在输出对应的目标文件片段之后,可以将对应的目标文件在存储器中进行保存。
206、元数据服务器接收处理节点发送的目标文件片段的元数据信息以及对应的源文件片段的元数据信息。
207、元数据服务器建立所述源文件片段的元数据信息与所述目标文件片段的元数据信息之间的对应关系。
举例来说,元数据服务器可以根据所述各目标文件片段的元数据信息,生成整个目标文件的元数据信息。
进一步地,该元数据服务器还可以根据所述各目标文件片段的元数据信息中包含的对应目标文件片段在整个目标文件中的序号,刷新第一序号对应的目标文件片段的视频头信息。
本发明实施例通过元数据服务器根据客户端发送的转码请求消息中包括的源文件片段的元数据信息,若能获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;且在获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。从而不需要客户端向处理节点发送源文件,减少了网络IO操作,在客户端与处理节点之间的网络状况较差的情况下,也不会影响视频转码应用性能,提高用户体验度。
图5为本发明另一实施例提供的元数据服务器的结构示意图;具体实现时,如图5所示,本实施例提供的元数据服务器,应用于分布式文件系统中,具体包括:
接收模块51,用于接收客户端发送的转码请求消息,所述转码请求消息中包括源文件片段的元数据信息、源编码格式和目标编码格式;
获取模块52,用于根据所述接收模块51接收的源文件片段的元数据信息,获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;
发送模块53,用于在所述获取模块52获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。
举例来说,在所述获取模块52根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息时,所述元数据服务器还包括:
确定模块54,用于根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点;
所述发送模块53,还用于将所述确定模块54确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式。
举例来说,在所述确定模块54确定对所述源文件片段进行转码处理的处理节点之前;
所述接收模块51,还用于定期接收所述各处理节点分别发送的工作状态信息、存储空间状态信息,以及所述各处理节点能够转码的源编码格式和目标编码格式。
举例来说,在所述发送模块53将所述确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式之后;
所述接收模块51,还用于接收所述处理节点发送的所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息,所述生成的目标文件片段的元数据信息为所述处理节点根据所述客户端发送的所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式,将所述源文件片段从所述源编码格式转码为所述目标编码格式,生成目标文件片段以及所述生成的目标文件片段的元数据信息;
还包括:
建立模块55,用于建立所述生成的目标文件片段的元数据信息与所述源文件片段的元数据信息之间的对应关系。
本发明实施例通过元数据服务器根据客户端发送的转码请求消息中包括的源文件片段的元数据信息,若能获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;且在获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。从而不需要客户端向处理节点发送源文件,减少了网络IO操作,在客户端与处理节点之间的网络状况较差的情况下,也不会影响视频转码应用性能,提高用户体验度。
图6为本发明另一实施例提供的分布式文件系统的结构示意图,如图6所示,所述分布式文件系统包括:元数据服务器61、客户端62和处理节点63;
元数据服务器61为如图5或图7所示实施例所述的元数据服务器,详细内容参考图5或图7所示实施例所述的元数据服务器中的相关描述;
所述客户端62,用于向所述元数据服务器61发送转码请求消息,所述转码请求消息中包括源文件片段的元数据信息、所述源编码格式和目标编码格式;
所述客户端62,还用于接收所述元数据服务器61发送的所述目标文件片段的元数据信息,根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段;
所述元数据服务器发送的所述目标文件片段的元数据信息为所述元数据服务器根据客户端发送的转码请求消息中包括源文件片段的元数据信息,获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式,在所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同时,向所述客户端发送的所述目标文件片段的元数据信息。
举例来说,所述处理节点的数量为一个或一个以上;
所述客户端62,还用于在所述元数据服务器根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息时,根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点的基础上,接收所述元数据服务器发送的所述确定的处理节点的标识,向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;
所述处理节点为所述元数据服务器根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息时,根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点;
所述处理节点63,用于接收所述客户端发送的所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;根据所述目标编码格式,将所述源文件片段从所述源编码格式转码为所述目标编码格式,生成目标文件片段以及所述生成的目标文件片段的元数据信息;向所述元数据服务器发送所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息。
举例来说,在所述客户端向所述元数据服务器发送转码请求消息之前;
所述客户端62,还用于将源文件的起始位置作为第一个源文件片段的起始边界;根据所述源文件中的每一个I帧的顺序,依此计算每一个I帧的指纹特征值,分别将每一个I帧的指纹特征值整数取模得到每一个I帧的模数;将第一个符合预设的切分数值的模数对应I帧确定为第一特征帧,记录所述第一特征帧的偏移位置,将所述第一特征帧的偏移位置作为所述第一个源文件片段的结束边界和第二个源文件片段的起始边界,直至将所述源文件划分为多个源文件片段;分别计算所述多个源文件片段中的每一个源文件片段的哈希值;生成每一个源文件片段的元数据信息,所述每一个源文件片段的元数据信息包括所述每一个源文件片段的位置信息、长度和哈希值。
需要说明的是,本实施例所述的分布式文件系统例如可以采用网络文件系统(NetworkFileSystem,简称NFS)或通用Internet文件系统(CommonInternetFileSystem,简称CIFS)或私有协议。其中,用户登录分布式文件系统之后,可以利用客户端通过NFS、CIFS或私有协议对分布式文件系统中的文件进行读、写、删除等操作。
本发明实施例通过元数据服务器根据客户端发送的转码请求消息中包括的源文件片段的元数据信息,若能获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;且在获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。从而不需要客户端向处理节点发送源文件,减少了网络IO操作,在客户端与处理节点之间的网络状况较差的情况下,也不会影响视频转码应用性能,提高用户体验度。
图7为本发明另一实施例提供一种元数据服务器的结构示意图,具体应用于分布式文件系统,如图7所示,该元数据服务器具体包括处理器、存储器和通信总线,处理器通过通信总线与存储器连接,其中,存储器中包括本实施例所述的实现视频文件处理方法的指令,进一步地,该元数据服务器还包括通信接口,通过通信接口与其他网元设备(例如客户端和处理节点)进行通信。
当处理器调取存储器中的指令时,该处理器执行如下步骤:
接收客户端发送的转码请求消息,所述转码请求消息中包括源文件片段的元数据信息、源编码格式和目标编码格式;
根据所述源文件片段的元数据信息,获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;
若所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同,则向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。
举例来说,接收客户端发送的转码请求消息之后,还包括:
根据所述源文件片段的元数据信息,获取不到与所述源文件片段的元数据信息对应的目标文件片段的元数据信息;
根据各处理节点的工作状态信息、存储空间状态信息、各处理节点能够转码的源编码格式和目标编码格式,以及根据所述转码请求消息中包括的源编码格式和目标编码格式,确定对所述源文件片段进行转码处理的处理节点;
将所述确定的处理节点的标识发送给所述客户端,以使所述客户端向所述处理节点的标识指向的处理节点发送所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;以使所述处理节点根据所述客户端发送的所述源文件片段、所述源文件片段的元数据信息、所述源编码格式和所述目标编码格式;将所述源文件片段从所述源编码格式转码为所述目标编码格式,生成目标文件片段以及所述生成的目标文件片段的元数据信息;并向所述元数据服务器发送所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息。
举例来说,所述确定对所述源文件片段进行转码处理的处理节点之前,还包括:
定期接收所述各处理节点分别发送的工作状态信息、存储空间状态信息,以及所述各处理节点能够转码的源编码格式和目标编码格式。
举例来说,在所述处理节点向所述元数据服务器发送所述生成的目标文件的元数据信息以及对应的所述源文件片段的元数据信息之后,包括:
接收所述处理节点发送的所述生成的目标文件片段的元数据信息以及对应的所述源文件片段的元数据信息;
建立所述生成的目标文件片段的元数据信息与所述源文件片段的元数据信息之间的对应关系。
举例来说,接收客户端发送的转码请求消息之前,包括:
所述客户端将源文件的起始位置作为第一个源文件片段的起始边界;根据所述源文件中的每一个I帧的顺序,依此计算每一个I帧的指纹特征值,分别将每一个I帧的指纹特征值整数取模得到每一个I帧的模数;将第一个符合预设的切分数值的模数对应的I帧确定为第一特征帧,记录所述第一特征帧的偏移位置,将所述第一特征帧的偏移位置作为所述第一个源文件片段的结束边界和第二个源文件片段的起始边界,直至将所述源文件划分为多个源文件片段;
所述客户端分别计算所述多个源文件片段中的每一个源文件片段的哈希值;
生成每一个源文件片段的元数据信息,所述每一个源文件片段的元数据信息包括所述每一个源文件片段的位置信息、长度和哈希值。
本发明实施例通过元数据服务器根据客户端发送的转码请求消息中包括的源文件片段的元数据信息,若能获取与所述源文件片段的元数据信息对应的目标文件片段的元数据信息,所述目标文件片段的元数据信息中包括所述目标文件片段所在的处理节点的标识、所述目标文件片段在所述处理节点的标识指向的处理节点中的存储位置信息和所述目标文件片段的编码格式;且在获取的所述目标文件片段的编码格式与所述转码请求消息中包括的目标编码格式相同的基础上,向所述客户端发送所述目标文件片段的元数据信息,以使所述客户端根据所述目标文件片段的元数据信息,获取所述目标文件片段的元数据信息对应的目标文件片段。从而不需要客户端向处理节点发送源文件,减少了网络IO操作,在客户端与处理节点之间的网络状况较差的情况下,也不会影响视频转码应用性能,提高用户体验度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。