基于画面组对视频文件进行转码的方法及系统与流程

文档序号:12479149阅读:293来源:国知局
基于画面组对视频文件进行转码的方法及系统与流程

本发明涉及对视频文件进行转码的技术领域,更具体地,涉及一种基于画面组对视频文件进行转码的方法及系统。



背景技术:

视频转码(Video Transcoding)是指将已经压缩编码的视频文件转换成另一个格式的视频文件,以适应不同的网络带宽、不同的终端处理能力或者不同的用户对视频格式的需求。视频转码本质上是一个先解码再编码的过程,将原始的视频文件解码后按照需求编码成需要视频文件格式的过程,因此,视频转码前后的码流文件可能遵循相同的视频编码标准,也可能不遵循相同的视频文件编码标准。

在视频文件转码过程中,若直接将整个视频文件从头至尾进行转码需要花费很长的转码时间,而且转码前后的视频文件太大,也不便于传输,也就不便于用户下载视频文件进行及时观看。目前,现有技术中采用将视频文件切成小的视频文件片段后,将每一片视频文件片段进行转码、传输,最后在用户端进行组合播放,以此种方案提升了视频文件的转码效率。

但是,在实际中播放视频文件时是基于画面组(GOP)进行播放的。画面组(Group of Pictures,简称GOP),又称策略影响编码质量,在视频文件中,两个关键帧之间即为一个GOP,每个GOP都是一组连续的画面。现有技术将视频文件分片转码的方式,在分片过程中切片位置会刚好落在某个画面组中间,而视频文件编码又是基于关键帧进行的,如此,会造成分片转码时因为该画面组不全而丢失对该画面组的转码,导致转码后的视频文件缺失该画面组,最终组合播放转码后的视频文件时产生画面跳跃的问题。

因此,提供一种基于画面组对视频文件进行转码的方案是本领域亟待解决的问题。



技术实现要素:

有鉴于此,本发明提供了一种基于画面组对视频文件进行转码的方法及系统,解决了现有技术中对视频文件进行分片转码产生画面跳跃的技术问题。

为了解决上述技术问题,本发明提出一种基于画面组对视频文件进行转码的方法,包括:

在视频转码设备上,设置根据所述视频转码设备上空闲转码器的数量,从所述视频转码设备的缓存中获取对应数量的待转码画面组分片;

从所述视频转码设备本地获取待转码的视频文件、转码格式及所述视频转码设备上所述空闲转码器的数量;

将所述待转码的视频文件解码得到视频流文件,从所述视频流文件中识别出每个画面组,基于所述画面组将所述待转码的视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中;

根据所述空闲转码器的数量及编号顺序获取待转码的所述画面组分片,将获取到的待转码的所述画面组分片分配至所述空闲转码器,所述空闲转码器根据所述转码格式对分配到的所述画面组分片进行转码,并将转码后得到的画面组分片按所述编号顺序组合成转码后的视频文件。

进一步地,其中,将所述待转码的视频文件解码得到视频流文件,从所述视频流文件中识别出每个画面组,基于所述画面组将所述待转码的视频文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中,进一步为:

将所述待转码的视频文件解码得到视频流文件,识别出所述视频流文件中的关键帧;

以所述视频流文件中相邻关键帧之间的所有视频帧作为一个画面组,将所述视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

进一步地,其中,从所述视频转码设备本地获取待转码的视频文件、转码格式及所述视频转码设备上所述空闲转码器的数量,进一步为:

从所述视频转码设备本地获取待转码的视频文件及转码格式;通过转码器数量获取函数从所述视频转码设备本地获取所述视频转码设备上所有的转码器信息,并检测所述转码器信息得到空闲转码器的数量。

进一步地,其中,通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,并检测所述转码器信息得到空闲转码器的数量,进一步为:

通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,根据所述转码器信息检测各个转码器的运行状态,同时接收各个转码器的转码完成状态信息,并根据各个转码器的运行状态及所述转码完成状态信息得到空闲转码器的数量。

进一步地,其中,该方法还包括:将转码后的画面组分片传输至对等网络中。

另一方面,本发明还提供一种基于画面组对视频文件进行转码的系统,包括:转码设置模块、获取模块、画面组分片模块及视频转码模块;其中,

所述转码设置模块,用于在视频转码设备上,设置按所述视频转码设备上空闲转码器的数量,从所述视频转码设备的缓存中获取对应数量的待转码的画面组分片;

所述获取模块,用于从所述视频转码设备本地获取待转码的视频文件、转码格式及所述视频转码设备上空闲转码器的数量;

所述画面组分片模块,用于将所述待转码的视频文件解码得到视频流文件,从所述视频流文件中识别出每个画面组,基于所述画面组将所述待转码的视频流文件切分成所述画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中;

所述视频转码模块,用于根据所述空闲转码器的数量及编号顺序获取待转码的所述画面组分片,将获取到的待转码的所述画面组分片分配至所述空闲转码器,所述空闲转码器根据所述转码格式对分配到的所述画面组分片进行转码,并将转码后得到的画面组分片按所述编号顺序组合成转码后的视频文件。

进一步地,其中,所述画面组分片模块,进一步用于:

将所述待转码的视频文件解码得到视频流文件,识别出所述视频流文件中的关键帧;

以所述视频流文件中相邻关键帧之间的所有视频帧作为一个画面组,将所述视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

进一步地,其中,所述获取模块,进一步用于:

从所述视频转码设备本地获取待转码的视频文件及转码格式;

通过转码器数量获取函数从所述视频转码设备本地获取所述视频转码设备上所有的转码器信息,并检测所述转码器信息得到空闲转码器的数量。

进一步地,其中,所述获取模块,进一步用于:

通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,根据所述转码器信息检测各个转码器的运行状态,同时接收各个转码器的转码完成状态信息,并根据各个转码器的运行状态及所述转码完成状态信息得到空闲转码器的数量。

进一步地,其中,该系统还包括:画面组分片传输模块,用于将转码后的画面组分片传输至对等网络中。

与现有技术相比,本发明的基于画面组对视频文件进行转码的方法及系统,实现了如下的有益效果:

(1)本发明所述的基于画面组对视频文件进行转码的方法及系统,基于视频文件的画面组进行分片,并按照预定的转码策略对每个画面组分片进行转码后在用户端进行组合播放,在视频文件转码过程中不会造成画面组丢失的情况,也就能够保证在播放完整视频文件而不产生画面跳跃的问题。

(2)本发明所述的基于画面组对视频文件进行转码的方法及系统,基于视频文件的画面组进行分片,同时获取转码设备上现有的转码器数量,并向转码设备上的转码器分配画面组文件进行并行转码,进一步提升了视频文件转码的效率。

(3)本发明所述的基于画面组对视频文件进行转码的方法及系统,基于视频文件的画面组进行分片并行转码后,将转码后的视频文件分片通过对等网络(P2P)进行传输,进一步提升了视频文件转码传输至用户的效率,提升了用户使用体验。

当然,实施本发明的任一产品必不特定需要同时达到以上所述的所有技术效果。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1为本发明实施例1中所述基于画面组对视频文件进行转码的方法的流程示意图;

图2为本发明实施例2中所述基于画面组对视频文件进行转码的方法的流程示意图;

图3为本发明实施例2中所述基于画面组对视频文件进行转码的方法中数据流向示意图;

图4为本发明实施例3中所述基于画面组对视频文件进行转码的方法的流程示意图;

图5为本发明实施例4中所述基于画面组对视频文件进行转码的系统结构意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

实施例1

如图1所示,为本实施例中所述基于画面组对视频文件进行转码的方法的流程示意图。在本实施例中,基于画面组对视频文件进行分片后,对每个画面组分片进行转码,再组合转码后的视频文件分片进行播放,既保证了播放视频的完整性,又提升了视频文件转码的效率。本实施例中所述基于画面组对视频文件进行转码的方法的步骤如下:

步骤101、在视频转码设备上,设置根据所述视频转码设备上空闲转码器的数量,从所述视频转码设备的缓存中获取对应数量的待转码画面组分片。

在视频转码设备上可以有多个转码器(所述转码器可以是基于所述转码设备上CPU的转码器),如果仅仅通过一个转码器对待转码的视频文件进行转码,会造成转码效率低且转码器压力大的问题。在所述视频转码设备上设置利用所述视频转码设备上现有数量的转码器对待转码的画面组进行并行转码(基于所述转码设备上多个CPU)有利于提升视频转码的效率,同时以分压的形式降低了所述转码器的压力。

步骤102、从所述视频转码设备本地获取待转码的视频文件、转码格式及所述视频转码设备上所述空闲转码器的数量。

当用户需要对视频文件进行转码时,会通过生成转码请求将待转码的视频文件信息以及包括有转码策略信息的转码格式发送至所述视频转码设备。所述视频转码设备根据所述转码请求中包括的信息从存储所述待转码的视频文件的服务器中获取该待转码的视频文件存储在所述视频转码设备本地,以便进行转码后反馈至用户。而在所述视频转码设备上的空闲转码器的数量是进行并行转码的画面组分片分配的基础,调用所述视频转码设备上所有的空闲转码器进行并行转码能有效地提升视频文件的转码效率。

步骤103、将所述待转码的视频文件解码得到视频流文件,从所述视频流文件中识别出每个画面组,基于所述画面组将所述待转码的视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

在所述视频转码设备上获取所述待转码的视频文件后,先进行解复用,解复用的作用就是从视频文件的音视频信号源中分离出不同的音频流和视频流,步骤如下:判断视频文件格式是否支持;提取视频流的头信息,如视频的长宽、音频的声道样本数等;读取压缩的数据流并在解码器中进行解码,最后提取出视频流和音频流数据包并对数据包进行解码,以便按照用户需求格式对解码后的视频流和音频流数据包进行重新编码实现转码。将所述视频文件按画面组分片后进行转码有利于提高转码效率。而对切分后的所述画面组分片顺序编号有利于按照原始视频播放顺序进行转码播放,不会打乱视频播放顺序。

步骤104、根据所述空闲转码器的数量及编号顺序获取待转码的所述画面组分片,将获取到的待转码的所述画面组分片分配至所述空闲转码器,所述空闲转码器根据所述转码格式对分配到的所述画面组分片进行转码,并将转码后得到的画面组分片按所述编号顺序组合成转码后的视频文件。

所述视频转码设备上的转码器可以是CPU,还可以是其它的编码器。本步骤中根据转码器的数量按所述编号顺序对待转码的所述画面组分片进行并行转码。例如,所述视频转码设备上有n个转码器,所述待转码的所述画面组分片有m个,当m小于等于n时,将所述m个待转码的所述画面组分片分配至所述转码器进行转码;当m大于n时,获取前n个画面组分片分配至所述转码器进行转码,若其中的某个转码器完成当前画面组分片的转码后,在剩下的未转码的画面组分片中按编码顺序继续获取下一画面组分片进行转码直至完成所有的画面组分片转码。

所有画面组分片都转码结束后,先将完成转码的画面组分片按照编号存入所述视频转码设备的内存缓冲区中,当完成转码的画面组分片装满所述内存缓冲区后,则将缓冲区中完成转码的画面组分片写入到转码后的视频流文件中并清空缓冲区,再继续接收后续完成转码的画面组分片,直到完成全部画面组分片的转码。

按照所述转码格式转码后的所述画面组分片都是符合用户需求的、完整且连续的转码画面组分片,按照原画面组分片的编号顺序组合即可得到连贯、完整的转码后的视频文件。

在本实施例中,基于视频文件的画面组进行分片,并按照预定的转码策略对每个画面组分片进行转码后在用户端进行组合播放,在视频文件转码过程中不会造成画面组丢失的情况,也就能够保证在播放完整视频文件而不产生画面跳跃的问题。

实施例2

如图2所示,为所述基于画面组对视频文件进行转码的方法的流程示意图。本实施例在实施例1的基础上描述了根据关键帧对待转码视频文件进行分片及传输转码后视频文件的具体内容,步骤如下:

步骤201、在视频转码设备上,设置根据所述视频转码设备上空闲转码器的数量,从所述视频转码设备的缓存中获取对应数量的待转码画面组分片。

步骤202、从所述视频转码设备本地获取待转码的视频文件及转码格式。

步骤203、通过所述视频转码设备中系统提供的转码器数量获取函数从所述视频转码设备本地获取所述视频转码设备上所有的转码器信息,并检测所述转码器信息得到空闲转码器的数量。所述转码器信息中包括有该转码器的编号、型号等信息。

优选地,通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,根据所述转码器信息检测各个转码器的运行状态,同时接收各个转码器的转码完成状态信息,并根据各个转码器的运行状态及所述转码完成状态信息得到空闲转码器的数量。

步骤204、将所述待转码的视频文件解码得到视频流文件,识别出所述视频流文件中的关键帧。

步骤205、以所述视频流文件中相邻关键帧之间的所有视频帧作为一个画面组,将所述视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

优选地,通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,根据所述转码器信息检测各个转码器的运行状态,同时接收各个转码器的转码完成状态信息,并根据各个转码器的运行状态及所述转码完成状态信息得到空闲转码器的数量。

更优选地,先逐帧搜索识别出所述待转码视频文件中的第一个关键帧(即I帧),然后继续逐帧搜索找到下一个I帧,将所述第一个I帧到下一个I帧之间的所有帧组成一个画面组(GOP),并根据解析出GOP的顺序对每个GOP进行编号。

步骤206、根据所述空闲转码器的数量及编号顺序获取待转码的所述画面组分片,将获取到的待转码的所述画面组分片分配至所述空闲转码器。

步骤207、所述空闲转码器根据所述转码格式对分配到的所述画面组分片进行转码。

步骤208、将转码后的画面组分片传输至对等网络(P2P)中,另一方面将转码后得到的画面组分片按所述编号顺序组合成转码后的视频文件保存到所述视频转码设备本地。

用户通过所述对等网络接收所述转码后的画面组分片,并按所述编号组合成完整的转码视频文件进行播放。其中,本实施例中所述的转码视频文件包括:完成转码的视频流及音频流文件。

如图3所示,为本实施例所述基于画面组对视频文件进行转码的方法中数据流向示意图。在图3中,待转码视频文件301包括:带转码视频流311及待转码音频流312,所述待转码视频文件301经过顺序分片后产生包括有画面组分片1、画面组分片2、画面组分片3……画面组分片n的画面组分片302,经过所述画面组分片分配模块303分配至视频转码设备上的转码器304(包括视频转码设备上的转码器:转码器1、转码器2至转码器m)进行转码后生成转码后的画面组分片305(包括与所述画面组分片302相对应的转码后的画面组分片1、转码后的画面组分片2至转码后的画面组分片n),最后将所述转码后的画面组分片305组合成转码后的视频文件(包括:转码后的视频流361及转码后的音频流362)。

在本实施例中,基于视频文件的画面组进行分片并行转码后,将转码后的视频文件分片通过对等网络(P2P)进行传输,进一步提升了视频文件转码传输至用户的效率,提升了用户使用体验。

实施例3

如图4所示,为本实施例所述基于画面组对视频文件进行转码的方法的流程示意图。本实施例为本发明所述基于画面组对视频文件进行转码的方法的一个应用实施例,步骤如下:

步骤401、用户向视频转码设备发送对视频文件进行转码的转码请求,所述转码请求中包括:待转码的视频文件信息及转码格式。

步骤402、所述视频转码设备根据所述转码请求获取转码格式,并从存储待转码的视频文件的设备上获取待转码的视频文件保存至本地。

步骤403、通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,根据所述转码器信息检测各个转码器的运行状态,同时接收各个转码器的转码完成状态信息,并根据各个转码器的运行状态及所述转码完成状态信息得到空闲转码器的数量。

在所述转码器上设置完成对当前画面组分片的转码时便向所述视频转码设备发送转码完成状态信息,使得可以持续利用所述视频转码设备上的空闲转码器并行地进行画面组分片转码操作。

步骤404、将所述待转码的视频文件解码得到视频流文件,识别出所述视频流文件中的关键帧。

步骤405、以所述视频流文件中相邻关键帧之间的所有视频帧作为一个画面组,将所述视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

步骤406、根据所述空闲转码器的数量及编号顺序获取待转码的所述画面组分片,将获取到的待转码的所述画面组分片分配至所述空闲转码器。

步骤407、所述空闲转码器根据所述转码格式对分配到的所述画面组分片进行转码。

步骤408、将转码后的画面组分片传输一份至对等网络(P2P)中。由于所述画面组分片是将相邻关键帧之间的所有帧作为一个画面组进行切分的,每个画面组分片都可以在用户端进行播放,故通过P2P传输所述画面组分片可以实现在用户边下载边播放转码后的画面组分片。

步骤409、将转码后得到的画面组分片按所述编号顺序组合成转码后的视频文件保存到所述视频转码设备本地。

步骤410、用户从所述对等网络(P2P)中按编码顺序获取所述转码后的画面组分片进行顺序播放。

优选地,在本步骤中,用户也可以通过所述对等网络(P2P)中获取所述转码后的画面组分片后,按照编码顺序组合中完整的转码后视频文件进行播放。

实施例4

如图5所示,为本实施例所述基于画面组对视频文件进行转码的系统的结构示意图,该系统用于实现上述实施例中所述基于画面组对视频文件进行转码的方法。本实施例所述基于画面组对视频文件进行转码的系统包括:转码设置模块501、获取模块502、画面组分片模块503及转码模块504。

所述转码设置模块501与所述转码模块504相藕接,用于在视频转码设备上,设置按所述视频转码设备上空闲转码器的数量,从所述视频转码设备的缓存中获取对应数量的待转码的画面组分片。

所述获取模块502与所述画面组分片模块503相藕接,用于从所述视频转码设备本地获取待转码的视频文件、转码格式及所述视频转码设备上空闲转码器的数量。

所述画面组分片模块503与所述获取模块502及转码模块504相藕接,用于将所述待转码的视频文件解码得到视频流文件,从所述视频流文件中识别出每个画面组,基于所述画面组将所述待转码的视频流文件切分成所述画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

所述视频转码模块504与所述转码设置模块501及画面组分片模块503,用于根据所述空闲转码器的数量及编号顺序获取待转码的所述画面组分片,将获取到的待转码的所述画面组分片分配至所述空闲转码器,所述空闲转码器根据所述转码格式对分配到的所述画面组分片进行转码,并将转码后得到的画面组分片按所述编号顺序组合成转码后的视频文件。

进一步地,其中,所述画面组分片模块503用于:

将所述待转码的视频文件解码得到视频流文件,识别出所述视频流文件中的关键帧;以所述视频流文件中相邻关键帧之间的所有视频帧作为一个画面组,将所述视频流文件切分成画面组分片,并将所述画面组分片顺序编号后保存至所述视频转码设备的缓存中。

进一步地,其中,所述获取模块502用于:从所述视频转码设备本地获取待转码的视频文件及转码格式;通过转码器数量获取函数从所述视频转码设备本地获取所述视频转码设备上所有的转码器信息,并检测所述转码器信息得到空闲转码器的数量。

优选地,所述获取模块502用于:通过转码器数量获取函数从所述视频转码设备本地获取所有的转码器信息,根据所述转码器信息检测各个转码器的运行状态,同时接收各个转码器的转码完成状态信息,并根据各个转码器的运行状态及所述转码完成状态信息得到空闲转码器的数量。

进一步地,其中,上述系统还包括:画面组分片传输模块505与所述画面组分片模块503相藕接,用于将转码后的画面组分片传输至对等网络中。

通过以上各个实施例可知,本发明的基于画面组对视频文件进行转码的方法及系统,存在的有益效果是:

(1)本发明所述的基于画面组对视频文件进行转码的方法及系统,基于视频文件的画面组进行分片,并按照预定的转码策略对每个画面组分片进行转码后在用户端进行组合播放,在视频文件转码过程中不会造成画面组丢失的情况,也就能够保证在播放完整视频文件而不产生画面跳跃的问题。

(2)本发明所述的基于画面组对视频文件进行转码的方法及系统,基于视频文件的画面组进行分片,同时获取转码设备上现有的转码器数量,并向转码设备上的转码器分配画面组文件进行并行转码,进一步提升了视频文件转码的效率。

(3)本发明所述的基于画面组对视频文件进行转码的方法及系统,基于视频文件的画面组进行分片并行转码后,将转码后的视频文件分片通过对等网络(P2P)进行传输,进一步提升了视频文件转码传输至用户的效率,提升了用户使用体验。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

虽然已经通过例子对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。

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