著录项信息
专利名称 | 数据流索引文件生成及用该文件访问帧和切变镜头的方法 |
申请号 | CN00129698.1 | 申请日期 | 2000-10-13 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2002-05-15 | 公开/公告号 | CN1349351 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | 暂无 | IPC分类号 | 暂无查看分类表>
|
申请人 | 北京算通数字技术研究中心有限公司 | 申请人地址 | 北京市海淀区上地东路1号盈创动力大厦A座7***
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 友联互通多媒体通讯科技(北京)有限公司,联合信源数字音视频技术(北京)有限公司 | 当前权利人 | 友联互通多媒体通讯科技(北京)有限公司,联合信源数字音视频技术(北京)有限公司 |
发明人 | 高文;罗森林;王伟强 |
代理机构 | 北京三友知识产权代理有限公司 | 代理人 | 刘芳 |
摘要
一种MPEG-2码流索引文件的生成方法,通过对MPEG-2流中视频数据内容的扫描,发现视频基本流包头的起点和对应一帧开始的图片头位置,建立索引,完成MPEG-2流编码次序向播放次序的转换;同时,提供随机访问MPEG2码流中任意帧的方法,利用原始特征降低特征抽取的复杂度,实现随机访问任意帧;给出一种压缩域上的镜头边界搜索方法,利用MPEG-2码流索引文件,采用多级分辨率检测法对镜头进行分切搜索;利用对其它视频帧的分析结果,减少处理的数据量。
1、一种MPEG2码流索引文件的生成方法,它包括:MPEG-2或MPEG-1的 节目流,传输流、打包数据流或基本数据流文件,其特征在于:它还包括以下 步骤:
a、打开一个基本流文件和建立一个空的临时文件;
b、设置节目流中含有的总帧数计数器为0,结束标志为FALSE;
c、如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视频 缓冲区;
d、搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结束 码或基本流文件的结束符,则转步骤o;若遇到一个视频PES包头,记下 该包头的起始位置;若遇到一个图片头,记下该图片头的起始位置,并转 步骤e;
e、解析该图片头;
f、若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,转步骤
i;否则转步骤g;
g、若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换;
h、解码当前帧为后向参考帧;
i、如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息存 入到解码当前帧指向的对象;如果流类型为节目流,同时也将该包头的起 始位置信息存入到解码当前帧指向的对象,验证MPEG2码流的GOP结构是 否出现非规则情况,如果是,则失败退出;
j、如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或者 结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧 的帧编码类型,否则,播放当前帧为前向参考帧;转步骤m;
k、如果当前图片结构不为帧类型,则结束标志取反;
l、如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出缓 冲区中,节目流中含有的总帧数计数器的值+1;
m、如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干索 引子,并按预定的文件格式写入到一个临时文件中;
n、转步骤c;
o、若输出缓冲区不空,则取出其中所有的数据,构造出若干索引子,并按 预定的文件格式写入到一个临时文件中;
p、建立一个空的索引文件,按索引文件格式将描述数据写入到文件中,将 临时文件的内容追加到索引文件,并关闭索引文件,基本流文件,关闭并 删除临时文件。
2、如权利要求1所述的一种MPEG2码流索引文件的生成方法,其特征在 于:所述的MPEG码流的二元组索引I的元素D是一个按显示顺序排列的 索引子的集合;元素G为的结构为,其中:FrameRate为MPEG 流的帧率,Frames为该节目流中含有的总帧数,tagRegular标志索引的MPEG 流的GOP结构是否是规则的,Gop_NP、Gop_NB分别为被索引的MPEG流的每 个GOP中所含的P帧和B帧的数目,BL_GopIndex为在索引I中索引一个GOP 中的所有帧花费的字节数,BaseFrmNum为MPEG节目流中按播放顺序第一个I 帧的帧序号,TypeStream为索引流的类型。
3、如权利要求1所述的一种MPEG2码流索引文件的生成方法,其特征在 于:所述的索引子为I索引子或P索引子。
4、如权利要求3所述的一种MPEG2码流索引文件的生成方法,其特征在 于:所述的I索引子为对构成GOP的图片子组中参考帧含有I图的I型图片子 组的索引形式,其为一个四元组;所述的P索引 子为对构成GOP的图片子组中参考帧含有P图的P型图片子组的索引形式,其 为一个四元组;所述的四元组中,tag为索引子 的类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos为该索 引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息,dif_Bs 为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组中各个 B帧的位置相对于ipPos的位置差的相关描述信息。
5、如权利要求1所述的一种MPEG2码流索引文件的生成方法,其特征在 于:所述的索引文件格式为以索引I中元素G为基本数据结构的存储格式。
6、一种随机访问MPEG2码流中任意帧的方法,它包括:MPEG-2或MPEG-1 的节目流,传输流、打包数据流或基本数据流文件,其特征在于:它还包括以 下步骤:
a、打开基本流文件,采用一种MPEG2码流索引文件的生成方法所建立的 相应码流的索引文件;该MPEG2码流索引文件的生成方法,它包括:MPEG-2 或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,它还包括以下 步骤:
a1、打开一个基本流文件和建立一个空的临时文件;
b1、设置节目流中含有的总帧数计数器为0,结束标志为FALSE;
c1、如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视 频缓冲区;
d1、搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结 束码或基本流文件的结束符,则转步骤o;若遇到一个视频PES包头,记下该 包头的起始位置;若遇到一个图片头,记下该图片头的起始位置,并转步骤e;
e1、解析该图片头;
f1、若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,转步 骤i;否则转步骤g;
g1、若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换;
h1、解码当前帧为后向参考帧;
i1、如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息 存入到解码当前帧指向的对象;如果流类型为节目流,同时也将该包头的起始 位置信息存入到解码当前帧指向的对象,验证MPEG2码流的GOP结构是否出现 非规则情况,如果是,则失败退出;
j1、如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或 者结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的 帧编码类型,否则,播放当前帧为前向参考帧;转步骤m;
k1、如果当前图片结构不为帧类型,则结束标志取反;
l1、如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出 缓冲区中,节目流中含有的总帧数计数器的值+1;
m1、如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干 索引子,并按预定的文件格式写入到一个临时文件中;
n1、转步骤c;
o1、若输出缓冲区不空,则取出其中所有的数据,构造出若干索引子,并 按预定的文件格式写入到一个临时文件中;
p1、建立一个空的索引文件,按索引文件格式将描述数据写入到文件中, 将临时文件的内容追加到索引文件,并关闭索引文件,基本流文件,关闭并删 除临时文件;
b、从相应码流的索引文件中提取相关的参数,求出帧序号为所需的帧序 号的帧所在GOP的I型图片子组对应的索引子在索引I中D元素中的位置;
c、移动相应码流的索引文件的文件指针到步骤b求出的位置的对应处, 并读取一个索引子大小的内容;
d、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应 帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;
e、如果被搜索帧在图片组中的编号=0,则转步骤n;
f、设前一个索引子为当前的索引子;
g、若被搜索帧在图片组中的编号小于各索引子包含的帧数值,则转步骤 k;
h、从相应码流的索引文件中读取一个索引子大小的内容;
i、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应 帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;
j、被搜索帧在图片组中的编号=被搜索帧在图片组中的编号-各索引子包 含的帧数值,转步骤f;
k、若被搜索帧在图片组中的编号=0,则转步骤n;
l、从相应码流的索引文件中读取一个索引子大小的内容,移动基本流文 件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位 置处,利用MPEG解码引擎解码该帧的数据;
m、移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧 在码流中的相应的位置中的相应个B帧的位置处,利用MPEG解码引擎解码该 帧的数据;
n、查找出最后解码的帧;结束。
7、如权利要求6所述的一种随机访问MPEG2码流中任意帧的方法,其特 征在于:所述的MPEG码流的二元组索引I的元素D是一个按显示顺序排 列的索引子的集合;元素G为的结构为,其 中:FrameRate为MPEG流的帧率,Frames为该节目流中含有的总帧数, tagRegular标志索引的MPEG流的GOP结构是否是规则的,Gop_NP、Gop_NB 分别为被索引的MPEG流的每个GOP中所含的P帧和B帧的数目,BL_GopIndex 为在索引I中索引一个GOP中的所有帧花费的字节数,BaseFrmNum为MPEG节 目流中按播放顺序第一个I帧的帧序号,TypeStream为索引流的类型。
8、如权利要求6所述的一种随机访问MPEG2码流中任意帧的方法,其特 征在于:所述的索引子为I索引子或P索引子。
9、如权利要求8所述的一种随机访问MPEG2码流中任意帧的方法,其特 征在于:所述的I索引子为对构成GOP的图片子组中参考帧含有I图的I型图 片子组的索引形式,其为一个四元组;所述的P 索引子为对构成GOP的图片子组中参考帧含有P图的P型图片子组的索引形 式,其为一个四元组;所述的四元组中,tag为 索引子的类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos 为该索引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息, dif_Bs为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组 中各个B帧的位置相对于ipPos的位置差的相关描述信息。
10、如权利要求6所述的一种随机访问MPEG2码流中任意帧的方法,其特 征在于:所述的索引文件格式为以索引I中元素G为基本数据结构的存储格式。
11、一种高速切变镜头边界搜索方法,它包括:MPEG-2或MPEG-1的节目 流,传输流、打包数据流或基本数据流文件,其特征在于:它还包括以下步骤:
a、打开基本流文件,采用一种MPEG2码流索引文件的生成方法所建立的 相应码流的索引文件,该该MPEG2码流索引文件的生成方法,它还包括以下步 骤:
a2、打开一个基本流文件和建立一个空的临时文件;
b2、设置节目流中含有的总帧数计数器为0,结束标志为FALSE;
c2、如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视 频缓冲区;
d2、搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结 束码或基本流文件的结束符,则转步骤o;若遇到一个视频PES包头,记下该 包头的起始位置;若遇到一个图片头,记下该图片头的起始位置,并转步骤e;
e2、解析该图片头;
f2、若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,转步 骤i;否则转步骤g;
g2、若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换;
h2、解码当前帧为后向参考帧;
i2、如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息 存入到解码当前帧指向的对象;如果流类型为节目流,同时也将该包头的起始 位置信息存入到解码当前帧指向的对象,验证MPEG2码流的GOP结构是否出现 非规则情况,如果是,则失败退出;
J2、如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或 者结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的 帧编码类型,否则,播放当前帧为前向参考帧;转步骤m;
k2、如果当前图片结构不为帧类型,则结束标志取反;
l2、如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出 缓冲区中,节目流中含有的总帧数计数器的值+1;
m2、如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干 索引子,并按预定的文件格式写入到一个临时文件中;
n2、转步骤c;
o2、若输出缓冲区不空,则取出其中所有的数据,构造出若干索引子,并 按预定的文件格式写入到一个临时文件中;
p2、建立一个空的索引文件,按索引文件格式将描述数据写入到文件中, 将临时文件的内容追加到索引文件,并关闭索引文件,基本流文件,关闭并删 除临时文件;;
b、如果已检测完所有的GOP,转到步骤e1;否则,进行GOP级检测,若 满足设定的相似性要求,则继续检测Ik+1、Ik+2间的内容相似程度;否则说 明Ik、Ik+1间可能存在镜头的切换,进行步骤c;
c、进行图片子组级检测,设SPl、SPl+1为两个相邻的图片子组,且SPl+1 为P型图片子组,检测SPl、SPl+1图片子组中参考帧Rm、Rm+1间的内容相似程度, 若满足设定的相似性要求,则继续检测下一个图片子组的参考帧Rm+2与Rm+1间 的内容相似度,否则说明Rm、Rm+1间可能存在镜头的切换,当发现SPl+1为I型图 片子组,SPl则为一个GOP的最后一个图片子组,进行步骤d;
d、进行帧级检测,若该B帧序列属于一个GOP的最后一个图片子组,则 分析后返回到步骤b,否则返回到步骤c;
e、记录所有的镜头切换的位置,结束。
12、如权利要求11所述的一种高速切变镜头边界搜索方法,其特征在于: 所述的GOP级检测为:对相距一个GOP长度的两个I帧Ik、Ik+1间的内容相似 程度的检测。
13、如权利要求11所述的一种高速切变镜头边界搜索方法,其特征在于: 所述的图片子组级检测为:对处于两个I帧Ik、Ik+1间的帧按图片子组的分辨 率进行的检测。
14、如权利要求11所述的一种高速切变镜头边界搜索方法,其特征在于: 所述的帧级检测为:对两个参考帧间的所有B帧序列B1 B2...Bn进行分析,确 定切变镜头的产生及其准确位置。
15、如权利要求14所述的一种高速切变镜头边界搜索方法,其特征在于: 帧级检测依照下列步骤:
a、定义一个参考帧间的相关函数Relevance(df,db):
其中df、db为两个相邻的参考帧的帧序号,NFwdBack(d)和NFwdBackSkip(d)分 别为计算帧d中双向预测宏块数目和双向跳过宏块数目的函数;
Ri、Rj分别对应的播放帧序号为f、b;
b、若:Relevance(f,b)≥K2·SumofMacroBlocks,其中K2,K2∈(0,1)为系统的门限参 数,则:Ri、Rj间不存在镜头的切换;
c、否则,对于Bk(k=1,2,...n),若:
NBackSkip(d)+NBackward(d)>K3·(NFwdSkip(d)+NForward(d)) 并且:Relevance(f,b)≤K4·SumofMacroBlocks
则在帧Bk(k=1,2,...n)与其前一帧之间发生了镜头的切换;
其中:K4,K4∈(0,1)为系统的门限参数,NBackSkip(d),NBackward(d)NFwdSkip(d) 及NForward(d)分别为:帧d中后向跳过宏块数目,后向预测宏块数目,前向跳 过宏块数目及前向预测宏块数目;其中K3,(K3>1)为系统的门限参数;
d、对于Bn,若:Relevance(f,b)≤K4·SumofMacroBlocks 并且:K3·(NBackSkip(d)+NBackward(d))<NFwdSkip(d)+NForward(d) 则判断在Bn与其后一帧Rj之间发生了镜头的切换。
16、如权利要求11所述的一种随机访问MPEG2码流中任意帧的方法,其 特征在于:所述的MPEG码流的二元组索引I的元素D是一个按显示顺序 排列的索引子的集合;元素G为的结构为,其 中:FrameRate为MPEG流的帧率,Frames为该节目流中含有的总帧数, tagRegular标志索引的MPEG流的GOP结构是否是规则的,Gop_NP、Gop_NB 分别为被索引的MPEG流的每个GOP中所含的P帧和B帧的数目,BL_GopIndex 为在索引I中索引一个GOP中的所有帧花费的字节数,BaseFrmNum为MPEG节 目流中按播放顺序第一个I帧的帧序号,TypeStream为索引流的类型。
17、如权利要求11所述的一种随机访问MPEG2码流中任意帧的方法,其 特征在于:所述的索引子为I索引子或P索引子。
18、如权利要求17所述的一种随机访问MPEG2码流中任意帧的方法,其 特征在于:所述的I索引子为对构成GOP的图片子组中参考帧含有I图的I型 图片子组的索引形式,其为一个四元组;所述的 P索引子为对构成GOP的图片子组中参考帧含有P图的P型图片子组的索引形 式,其为一个四元组;所述的四元组中,tag为 索引子的类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos 为该索引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息, dif_Bs为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组 中各个B帧的位置相对于ipPos的位置差的相关描述信息。
19、如权利要求11所述的一种随机访问MPEG2码流中任意帧的方法,其 特征在于:所述的索引文件格式为以索引I中元素G为基本数据结构的存储格 式。
技术领域
本发明涉及一种数据流索引文件生成及用该文件访问帧和切变镜头的方 法,尤指一种基于MPEG-2码流的节目流、基本流和建立索引文件,以及使用 该文件随机访问任意帧的方法和高速切变镜头的搜索方法,属于多媒体信息 处理领域。
背景技术
目前,数字化信息已从过去的简单文本发展成含有视频、音频、图片、 文本等信息类型的多媒体信息。在多媒体数据库中,视频媒体的有效管理需 要对视频数据结构化的支持,来方便用户对视频数据快速访问。随着桌面计 算机性能的提高,存储介质费用的不断降低,宽带网络的扩展,数字视频数 据的应用已变得越来越广泛。每一个数字视频素材都由一系列时间上连续的 帧构成,诸多的有关多媒体视频的应用都希望能快速定位到一视频序列中某 一特定帧。虽然目前诸多微机环境中的VCD软件播放器都提供了相应的快进、 快退的功能,但这种随机访问能力在快速性、准确性上均有一定的局限性, 无法满足许多更高级的多媒体应用的需要。例如:一个大型的视频数据库系 统希望为用户提供基于内容的检索方式,库中的视频流文件经过结构化的分 析处理后,对视频流中的镜头集都加入了标引,用户在浏览检索时若需要从 一个镜头转到另一个镜头,就会希望系统能以最快的响应速度准确地快进或 快退到目标镜头的起始第一帧;这样的系统一般都以客户/服务模式并发地响 应多个用户的请求,这时通过对视频流建立合适的索引来实现对特定帧视频 内容访问的快速性、准确性便是一种有效的解决方法。
镜头分割是视频信息管理系统对视频数据结构化的一项基本功能。完全 的手工标注是一项耗时枯燥的人力劳动,提供各种高度自动化的结构分析工 具对原始数据进行处理,以自动化或半自动化的方式建立并描述视频信息的 内容结构是一种重要的系统需求。
对MPEG码流中的帧进行解压缩并显示是许多涉及视频的多媒体应用的一 项基本操作。由于MPEG码流编码的特点,只有编码类型为I的图的内容可独 立解码显示,其它类型的图都需要在与其相关的某些帧被正确解码,后该图 才能够正确解码。这也正是一般的MPEG节目流演播器的快进、快退的分辨单 元一般为一个图片组(GOP)的原因,其实质进行的是对与目标位置最为接近 的I图的搜索,而不是对任意一个精确的帧进行搜索。
但是,有时为了满足特定的应用需求,需要对一个具体的帧进行搜索定 位。例如:切变镜头是一种最为普遍的镜头切换方式,镜头在相邻的两帧间 发生突然性的改变。镜头分割在许多视频应用中都是基本的关键技术,如新 闻的自动编目系统等;一些新闻类纪实性节目中的镜头过渡几乎都采用这种 方式来突出内容的严肃正式性。通过对中央电视台每天的新闻联播作镜头的 手工标注统计,发现95%以上的镜头过渡为切变类型。对这类镜头的编辑, 往往需要对一个具体的帧进行精确的搜索定位。
在一个视频的片段中寻找一个镜头,通常需要搜索出镜头之间的过渡帧, 而利用上述的以一个GOP(GOP)为分辨单元的方法显然是不精确的。另外, 为了提高分析搜索的速度,通常采用多级分辨率检测方式来比较相邻帧间内 容特征量,对MPEG-2码流建立合适的索引文件是多级分辨率检测方式的基础。
发明内容
本发明的主要目的在于提供一种MPEG-2码流索引文件的生成方法,对 MPEG-2节目流、基本流建立索引,通过对MPEG-2流中的视频数据的内容进行 扫描来发现视频打包基本数据流包头的起始位置和对应一帧开始的图片头的 位置,完成MPEG-2流编码次序向播放次序的转换,使得索引中的帧排列顺序 与播放次序相一致。
本发明的另一目的在于提供一种随机访问MPEG2码流中的任意帧的方法, 利用MPEG-2码流中不同编码类型帧所含信息的不同特点,通过利用原始特征 信息来降低特征抽取的时间复杂度,从而实现随机访问MPEG2码流中的任意 帧。
本发明又的一目的在于给出一种压缩域上更加快速的镜头边界搜索方 法,与现有的压缩域上镜头分割算法相比,它利用MPEG-2码流索引文件,采 用多级分辨率检测方法对镜头进行分切搜索;利用对其它视频帧的分析结果, 跳过一定数量的视频帧,从而使整个搜索过程处理的数据量大大减少。
本发明是通过如下技术方案实现的:
一种MPEG2码流索引文件的生成方法,它包括:MPEG-2或MPEG-1的节目 流,传输流、打包数据流或基本数据流文件,并且包括以下步骤:
1、打开一个基本流文件和建立一个空的临时文件;
2、设置节目流中含有的总帧数计数器为0,结束标志为FALSE;
3、如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视 频缓冲区;
4、搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结 束码或基本流文件的结束符,则转步骤15;若遇到一个视频PES包头,记下 该包头的起始位置;若遇到一个图片头,记下该图片头的起始位置,并转步 骤5;
5、解析该图片头;
6、若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,转步 骤9;否则转步骤7;
7、若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换;
8、解码当前帧为后向参考帧;
9、如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息 存入到解码当前帧指向的对象;如果流类型为节目流,同时也将该包头的起 始位置信息存入到解码当前帧指向的对象,验证MPEG2码流的GOP结构是否 出现非规则情况,如果是,则失败退出;
10、如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或 者结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的 帧编码类型,否则,播放当前帧为前向参考帧;转步骤13;
11、如果当前图片结构不为帧类型,则结束标志取反;
12、如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出 缓冲区中,节目流中含有的总帧数计数器的值+1;
13、如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若 干索引子,并按预定的文件格式写入到一个临时文件中;
14、转步骤3;
15、若输出缓冲区不空,则取出其中所有的数据,构造出若干索引子, 并按预定的文件格式写入到一个临时文件中;
16、建立一个空的索引文件,按索引文件格式将描述数据写入到文件中, 将临时文件的内容追加到索引文件,并关闭索引文件,基本流文件,关闭并 删除临时文件。
上述的MPEG码流的二元组索引I的元素D是一个按显示顺序排列 的索引子的集合;元素G为的结构为,其 中:FrameRate为MPEG流的帧率,Frames为该节目流中含有的总帧数, tagRegular标志索引的MPEG流的GOP结构是否是规则的,Gop_NP、Gop_NB 分别为被索引的MPEG流的每个GOP中所含的P帧和B帧的数目,BL_GopIndex 为在索引I中索引一个GOP中的所有帧花费的字节数,BaseFrmNum为MPEG节 目流中按播放顺序第一个I帧的帧序号,TypeStream为索引流的类型。 所述的索引子为I索引子或P索引子;I索引子为对构成GOP的图片子组中参 考帧含有I图的I型图片子组的索引形式,其为一个四元组;所述的P索引子为对构成GOP的图片子组中参考帧含有P图的P型 图片子组的索引形式,其为一个四元组;所述 的四元组中,tag为索引子的类型,numB为该索引子对应的图片子组中包含 的B帧的数目,ipPos为该索引子对应的图片子组中I帧或P帧的在流中的位 置的相关描述信息,dif_Bs为一个由numB个元素组成的有序正数集,其中的 每个元素为图片子组中各个B帧的位置相对于ipPos的位置差的相关描述信 息。索引文件格式为以索引I中元素G为基本数据结构的存储格式。
一种随机访问MPEG2码流中任意帧的方法,它包括:MPEG-2或MPEG-1的 节目流,传输流、打包数据流或基本数据流文件,并且包括以下步骤:
1、打开基本流文件,采用上述MPEG2码流索引文件的生成方法所建立的 相应码流的索引文件;
2、从相应码流的索引文件中提取相关的参数,求出帧序号为所需的帧序 号的帧所在GOP的I型图片子组对应的索引子在索引I中D元素中的位置;
3、移动相应码流的索引文件的文件指针到步骤2求出的位置的对应处, 并读取一个索引子大小的内容;
4、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应 帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;
5、如果被搜索帧在图片组中的编号=0,则转步骤14;
6、设前一个索引子为当前的索引子;
7、若被搜索帧在图片组中的编号小于各索引子包含的帧数值,则转步骤 11;
8、从相应码流的索引文件中读取一个索引子大小的内容;
9、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应 帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;
10、被搜索帧在图片组中的编号=被搜索帧在图片组中的编号-各索引子 包含的帧数值,转步骤6;
11、若被搜索帧在图片组中的编号=0,则转步骤14;
12、从相应码流的索引文件中读取一个索引子大小的内容,移动基本流 文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的 位置处,利用MPEG解码引擎解码该帧的数据;
13、移动基本流文件的文件指针到读取的索引子对应的图片子组中相应 帧在码流中的相应的位置中的相应个B帧的位置处,利用MPEG解码引擎解码 该帧的数据;
14、查找出最后解码的帧;结束。
一种高速切变镜头边界搜索方法,它包括:MPEG-2或MPEG-1的节目流, 传输流、打包数据流或基本数据流文件,并包括以下步骤:
1、打开基本流文件,采用上述的MPEG2码流索引文件的生成方法所建立 的相应码流的索引文件;
2、如果已检测完所有的GOP,转到步骤5;否则,进行GOP级检测,若 满足设定的相似性要求,则继续检测Ik+1、Ik+2间的内容相似程度;否则说 明Ik、Ik+1间可能存在镜头的切换,进行步骤3;
3、进行图片子组级检测,设SPl、SPl+1为两个相邻的图片子组,且SPl+1 为P型图片子组,检测SPl、SPl+1图片子组中参考帧Rm、Rm+1间的内容相似程度, 若满足设定的相似性要求,则继续检测下一个图片子组的参考帧Rm+2与Rm+1间 的内容相似度,否则说明Rm、Rm+1间可能存在镜头的切换,当发现SPl+1为I型 图片子组,SPl则为一个GOP的最后一个图片子组,进行步骤4;
4、进行帧级检测,若该B帧序列属于一个GOP的最后一个图片子组,则 分析后返回到步骤2,否则返回到步骤3;
5、记录所有的镜头切换的位置,结束。
上述的GOP级检测为:对相距一个GOP长度的两个I帧Ik、Ik+1间的内 容相似程度的检测;图片子组级检测为:对处于两个I帧Ik、Ik+1间的帧按 图片子组的分辨率进行的检测;帧级检测为:对两个参考帧间的所有B帧序 列B1 B2...Bn进行分析,确定切变镜头的产生及其准确位置。 帧级检测依照下列步骤:
1、定义一个参考帧间的相关函数Relevance(df,db):
其中df,db为两个相邻的参考帧的帧序号,NFwdBack(d)和NFwdBackSkip(d)分 别为计算帧d中双向预测宏块数目和双向跳过宏块数目的函数;
Ri、Rj分别对应的播放帧序号为f、b;
2、若:Relevance(f,b)≥K2·SumofMacroBlocks,其中K2,K2∈(0,1)为系统的门 限参数,
则:帧Ri、Rj间不存在镜头的切换;
3、否则,对于Bk(k=1,2,...n),若: NBackSkip(d)+NBackward(d)>K3·(NFwdSkip(d)+NForward(d))
并且:Relevance(f,b)≤K4·SumofMacroBlocks
则在帧Bk(k=1,2,...n)与其前一帧之间发生了镜头的切换;
其中:K4,K4∈(0,1)为系统的门限参数,NBackSkip(d),NBackward(d) NFwdSkip(d) 及NForward(d)分别为:帧d中后向跳过宏块数目,后向预测宏块数目,前向跳 过宏块数目及前向预测宏块数目;其中K3,(K3>1)为系统的门限参数;
4、对于Bn,若:Relevance(f,b)≤K4·SumofMacroBlocks 并且:K3·(NBackSkip(d)+NBackward(d))<NFwdSkip(d)+NForward(d) 则判断在Bn与其后一帧Rj之间发生了镜头的切换。
本发明通过对以MPEG2码流为主的节目流、基本流建立索引,完成了MPEG2 码流编码次序向播放次序的转换,使得索引中的帧排列顺序与播放次序相一 致;并且,利用MPEG2码流中不同编码类型的帧所含信息的不同的特点,实 现了对MPEG2码流中的任意一帧的随机访问;此外,本发明利用MPEG2码流 索引文件,采用多级分辨率的检测方法对镜头进行分切检测;利用对其它视 频帧的分析结果,跳过一定数量的视频帧,从而使整个探测过程的处理数据 量大大减少,与现有的压缩域上镜头分割算法相比,它提高了对MPEG2码流 分析搜索的速度。
附图说明
图1为MPEG2码流索引文件的生成方法的流程图之一。
图2为MPEG2码流索引文件的生成方法的流程图之二。
图3为随机访问MPEG2码流中的任意帧的方法的流程示意图。
图4为高速切变镜头边界搜索方法的流程示意图。
具体实施方式
参见图1及图2,为本发明的MPEG-2码流索引文件的生成方法的流程图。 本方法是基于MPEG-2或MPEG-1的节目流,或基本流文件建立索引的,根据 流程图:
首先打开一个基本流文件和建立一个空的临时文件,此时,基本流文件 是一个用于存放其GOP结构是规则的MPEG2码流的索引流的空的文件,所谓 规则的是指GOP结构在整个节目流是不变的,且按显示顺序排列的参考帧间 包含的B帧的数目是相同的。
其次,将节目流的总帧数计数器设置为0,结束标志设置为FALSE。
如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视频 缓冲区。
然后,搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列 结束码或基本流文件的结束符,结束所有的搜索、解析等操作,取出输出缓 冲区中所有的数据,构造出若干索引子,并按预定的文件格式写入到一个临 时文件中,再建立一个空的索引文件,按索引文件格式将描述数据写入到文 件中,将临时文件的内容追加到索引文件,并关闭索引文件和基本流文件, 关闭并删除临时文件。
若遇到一个视频PES包头,记下该包头的起始位置。若遇到一个图片头, 记下该图片头的起始位置,否则继续搜索、解析视频缓冲区中的各种MPEG头 信息数据。
解析该图片头;若图片编码类型为B类型,则解码当前帧为B帧的帧编 码类型,否则,若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换, 并且,解码当前帧为后向参考帧。
如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息存入 到解码当前帧指向的对象;如果流的类型为节目流,同时也将该包头的起始 位置信息存入到解码当前帧指向的对象。
验证MPEG2码流的GOP结构是否出现非规则情况,如果是,则失败退出。
如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或者结 束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的帧编 码类型,否则,播放当前帧为前向参考帧。
如果总帧数计数器不为0,且当前图片结构不为帧类型,或者结束标志为 FALSE,则结束标志取反;如果结束标志为FALSE,则将播放当前帧指向对象 的信息放入到输出缓冲区中,使节目流中含有的总帧数计数器的值递增1。
如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干索 引子,并按预定的文件格式写入到一个临时文件中。
重复搜索、解析视频缓冲区中的各种MPEG头信息数据等各个步骤,直到 整个搜索结束或失败退出。
上述的MPEG码流带有索引I,其为一个二元组,;元素G为码流 的结构特征及索引I的特征所有的描述项,而元素D是按显示顺序排列的所 有的索引子。元素G为的结构为,其中:FrameRate为MPEG 流的帧率,Frames为该节目流中含有的总帧数,tagRegular标志索引的MPEG 流的GOP结构是否是规则的,Gop_NP、Gop_NB分别为被索引的MPEG流的每 个GOP中所含的P帧和B帧的数目,BL_GopIndex为在索引I中索引一个GOP 中的所有帧花费的字节数,BaseFrmNum为MPEG节目流中按播放顺序第一个I 帧的帧序号,TypeStream为索引流的类型。
MPEG码流中的索引子为I索引子或P索引子,I索引子为对构成GOP的 图片子组中参考帧含有I图的I型图片子组的索引形式;P索引子为对构成 GOP的图片子组中参考帧含有P图的P型图片子组的索引形式;上述的两种索 引子均四元组,在该四元组中,tag为索引子的 类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos为该索 引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息,dif_Bs 为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组中各个 B帧的位置相对于ipPos的位置差的相关描述信息。
而索引文件格式则是以索引I中元素G为基本数据结构的存储格式。
参见图3,为本发明随机访问MPEG2码流中任意帧的方法的流程图。本方 法基于MPEG-2或MPEG-1的节目流或基本流文件及与之相关的索引文件的, 根据流程图:
首先,打开基本流文件和与之相应的采用MPEG2码流索引文件的生成方 法所建立的相应码流的索引文件。
其次,从相应码流的索引文件中提取相关的参数,求出帧序号为需要的 帧序号的帧所在GOP的I型图片子组对应的索引子在索引I中D元素中的位 置,并读取一个索引子大小的内容。
然后,移动基本流文件的文件指针到所读取的索引子对应的图片子组中 相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据。
如果被搜索帧在图片组中的编号=0,则查找出最后解码的帧,结束; 否则,设前一个索引子为当前的索引子。
如果被搜索帧在图片组中的编号小于各索引子包含的帧数,且若被搜索 帧在图片组中的编号=0,则查找出最后解码的帧,结束;
否则,从相应码流的索引文件中读取一个索引子大小的内容;移动基本 流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相 应的位置处,利用MPEG解码引擎解码该帧的数据。
使被搜索帧在图片组中的编号=被搜索帧在图片组中的编号-各索引子包 含的帧数,设前一个索引子为当前的索引子;若被搜索帧在图片组中的编号 =0,则查找出最后解码的帧,结束。
从相应码流的索引文件中读取一个索引子大小的内容,移动基本流文件 的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置 处,利用MPEG解码引擎解码该帧的数据。
移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在 码流中的相应的位置中的相应个B帧的位置处,利用MPEG解码引擎解码该帧 的数据。
查找出最后解码的帧,结束。
参见图4,为本发明高速切变镜头边界搜索方法的流程图。本方法基于 MPEG-2或MPEG-1的节目流,或基本流文件及与之相关的索引文件的,根据流 程图:
首先,打开基本流文件,采用上述的一种MPEG2码流索引文件的生成方 法所建立的相应码流的索引文件;如果已检测完所有的GOP,记录所有的镜头 切换的位置,结束;否则,进行GOP级检测,若满足设定的相似性要求,则 继续检测Ik+1、Ik+2间的内容相似程度;否则说明Ik、Ik+1间可能存在镜头 的切换,进行图片子组级检测。
进行图片子组级检测,设SPl、SPl+1为两个相邻的图片子组,且SPl+1为P 型图片子组,检测SPl、SPl+1图片子组中参考帧Rm、Rm+1间的内容相似程度,若 满足设定的相似性要求,则继续检测下一个图片子组的参考帧Rm+2与Rm+1间的 内容相似度,否则说明Rm、Rm+1间可能存在镜头的切换,当发现SPl+1为I型图 片子组,SPl则为一个GOP的最后一个图片子组,进行帧级检测。
进行帧级检测,若该B帧序列属于一个GOP的最后一个图片子组,则分 析后转到进行GOP级检测,否则返回到图片子组级检测。
上述的GOP级检测为:对相距一个GOP长度的两个I帧Ik、Ik+1间的内 容相似程度的检测;图片子组级检测为:对处于两个I帧Ik、Ik+1间的帧按 图片子组的分辨率进行的检测;帧级检测为:对两个参考帧间的所有B帧序 列B1 B2...Bn进行分析,确定切变镜头的产生及其准确位置。
帧级检测依照下列方法:
帧级检测为帧级确认提供了在一个图片子组内进行检测的范围。帧级确 认将利用图片子组中的B帧的原始压缩域中的信息,判定切变镜头是否发生 极其发生的准确位置。
MPEG流中的B帧由不同类型的宏块构成,包括有帧内宏块(Intra)、前 向预测宏块(Forward)、后向预测宏块(Backward)、双向预测宏块(FwdBack)、 前向跳过宏块(FwdSkip)、后向跳过宏块(BackSkip)、双向跳过宏块 (FwdBackSkip)。
对于一个按播放顺序排列的帧序列RiB1B2...BnRj,若存在k(k=1,2,...n),帧Bk中 含有很多的双向预测宏块,根据MPEG的编码算法,如果Bk的两个参考帧Ri、Rj 间的内容存在很大的相关性。为此,定义一个参考帧间的相关函数 Relevance(df,db)。
其中df、db为两个相邻的参考帧的帧序号,NFwdBack(d)、NFwdBackSkip(d)分别求 出帧d中双向预测宏块数目及双向跳过宏块数目。
设Ri、Rj分别对应的播放帧序号为f、b,
如果:
Relevance(f,b)≥K2·SumofMacroBlocks
则:帧Ri、Rj间不存在镜头的切换。
其中:K2,K2∈(0,1)为系统的门限参数。
否则:
对于Bk(k=1,2,...n),如果:
NBackSkip(d)+NBackward(d)>K3·(NFwdSkip(d)+NForward(d))
Relevance(f,b)≤K4·SumofMacroBlocks
其中:K4,K4∈(0,1)为系统的门限参数
则:在Bk(k=1,2,...n)与其前一帧之间发生了镜头的切换。
其中:NBackSkip(d),NBackward(d)、NFwdSkip(d)、NForward(d)分别为帧d中后向跳 过宏块数目,后向预测宏块数目,前向跳过宏块数目以及前向预测宏块数目, 其中K3,(K3>1)为系统的门限参数。
另外,对于Bn,
如果:
Relevance(f,b)≤K4·SumofMacroBlocks
K3·(NBackSkip(d)+NBackward(d))<NFwdSkip(d)+NForward(d)
则:在Bn与其后一帧Rj之间发生了镜头的切换。
法律信息
- 2011-12-14
未缴年费专利权终止
IPC(主分类): H04N 7/173
专利号: ZL 00129698.1
申请日: 2000.10.13
授权公告日: 2003.12.17
- 2008-02-13
专利申请权、专利权的转移(专利权的转移)
专利申请权、专利权的转移(专利权的转移)变更项目:专利权人变更前权利人:北京算通数字技术研究中心有限公司 地址: 北京市中关村科学院南路8号 邮编: 100080变更后权利人:联合信源数字音视频技术(北京)有限公司 地址: 北京市海淀区上地东路1号盈创动力大厦A座701室 邮编: 100080登记生效日:2008.1.4
- 2008-02-13
专利申请权、专利权的转移(专利权的转移)
专利申请权、专利权的转移(专利权的转移)变更项目:专利权人变更前权利人:联合信源数字音视频技术(北京)有限公司 地址: 北京市海淀区上地东路1号盈创动力大厦A座701室 邮编: 100080变更后权利人:友联互通多媒体通讯科技(北京)有限公司 地址: 北京市海淀区上地东路1号盈创动力大厦A座601室 邮编: 100080登记生效日:2008.1.4
- 2003-12-17
- 2002-10-16
- 2002-05-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2009-12-25 | 2009-12-25 | | |