一种视频文件生成方法及系统的制作方法

文档序号:7894570阅读:107来源:国知局
专利名称:一种视频文件生成方法及系统的制作方法
技术领域
本申请属于多媒体数据处理的技术领域,特别是一种视频文件生成方法及系统。
背景技术
如图I所示,现有技术中生成某一格式视频文件的流程为在步骤SlOl中,原始视频编码器将视频流写入H. 264原始视频码流文件;在步骤S102中,某视频文件格式的编码器读取H. 264原始视频码流文件,将视频数据写入该格式的视频文件;在步骤S103中,待生成视频文件格式的解码器读取上述视频文件,将读取的视频数据写入内存;在步骤S104中,待生成视频文件格式的编码器从内存中读取视频数据,将其写入待生成格式的视频文件。由上述流程可以看出,当要生成多种视频文件格式的视频文件时,首先生成出一种格式的视频流并写入文件,然后读取此文件进行解码,用另外ー种格式编码并再次写入文件。如果需要生成多种视频文件格式,则需要根据要生成的视频文件格式多次执行读取文件、写入文件以及解码编码的过程,在读取文件、写入文件以及解码编码过程中CPU的消耗成倍増加,导致视频文件生成的效率较低。因此,目前需要本领域技术人员迫切解决的ー个技术问题就是如何改进现有多格式视频文件的生成方式,以降低CPU的消耗,提高视频生成的效率。

发明内容
本申请实施例提供一种视频文件生成方法,解决现有生成多种格式视频文件时CPU的消耗较大,生成效率低下的问题。本申请还提供了一种视频文件生成系统,用以保证上述方法在实际中的应用及实现。本申请实施例公开了ー种视频文件生成方法,所述方法包括下述步骤获取原始视频码流;将所述原始视频码流分割成原始视频帧,各原始视频帧分别具有对应的时间戳;将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。优选的是,所述原始视频码流为H. 264码流。优选的是,所述获取原始视频码流的步骤包括生成H. 264码流并写入内存;从内存中读取所述H. 264码流。优选的是,所述将所述原始视频码流分割成原始视频帧的步骤包括
识别所述原始视频码流中每视频帧之间的分隔符;按照所述分隔符将所述原始视频码流分割成原始视频帧。
优选的是,所述将各原始视频帧以及对应的时间戳封装为待生成视频格式文件的步骤包括从所述原始视频码流中读取视频基本信息,按照待生成视频格式将所述视频基本信息写入所述待生成视频格式文件的文件头;按照时间戳的顺序将各原始视频帧写入所述待生成视频格式文件;各原始视频帧写入结束后,写入所述待生成视频格式文件的文件尾。优选的是,所述视频基本信息包括原始视频编码器 版本的字段,以及视频的码率、长宽。优选的是,所述待生成视频格式文件的格式包括avi格式,mkv格式,ts格式,mov格式,Qt格式,mp4格式。本申请实施例同时还公开ー种视频文件生成系统,所述系统包括原始视频码流获取单元,用于获取原始视频码流;视频码流分割単元,用于将所述原始视频码流分割成原始视频帧,各原始视频帧分别具有对应的时间戳;以及视频文件生成単元,用于将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。优选的是,所述原始视频码流为H. 264码流。优选的是,所述原始视频码流获取单元包括原始视频编码器,用于生成H. 264码流并写入内存;以及原始视频码流读取模块,用于从内存中读取所述H. 264码流。优选的是,所述视频码流分割単元包括分隔符识别模块,用于识别所述原始视频码流中每视频帧之间的分隔符;以及码流分割模块,用于按照所述分隔符将所述原始视频码流分割成原始视频帧。优选的是,所述视频文件生成单元包括视频文件头写入模块,用于从所述原始视频码流中读取视频基本信息,按照待生成视频格式将所述视频基本信息写入所述待生成视频格式文件的文件头;视频帧写入模块,用于按照时间戳的顺序将各原始视频帧写入所述待生成视频格式文件;视频文件尾写入模块,用于各原始视频帧写入结束后,写入所述待生成视频格式文件的文件尾。优选的是,所述视频基本信息包括原始视频编码器版本的字段,以及视频的码率、长宽。优选的是,所述待生成视频格式文件的格式包括avi格式,mkv格式,ts格式,mov格式,Qt格式,mp4格式。与现有技术相比,本申请具有以下优点本申请实施例通过将原始视频码流分割后,封装成需要生成的视频文件格式,只需要一次编码就可以同步生成多个格式的视频文件,每增加一个视频文件格式,仅需要多写入一次文件,避免了不必要的编码和解码,降低了 CPU的损耗,使得多格式视频文件的生成效率得到了很大提高。


图I是现有技术提供的视频文件生成方法的实现流程图;图2是本申请实施例提供的视频文件生成方法的实现流程图;图3是本申请实施例提供的原始视频码流分割的实现流程图;图4是本申请实施例中提供的待生成视频格式文件封装的实现流程图;图5是本申请实施例提供的视频文件生成系统的结构图;图6是本申请实施例提供的视频文件生成系统中原始视频码流获取单元的结构图;
图7是本申请实施例提供的视频文件生成系统中视频码流分割単元的结构图;图8是本申请实施例提供的视频文件生成系统中视频文件生成単元的结构图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。本申请实施例的核心构思之ー在于,将原始视频码流分割后,按照待生成的视频文件格式进行封装,同步生成多个格式的视频文件,大幅度提高多格式视频文件的生成效率。图2示出了本申请实施例提供的视频文件生成方法的实现流程,详述如下在步骤S201中,获取原始视频码流;在本申请实施例中,原始视频码流为H. 264码流。作为本申请的ー个实施例,获取原始视频码流时,首先生成H. 264码流并写入内存,然后从内存中读取H. 264码流,以对原始视频码流进行后续处理。这样,原始视频码流仅在内存保留一次,可以降低系统损耗。 在步骤S202中,将原始视频码流分割成原始视频帧,各原始视频帧具有对应的时间戳;在步骤S203中,将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。在本申请实施例中,为了确保生成的视频文件解码播放的时间正确性,在封装时将原始视频帧和对应的时间戳一起封装。作为本申请的ー个实施例,由于原始视频码流中每帧之间有分隔符,分割时按照分隔符来作分割。图3示出了本申请实施例提供的原始视频码流分割的实现流程,详述如下在步骤S301中,识别原始视频码流中每视频帧之间的分隔符;在步骤S302中,按照分隔符将原始视频码流分割成原始视频帧。图4示出了本申请实施例中提供的待生成视频格式文件封装的实现流程,详述如下在步骤S401中,从原始视频码流中读取视频基本信息,按照待生成视频格式将视频基本信息写入待生成视频格式文件的文件头;在本申请实施例中,视频基本信息为原始视频编码器版本的字段,以及视频的码率、长宽等信息。在步骤S402中,按照时间戳的顺序将各原始视频帧写入待生成视频格式文件;在步骤S403中,各原始视频帧写入结束后,写入待生成视频格式文件的文件尾。在本申请实施例中,待生成视频格式文件的视频格式可以为avi格式、mkv格式、ts格式、mov格式、qt格式,或者mp4格式等。由上述可知,通过本申请实施例的方法,只需要一次编码就可以同步生成多个格 式的视频文件,每增加一个视频文件格式,仅需要多写入一次文件即可,避免了不必要的编码和解码。以下对各种视频格式文件的封装细节进行分析。其中,斜体部分为视频帧,前面为视频文件头,后面为视频文件尾。avi的结构为RIFF头,RIFF列表I, RIFF列表2 (子列表,子列表...)其中,媒体流格式的RIFF列表中,有ー个RIFF子列表,保存了原始视频编码器版本的字段以及视频的长宽等信息。保存媒体流数据的RIFF列表中有多个RIFF子列表,分别包含原始视频码流中的姆ー巾贞,以及姆ー巾贞的时间戳。Mkv的结构为EBML, Segment(Track(Video(Block, Block.)))其中,EBML为MKV的文件头,Segment段里面包含了所有数据,数据中保存了 Track段的息。Video段中保存了原始视频编码器版本的字段以及视频的长宽等信息,以及多个Block,姆ー个Block分别包含原始视频码流中的姆ー巾贞,以及姆ー巾贞的时间戳。ts的结构为ts包括了两种类型的数据段PSI和PES。结构为PSI,PES, PES.PSI为文件头,其中定义了原始视频编码器版本的字段以及视频的长宽等信息。接下来的每ー个PES分别包含原始视频码流中的每ー帧,以及每一帧的时间戳。mov、qt、mp4均是采用相同的QuickTime文件格式。其结构为ftyp段,mdat 段,moov 段(trak 段(mdia 段(stbl 段,stbl 段…)))其中,ftyp段为文件头。Mdat段中定义了随后moov段中的视频信息,包括原始视频编码器版本的字段以及视频的长宽等信息。Moov段为视频数据段,其中包含了 trak段。Trak 段中包含了 media 段。Media段中为多个stbl段,每个stbl段分别包含原始视频码流中的每ー帧,以及姆ー巾贞的时间戳。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。图5示出了本申请实施例提供的视频文件生成的装置的结构,为了便于说明,仅示出了与本申请实施例相关的部分。原始视频码流获取单元11获取原始视频码流。
在本申请实施例中,原始视频码流为H. 264码流。如图6所示,作为本申请的ー个实施例,原始视频码流获取单元11获取原始视频码流吋,原始视频编码器111生成H. 264码流并写入内存。原始视频码流读取模块112从内存中读取H. 264码流。这样,原始视频码流仅在内存保留一次,可以降低系统损耗。视频码流分割単元12将所述原始视频码流分割成原始视频帧,各原始视频帧分别具有对应的时间戳。作为本申请的ー个实施例,由于原始视频码流中每帧之间有分隔符,分割时按照分隔符来作分割。如图7所示,分隔符识别模块121识别原始视频码流中每视频帧之间的分隔符。码流分割模块122按照分隔符将原始视频码流分割成原始视频帧。视频文件生成単元13将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。作为本申请的ー个实施例,如图8所示,在封装时,视频文件头写入模块131从原始视频码流中读取视频基本信息,按照待生成视频格式将视频基本信息写入待生成视频格式文件的文件头。视频帧写入模块132按照时间戳的顺序将各原始视频帧写入待生成视频格式文件。视频文件尾写入模块133在原始视频帧写入结束后,写入待生成视频格式文件的文件尾。在本申请实施例中,视频基本信息为原始视频编码器版本的字段,以及视频的码率、长宽等信息。在本申请实施例中,待生成视频格式文件的视频格式可以为avi格式、mkv格式、ts格式、mov格式、qt格式,或者mp4格式等。在本申请实施例中,对各种格式视频帧的封装细节如上所述,不再赘述。视频文件尾写入模块133在原始视频帧全部写入结束后,写入待生成视频文件格式的视频文件尾。本申请实施例通过将原始视频码流分割后,封装成需要生成的视频文件格式,只需要一次编码就可以同步生成多个格式的视频文件,每增加一个视频文件格式,仅需要多写入一次文件,避免了不必要的编码和解码,降低了 CPU的损耗,使得多格式视频文件的生成效率得到了很大提高。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本申请所提供的一种视频文件生成方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种视频文件生成方法,其特征在于,所述方法包括 获取原始视频码流; 将所述原始视频码流分割成原始视频帧,各原始视频帧分别具有对应的时间戳; 将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。
2.如权利要求I所述的视频文件生成方法,其特征在于,所述原始视频码流为H.264码流。
3.如权利要求2所述的视频文件生成方法,其特征在于,所述获取原始视频码流的步骤包括 生成H. 264码流并写入内存; 从内存中读取所述H. 264码流。
4.如权利要求I或2所述的视频文件生成方法,其特征在于,所述将所述原始视频码流分割成原始视频帧的步骤包括 识别所述原始视频码流中每视频帧之间的分隔符; 按照所述分隔符将所述原始视频码流分割成原始视频帧。
5.如权利要求I所述的视频文件生成方法,其特征在于,所述将各原始视频帧以及对应的时间戳封装为待生成视频格式文件的步骤包括 从所述原始视频码流中读取视频基本信息,按照待生成视频格式将所述视频基本信息写入所述待生成视频格式文件的文件头; 按照时间戳的顺序将各原始视频帧写入所述待生成视频格式文件; 各原始视频帧写入结束后,写入所述待生成视频格式文件的文件尾。
6.如权利要求5所述的视频文件生成方法,其特征在干,所述视频基本信息包括原始视频编码器版本的字段,以及视频的码率、长宽。
7.如权利要求I、2或3所述的视频文件生成方法,其特征在于,所述待生成视频格式文件的格式包括avi格式,mkv格式,ts格式,mov格式,qt格式,mp4格式。
8.一种视频文件生成系统,其特征在于,所述系统包括 原始视频码流获取单元,用于获取原始视频码流; 视频码流分割単元,用于将所述原始视频码流分割成原始视频帧,各原始视频帧分别具有对应的时间戳;以及 视频文件生成単元,用于将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。
9.如权利要求8所述的视频文件生成系统,其特征在于,所述原始视频码流为H.264码流。
10.如权利要求9所述的视频文件生成系统,其特征在于,所述原始视频码流获取单元包括 原始视频编码器,用于生成札264码流并写入内存;以及 原始视频码流读取模块,用于从内存中读取所述札264码流。
11.如权利要求8或9所述的视频文件生成系统,其特征在于,所述视频码流分割単元包括 分隔符识别模块,用于识别所述原始视频码流中每视频帧之间的分隔符;以及码流分割模块,用于按照所述分隔符将所述原始视频码流分割成原始视频帧。
12.如权利要求 8所述的视频文件生成系统,其特征在干,所述视频文件生成単元包括 视频文件头写入模块,用于从所述原始视频码流中读取视频基本信息,按照待生成视频格式将所述视频基本信息写入所述待生成视频格式文件的文件头; 视频帧写入模块,用于按照时间戳的顺序将各原始视频帧写入所述待生成视频格式文件;以及, 视频文件尾写入模块,用于各原始视频帧写入结束后,写入所述待生成视频格式文件的文件尾。
全文摘要
本申请提供了一种视频文件生成方法及系统,其中,所述方法包括下述步骤获取原始视频码流;将所述原始视频码流分割成原始视频帧,各原始视频帧分别具有对应的时间戳;将各原始视频帧以及对应的时间戳封装为待生成视频格式文件。本申请可以同步生成多种格式的视频文件,避免了不必要的编码和解码,降低了CPU的损耗,使得多格式视频的生成效率得到了很大提高。
文档编号H04N7/24GK102647584SQ201210126788
公开日2012年8月22日 申请日期2012年4月26日 优先权日2012年4月26日
发明者刘志聪, 叶荣华, 谢然 申请人:广州盈可视电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1