一种支持flv文件直接帧精确定位的索引方法

文档序号:6357162阅读:315来源:国知局
专利名称:一种支持flv文件直接帧精确定位的索引方法
技术领域
本发明涉及节目制作技术领域,尤其涉及一种支持FLV文件直接帧精确定位、索引的方法。
背景技术
网络视频作为一种新兴的传播媒体,随着互联网的发展表现出越来越强的吸引力,网络视频已成为当前人们最感兴趣的视频信息来源。伴随着网络视频产业的迅猛发展,也日益显露出在视频监管方面的突出问题大量视频网站对所发布的网络视频内容缺乏有效的审核,视频网站上视频的非授权拷贝并再次非法发布等,这些都损害了视频这一数字媒体的健康发展。数字隐藏标签技术就是针对这些问题所提出的,将网站信息、视频类型等信息作为隐藏标签嵌入到多媒体视频中,以起到鉴定视频来源、秘密通信等作用。而目前几乎所有的大型视频网站都采用FLV(Flash Video)格式来发布视频,它已成为当前网络视频文件的主流格式。FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式,全称为Flash Video,FLV流媒体格式是随着Flash MX的推出而发展而来的一种新兴的视频格式,FLV文件体积小巧,清晰的FLV视频I分钟在IMB左右,一部电影在100MB左右,是普通视频文件体积的1/3,再加上CPU占有率低、视频质量良好等特点使其在网络上盛行。FLV作为一种新兴的网络视频格式,得到众多网站的支持并非偶然。除了 FLV 视频格式本身资源占有率低、视频质量良好等特点,丰富、多样的资源也是FLV视频格式统一在线播放视频格式的一个重要因素。FLV视频包括视频数据块、音频数据块和脚本数据块,其中视频数据块是经过特定压缩算法及VLC编码后得到的视频画面数据;音频数据块是经过特定压缩算法及编码后的音频数据;脚本数据块为FLV视频信息数据且位于视频开头部位,包括视频名字及视频持续时间等。现有技术中虽然很多以FLV流媒体文件为主,但FLV文件本身没有高效定位的索引机制,为了实现低码率、高质量的画面要求,普遍都采用长GOP编码后的压缩数据格式,这些都不适合非线性编辑软件进行直接帧精确的定位。在非线性编辑视频播放或者帧采样的时候,通常不仅仅关注于实时播放的效率,而更关注于关键帧的显示效果,所以对于整体的完整的文件在读取的时候需要搜索到每一帧的具体位置和数据包或者数据包组的大小。由于流媒体文件很大且多数不存在适合于方便编辑用的索引数据,这就需要占用很大的内存空间,以现有的存储方式或内置索引结构直接精确定位帧的时候,资源占用率很大,与每次直接从头查询源文件并无区别。

发明内容
为了解决上述现有技术的缺点,本发明的主要目的是提供一种支持FLV文件直接帧精确定位的索引方法,解决现有技术中FLV文件没有固定的索引结构,不方面编辑与精确定位的问题。
本发明的一方面提供了一种支持FLV文件直接帧精确定位的索引方法,主要步骤包括读取FLV文件的头文件,判断是否还有视频流和音频流;分析FLV文件的文件结构,预写所有数据流的基本信息到索引文件头;分析FLV数据块FLV Tag的数据块类型TagType值,按照分析结果生成二级索引;在记录二级索引的同时,根据数据单元出现时间的先后顺序分组形成一级索引;
复写完整的视音频流信息。本发明的另一方面提供了一种支持FLV文件直接帧精确定位的索引文件加载的播放方法,具体为加载索引文件的基本文件信息;需要播出的帧号分别加载视音频一级索引文件;分别加载二级视频索引和二级音频索引;分别读取视音频源文件;分别加载视频解码器与音频解码器,解码后进行视音频的播放。本发明实施例中通过对FLV文件生成能够直接帧精确定位的索引结构,尤其是采取了根据FLV文件本身的结构特征以生成对应的索引文件,首先,通过分析FLV文件信息生成索引文件结构的文件头信息以记录文件的基本文件信息;其次,根据FLV的tag类型,依据不同的数值判断分析音频数据库,视频数据块以及脚本数据块并生成相应的二级索引,在视音频二级索引满预设后回写到一级索引,以此方法循环分析源文件,直至全部生成索引文件,复写完整的文件信息,使得FLV文件通过媒体流方式进行传输后,提高了其用于非线性视频处理过程中的可用性,并且规范了 FLV文件在编辑、精确定位的方法,尤其在FLV媒体文件加载播放的过程中通过分级加载的方式,使得视音频数据能够准确加载并播放。


为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例一种支持FLV文件直接帧精确定位的索引文件生成示意图;图2为本发明实施例加载FLV直接帧精确定位索引文件的播放流程具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然所描述的实施例仅是本发明的一部分实施例,不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例一方面以支持FLV文件直接帧精确定位的索引方法为例更加详细的说明本发明的技术方案,当然并不引以为限。如图I所示为本发明实施例中支持FLV文件的索引文件生成流程示意图,具体为
步骤SI :从FLV文件入口处分析FLV头文件FLV File Header,得出文件是否含有视频流和音频流。步骤S2 :分析FLV File Body,预写所有数据流的基本信息到文件头,并预留一级索引空间以存储二级索引满预设时回写的数据流信息。步骤S3 :开始分析数据,对FLV数据块FLV Tag的TagType进行分析,TagType为8时判断为音频数据块Audio Tag, TagType为9时判断为视频数据块Video Tag, TagType为18时判断为用户自定义的脚本数据块。步骤S4:若为Audio Tag,则每次记录到二级音频索引,若为Video Tag,则每次记录到二级视频索引,如果为用户自定义的脚步数据块,则根据第一个有效的视音频数据复写视音频流信息到文件头记录基本文件信息。步骤S5 :继续分析FLV Tag,按照时间先后顺序生成视音频二级索引后按照固定 的数据单元大小进行存储,当存储上限达到预设值时则回写到对应的视音频一级索引中。步骤S6 :分析FLV文件直到FLV文件结束,复写完整的视音频流信息到文件头。本发明实施例中通过对FLV文件生成能够直接帧精确定位的索引结构,尤其是采取了根据FLV文件本身的结构特征以生成对应的索引文件,首先,通过分析FLV文件信息生成索引文件结构的文件头信息以记录文件的基本文件信息;其次,根据FLV的tag类型,依据不同的数值判断分析音频数据库,视频数据块以及脚本数据块并生成相应的二级索引,在视音频二级索引满预设后回写到一级索引,以此方法循环分析源文件,直至全部生成索引文件,复写完整的文件信息,使得FLV文件通过媒体流方式进行传输后,提高了其用于非线性视频处理过程中的可用性,并且规范了 FLV文件在编辑、精确定位的方法。本发明的另一方面提供了一种加载FLV直接帧精确定位索引文件的播放方法,如图2所示,具体为步骤SI :加载基本的文件信息,包括文件头信息等基本文件信息,分别加载视频解码器与音频解码器。步骤S2 :对需要播出的帧号分别加载视音频一级索引文件。步骤S3 :分别加载二级视频索引和二级音频索引。步骤S4 :对于视频索引文件,按照视频巾贞信息VideoFrameInfo记录的文件偏移读取源文件,而音频索引文件按照音频巾贞信息AudioGopInfo记录的文件偏移读取源文件。步骤S5 :分别加载视频解码器与音频解码器,解码后进行视音频的播放。本发明实施例中通过对FLV文件生成能够直接帧精确定位的二级索引结构,尤其是采取了根据FLV文件本身的结构特征以生成对应的索引文件,使得FLV文件通过媒体流方式进行传输后,提高了其用于非线性视频处理过程中的可用性,并且规范了 FLV文件在编辑、精确定位的方法,尤其在FLV媒体文件加载播放的过程中通过分级加载的方式,使得视音频数据能够准确加载并播放。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的一个最佳具体实施例,但本发明的特征并不局限于此,任何熟悉该项技术的人在本发明领域内,可轻易想到的变化或修饰,都应涵盖在以下本发明 的申请专利范围中。
权利要求
1.一种支持FLV文件直接帧精确定位的索引方法,其特征在于,包括 读取FLV文件的头文件,判断是否还有视频流和音频流; 分析FLV文件的文件结构,预写所有数据流的基本信息到索引文件头; 分析FLV数据块FLV Tag的数据块类型TagType值,按照分析结果生成二级索引; 在记录二级索引的同时,根据数据单元出现时间的先后顺序分组形成一级索引; 复写完整的视首频流/[目息。
2.如权利要求I所述的支持FLV文件直接帧精确定位的索引方法,其特征在于,所述预写所有数据流的基本信息到索引文件头的同时预留一级索引空间以存储二级索引满预设时回写的数据流信息。
3.如权利要求I所述的支持FLV文件直接帧精确定位的索引方法,其特征在于,所述分析FLV数据块FLV Tag的数据块类型TagType值,按照分析结果生成二级索引具体为 TagType为8时判断为音频数据块; TagType为9时判断为视频数据块; TagType为18时判断为用户自定义的脚本数据块。
4.如权利要求3所述的支持FLV文件直接帧精确定位的索引方法,其特征在于,所述生成二级索引具体为 若为音频数据块,则每次记录到二级音频索引,若为Video Tag,则每次记录到二级视频索引,若为脚本数据块,则根据第一个有效的视音频数据复写视音频流信息到文件头记录基本文件信息。
5.如权利要求I所述的支持FLV文件直接帧精确定位的索引方法,其特征在于,所述在记录二级索引的同时,根据数据单元出现时间的先后顺序分组形成一级索引具体为 连续分析FLV文件的FLV Tag,按照时间先后顺序生成视音频二级索引后按照固定的数据单元大小进行存储,当存储上限达到预设值时则回写到对应的视音频一级索引中。
6.一种支持FLV文件直接帧精确定位的索引文件加载的播放方法,其特征在于,包括 加载索引文件的基本文件信息; 需要播出的帧号分别加载视音频一级索引文件; 分别加载二级视频索引和二级音频索引; 分别读取视音频源文件; 分别加载视频解码器与音频解码器,解码后进行视音频的播放。
7.如权利要求6所述的支持FLV文件直接帧精确定位的索引文件加载播放方法,其特征在于,所述分别读取视音频源文件具体为 对于视频索引文件,按照视频巾贞信息VideoFrameInfo记录的文件偏移读取源文件,而音频索引文件按照音频巾贞信息AudioGopInfo记录的文件偏移读取源文件。
全文摘要
本发明公开了一种支持FLV文件直接帧精确定位的索引方法。所述生成支持FLV文件直接帧精确定位的索引方法包括以下步骤读取FLV文件的头文件,判断是否还有视频流和音频流;分析FLV文件的文件结构,预写所有数据流的基本信息到索引文件头;分析FLV数据块FLV Tag的数据块类型TagType值,按照分析结果生成二级索引;在记录二级索引的同时,根据数据单元出现时间的先后顺序分组形成一级索引;复写完整的视音频流信息。使得FLV文件通过媒体流方式进行传输后,提高了其用于非线性视频处理过程中的可用性,并且规范了FLV文件在编辑、精确定位的方法,尤其在FLV媒体文件加载播放的过程中通过分级加载的方式,使得视音频数据能够准确加载并播放。
文档编号G06F17/30GK102724488SQ201110079690
公开日2012年10月10日 申请日期2011年3月31日 优先权日2011年3月31日
发明者夏永宏, 杨珂, 谷洁平 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1