视频文件切割方法及装置
技术领域
本公开涉及多媒体技术领域,尤其涉及一种视频文件切割方法及装置。
背景技术
随着大数据(big data)的不断发展,适用于大数据处理框架的视频分割技术也需随之壮大。但是,传统视频文件切割工具对视频大小的控制比较粗,无法精确到帧级别;对原视频文件头容错的能力较弱,例如海康视频文件初始部分的乱码问题;对分割后输出视频文件编码格式的控制接口较少,难以满足特殊应用开发的需要。
发明内容
有鉴于此,本公开提出了一种视频文件切割方法及装置。
根据本公开的一方面,提供了一种视频文件切割方法,包括:获取分割参数,所述分割参数包括预期分割帧数和预期分割份数;获取视频文件,并估算所述视频文件的总帧数;根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略;根据所述分割策略分割所述视频文件。
在一种可能的实现方式中,根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略,包括:在所述总帧数小于或等于所述预期分割帧数的情况下,不分割所述视频文件。
在一种可能的实现方式中,根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略,包括:在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值大于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述预期分割份数。
在一种可能的实现方式中,根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略,还包括:在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值小于或等于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述比值。
在一种可能的实现方式中,在分割获得的最后一个文件的剩余帧数小于所述预期分割帧数的情况下,在最后一个文件中容纳所述剩余帧数,不做补全操作。
根据本公开的另一方面,提供了一种视频文件切割装置,其特征在于,包括:参数获取模块,用于获取分割参数,所述分割参数包括预期分割帧数和预期分割份数;视频获取模块,用于获取视频文件,并估算所述视频文件的总帧数;策略确定模块,用于根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略;视频分割模块,用于根据所述分割策略分割所述视频文件。
在一种可能的实现方式中,所述策略确定模块包括:第一策略子模块,用于在所述总帧数小于或等于所述预期分割帧数的情况下,不分割所述视频文件。
在一种可能的实现方式中,所述策略确定模块还包括:第二策略子模块,用于在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值大于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述预期分割份数。
在一种可能的实现方式中,所述策略确定模块还包括:第三策略子模块,用于在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值小于或等于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述比值。
在一种可能的实现方式中,所述视频分割模块包括:第一分割子模块,用于在分割获得的最后一个文件的剩余帧数小于所述预期分割帧数的情况下,在最后一个文件中容纳所述剩余帧数,不做补全操作。
根据本公开的又一方面,提供了一种视频文件切割装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
参数获取模块,用于获取分割参数,所述分割参数包括预期分割帧数和预期分割份数;视频获取模块,用于获取视频文件,并估算所述视频文件的总帧数;策略确定模块,用于根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略;视频分割模块,用于根据所述分割策略分割所述视频文件。
根据本公开的再一方面,提供了一种非易失性计算机可读存储介质,当所述存储介质中的指令由终端和/或服务器的处理器执行时,使得终端和/或服务器能够执行一种视频文件切割方法,所述方法包括:获取分割参数,所述分割参数包括预期分割帧数和预期分割份数;获取视频文件,并估算所述视频文件的总帧数;根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略;根据所述分割策略分割所述视频文件。
通过本公开提供的视频文件切割方法和装置,采用非机械方式切割视频文件,根据视频文件预期分割帧数大小和预期分割份数等智能选择分割策略,对视频文件的切割精确到帧的细粒度,且切割方法适用范围广,容错能力强。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的一种视频文件切割方法的流程图;
图2示出根据本公开另一实施例的一种视频文件切割方法的系统架构图;
图3示出根据本公开另一实施例的一种视频文件切割方法的流程图;
图4示出根据本公开一实施例的一种视频文件切割装置的框图;
图5示出根据本公开一实施例的一种视频文件切割装置的又一框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
实施例1
图1示出根据本公开一实施例的一种视频文件切割方法的流程图。如图1所示,该方法包括步骤11至步骤14。
步骤11,获取分割参数,所述分割参数包括预期分割帧数和预期分割份数。
在本实施例中,分割参数还可以包括输入视频文件绝对路径、视频文件处理帧偏移量、输出视频文件绝对路径等。其中,根据输入视频文件绝对路径可以获取视频文件,根据输出视频文件绝对路径可以确定分割后的视频的存储位置。
步骤12,获取视频文件,并估算所述视频文件的总帧数。
在本实施例中,可以根据输入视频文件绝对路径获取视频文件。获取的视频文件可以是MP4(Moving Picture Experts Group 4,动态图像专家组)、MOV(即QuickTime影片格式,Apple公司开发的一种音频、视频文件格式)、AVI(Audio Video Interleaved,音频视频交错格式)等采用H.264(高度压缩数字视频编解码器标准)编码的文件。
在估算视频文件的总帧数的过程中,还需确认视频文件的头文件是否可读。若无法读取视频文件的头文件,则尝试使用不同的编码方式对视频文件进行解码。若能正确解码出视频图像,则按当前解码方式进行预读取,估算获得视频文件的总帧数。若确认视频文件的头文件可读,则直接估算视频文件的总帧数。
步骤13,根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略。
在一种可能的实现方式中,根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略(步骤13),可以包括多种实现方式如下:
方式一、在所述总帧数小于或等于所述预期分割帧数的情况下,不分割所述视频文件。
方式二、在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值大于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述预期分割份数。
方式三、在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值小于或等于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述比值。
步骤14,根据所述分割策略分割所述视频文件。
在本实施例中,视频分割优先判断视频头文件的可读性,获取编码方式,然后选择对应的解码器解码,分割处理后的视频文件,支持多种MPEG(Moving Picture ExpertsGroup,动态图像专家组)编码。在进行视频文件分割的过程中,由于视频文件的总帧数是个估算值,为防止视频文件读取时边界溢出,分割过程中对视频文件包含的实际帧数进行实时统计,精确计算每个分割后视频文件的帧数。分割后的视频文件可满足MapReduce(一种编程模型,用于大规模数据集(大于1TB)的并行运算)等计算框架对流媒体数据分割的需求。
在一种可能的实现方式中,所述根据所述分割策略分割所述视频文件,包括:在分割获得的最后一个文件的剩余帧数小于所述预期分割帧数的情况下,在最后一个文件中容纳所述剩余帧数,不做补全操作。
需要说明的是,上述方法同样适用于视频流的切割,其具体分割过程与视频文件相同,亦可根据视频流的特征对方法步骤进行适当的修改,本公开不予限制。
本公开实施例所提供的方法,采用非机械方式切割视频文件,根据视频文件预期分割帧数大小和预期分割份数等智能选择分割策略,对视频文件的切割精确到帧的细粒度,且切割方法适用范围广,容错能力强。并且,适用于流媒体数据处理、视频数据分割与并行计算、智慧城市数据中心建设等多种领域,可实现对多种格式的视频文件或视频流的自动切割与编码转换。进一步地,所获得的分割后的视频文件或视频流可满足MapReduce等计算框架对流媒体数据分割的需求。此外,便于大数据平台实现数据的分发和多处理任务的调度,从而实现视频流媒体数据的高效处理与分析。
需要说明的是,尽管以上述实施例1作为示例介绍了视频文件切割方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定相关方法步骤,只要符合技术方案的设计思路即可。
实施例2
为了更好的描述本公开实施例提供的视频文件切割方法,下面通过上述方法的系统架构图,对本公开实施例的视频文件切割方法进行整体思路上的描述,图2示出根据本公开另一实施例的一种视频文件切割方法的系统架构图,如图2所示,在该系统架构中,该视频文件切割方法可以包括:
读入参数及视频文件:读入包括预期分割帧数和预期分割份数等的分割参数(02);获取视频文件/流,即视频文件或视频流(01)。
根据视频分割算法计算分割策略:估算视频文件/流的总帧数,而后以预先设计的视频分割算法为基础,根据总帧数、预期分割帧数和预期分割份数,确定分割策略(03)。
根据分割策略分割视频文件:根据获得的分割策略将视频文件/流分割为至少一个小视频文件并存储(04)。
图3示出根据本公开另一实施例的一种视频文件切割方法的流程图。如图3所示,该方法包括步骤21至步骤27。
步骤21,参数读入。获取并读入输入视频文件绝对路径、期望视频文件帧数、期望视频文件份数、视频文件处理帧偏移量、输出视频文件绝对路径等参数。
步骤22,参数检查。检查步骤21中读入的参数是否合理,并初始化各参数。参数是否合理可以包括输入视频文件绝对路径是否真实有效等。
步骤23,视频读入。根据输入视频文件绝对路径视频读入视频文件。在本实施例中,支持MP4、MOV、AVI等采用H264编码的视频文件的读入。
步骤24,总帧数计算。对读入的视频文件的总帧数进行估算。首先,确认读入的视频文件的头文件的可读性,在头文件可读的情况下,直接估算视频文件的总帧数。在无法读取视频文件的头文件的情况下,尝试使用不同的编码方式对视频文件进行解码。若能正确解码出视频图像,则按当前解码方式进行预读取,进而估算视频文件的总帧数。需要说明的是,估算获得的总帧数的误差在25帧以内。
步骤25,计算分割策略。根据输入的参数中的预期分割帧数和分预期割份数以及估算的视频文件的总帧数,确定视频文件分割策略。其中,预期分割帧数比预期分割份数拥有相对更高的优先级。假设视频总帧数为A,预期分割帧数为E、预期分割份数为C,那么实际分割份数N的计算方式可以为:
如果A≤E,则N=1,即不分割。
如果A>E,且A/E>C,则令N=C。
如果A>E,且A/E≤C,则N=A/E。
该计算方式仅为一种示例,在实际应用中,也可以采用其他方式进行计算。
步骤26,视频分割,根据获得的分割策略对视频文件进行分割。视频分割优先判断视频头文件的可读性,获取编码方式,然后选择对应的解码器解码。由于视频文件的总帧数是个估算值,为防止视频文件读取时边界溢出,分割过程中对视频包含的实际帧数进行实时统计,精确计算每个分割后视频文件的帧数。并且,在获得的最后一个视频文件中,如果其剩余帧数小于期望视频文件帧数的情况下,则容纳剩余帧数,不做补全操作。
步骤27,视频保存,根据输出视频文件绝对路径将分割后的视频文件进行保存。需要说明的是,分割后的视频文件支持XVID(基于OpenDivX编写的MPEG-4视频编解码器)、MPEG等编码格式。
本公开实施例所提供的方法,采用非机械方式切割视频文件,根据视频文件预期分割帧数大小和预期分割份数等智能选择分割策略,对视频文件的切割精确到帧的细粒度,且切割方法适用范围广,容错能力强。并且,适用于流媒体数据处理、视频数据分割与并行计算、智慧城市数据中心建设等多种领域,可实现对多种格式的视频文件或视频流的自动切割与编码转换。进一步地,所获得的分割后的视频文件或视频流可满足MapReduce等计算框架对流媒体数据分割的需求。此外,便于大数据平台实现数据的分发和多处理任务的调度,从而实现视频流媒体数据的高效处理与分析。
需要说明的是,尽管以上述实施例2作为示例介绍了视频文件切割方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定相关方法步骤,只要符合技术方案的设计思路即可。
实施例3
基于上述视频文件切割方法,本公开提供一种视频文件切割装置。图3示出根据本公开一实施例的一种视频文件切割装置的框图。如图3所示,该装置包括:
参数获取模块301,用于获取分割参数,所述分割参数包括预期分割帧数和预期分割份数。
视频获取模块302,用于获取视频文件,并估算所述视频文件的总帧数。
策略确定模块303,用于根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略。
视频分割模块304,用于根据所述分割策略分割所述视频文件。
基于图3,图4示出根据本公开一实施例的一种视频文件的切割装置的又一框图。
在一种可能的实现方式中,如图4所示,策略确定模块303包括:
第一策略子模块3031,用于在所述总帧数小于或等于所述预期分割帧数的情况下,不分割所述视频文件。
在一种可能的实现方式中,如图4所示,策略确定模块303还包括:
第二策略子模块3032,用于在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值大于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述预期分割份数。
在一种可能的实现方式中,如图4所示,策略确定模块303还包括:
第三策略子模块3033,用于在所述总帧数大于所述预期分割帧数的情况下,比较所述总帧数除以所述预期分割帧数所得到的比值与所述预期分割份数的大小;以及在所述比值小于或等于所述预期分割份数的情况下,将所述视频文件的实际分割份数确定为所述比值。
在一种可能的实现方式中,如图4所示,上述视频分割模块304还包括:第一分割子模块3041,用于在分割获得的最后一个文件的剩余帧数小于所述预期分割帧数的情况下,在最后一个文件中容纳所述剩余帧数,不做补全操作。
需要说明的是,尽管以上述实施例3作为示例介绍了视频文件切割装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定相关模块,只要符合技术方案的设计思路即可。
本公开实施例所提供的装置,采用非机械方式切割视频文件,根据视频文件预期分割帧数大小和预期分割份数等智能选择分割策略,对视频文件的切割精确到帧的细粒度,且切割方法适用范围广,容错能力强。并且,适用于流媒体数据处理、视频数据分割与并行计算、智慧城市数据中心建设等多种领域,可实现对多种格式的视频文件或视频流的自动切割与编码转换;所获得的分割后的视频文件或视频流可满足MapReduce等计算框架对流媒体数据分割的需求;便于大数据平台实现数据的分发和多处理任务的调度,从而实现视频流媒体数据的高效处理与分析。
基于上述视频文件切割方法及装置,本公开提供一种视频文件切割装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
参数获取模块,用于获取分割参数,所述分割参数包括预期分割帧数和预期分割份数;视频获取模块,用于获取视频文件,并估算所述视频文件的总帧数;策略确定模块,用于根据所述总帧数、所述预期分割帧数和所述预期分割份数确定分割策略;视频分割模块,用于根据所述分割策略分割所述视频文件。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。