一种含有多路pcr的测试传输流的处理方法及装置制造方法

文档序号:7779386阅读:184来源:国知局
一种含有多路pcr的测试传输流的处理方法及装置制造方法
【专利摘要】本发明涉及一种含有多路PCR的测试传输流的处理方法及装置,所述方法是对测试用传输流进行整视频序列的截取,并在截取的传输流中,将除去空包和视频包的所有PID的最后一包中打上不连续标记,并修改顺序码。对于视频包则在含PCR的最后一包中打上不连续标记,并修改顺序码和PCR值,再修改后续的不含PCR的视频包中的顺序码。本发明简化了含有多路PCR的测试传输流的处理流程,解决了测试用的传输流在循环播放过程中出现的画面抖动、残损、声音中断及生成的测试流不可移植等问题,并节省了大量的存储空间。
【专利说明】—种含有多路PCR的测试传输流的处理方法及装置
【技术领域】
[0001]本发明涉及传输流【技术领域】,特别是涉及一种含有多路PCR的测试传输流的处理方法及装置。
【背景技术】
[0002]在数字电视研究设计,检测,维修过程中,通常需要使用符合测试标准的传输流(TS流)。现有的测试用的传输流的处理方法是使用播放机循环播放存储的测试用传输流。但由于预先存储的传输流长度和数量有限,播放长度为I分钟的TS流需要的存储空间为38M,如果播放I个小时的测试用传输流,则需要约2G的内存空间。这种处理方法占用了大量的存储空间,成本过高。另外在循环播放过程中,测试用传输流的首位接缝处出现画面残损,抖动,声音中断等问题。专利CN200910081867.3中介绍了一种测试用传输流处理方法和装置,是一种实时处理方法,属于边播放边处理,TS流具有不可移植性,即生成的TS流不可以独立于该测试用传输流处理装置使用。
[0003]另外,含有多路PCR的测试传输流跟含有唯一 PCR的单测试传输流相比,因视频序列结构复杂,涉及参数众多,其处理方法也更为复杂,现有技术中缺少对含有多路PCR的测试传输流进行处理,以获得无缝循环传输流的技术方案。
[0004]因此,针对上述问题,本发明提出了一种含有多路PCR的测试传输流的处理方法
及装置。

【发明内容】

[0005]本发明所要解决的技术问题是提供一种含有多路PCR的测试传输流的处理方法及装置,用于解决现有测试用传输流的处理方法占用存储空间大、成本高,且循环播放过程中首尾接缝处易出现画面残损、抖动、声音中断及生成的测试流不可移植等问题。
[0006]本发明解决上述技术问题的技术方案如下:一种含有多路PCR的测试传输流的处理方法,包括:
[0007]步骤1,选取含有多路PCR的测试传输流,找出传输流中各路视频流的包标志符PID,再找出各PID分别对应的视频序列的序列头及第一个图像组GOP头;
[0008]步骤2,分别截取并保存含各视频序列的一段传输流,且要求该段传输流的起始GOP循环和结束GOP循环的第一帧均为步骤I中对应的序列头和GOP头,并保证各路视频流中的视频序列均为同步出现的整视频序列;
[0009]步骤3,对截取的传输流,找出其除去空包和视频包以外所有的PID对应的第一个TS包的顺序码和最后一个TS包的包数,并修改最后一个TS包的顺序码为对应的第一个TS包的顺序码减1,同时在修改后的顺序码后插入不连续标记;
[0010]步骤4,对截取的传输流,分别找出各路视频流对应的视频包的第一包的顺序码Video_first_counter[i]及最后一个含 PCR 的视频包 Video_Last_packet[i],并计算Video_Last_packet [i]到截取的传输流结尾时所含的视频包的包总数PCR_cnt[i];[0011 ]步骤 5,将 Video_Last_packet [i]的顺序码修改为 Video_first_counter [i]减去PCR_cnt[i]的值,并以此为基准将Video_Last_packet[i]包到传输流结尾的视频包的顺序码依次递增;
[0012]步骤6,从截取的传输流中分别获取各路视频流中含PCR的第一个TS包的PCR信息,再根据两个PCR之间的固定差值Λ PCR获得Vide0_LaSt_paCket [i]的PCR信息,并将Video_Last_packet[i]的不连续标记改为I。
[0013]在上述技术方案的基础上,本发明还可以做如下改进。
[0014]进一步,所述步骤I中找出视频流的PID具体包括:在测试传输流中查找节目关联表PAT,从PAT表中,找出TS流中各视频流分别对应的节目映射表PMT的PID,并记录,再根据节目映射表PMT的PID找出对应视频流的PID,并记录。
[0015]进一步,所述步骤I中找出各PID分别对应的视频序列的序列头及第一个图像组GOP头具体包括:找出传输流中各视频流的PID对应的视频序列中的序列头,搜索该视频序列中的第一个GOP头,确定含该GOP头的帧所在TS包在传输流中的位置。
[0016]进一步,所述步骤2具体包括:根据步骤I确定的序列头和GOP头,确定要截取的传输流的起始GOP循环序号和结束GOP循环序号,并确保起始GOP循环和结束GOP循环的第一帧均为步骤I中对应的序列头和GOP头,同时使各路视频流中的视频序列均为同步出现的整视频序列;截取满足条件的传输流,并以文件的方式进行保存。
[0017]进一步,所述步骤6中根据两个PCR之间的固定差值
packet [i]的PCR信息具体包括:根据MPEG-2传输流标准确定两个PCR之间的固定差值Δ PCR,再根据截取的传输流中含PCR的第一个TS包的PCR信息,按MPEG-2传输流标准的规定计算Video_Last_packet [i]包中的基本值PCR_ba和扩展值PCR_ext,将PCR_ba和PCR_ext分别赋值给PCR信息所在的高33位和低9位,得到Video_Last_packet [i]的PCR信
肩、O
[0018]本发明的技术方案还包括一种含有多路节目时钟基准PCR的测试传输流的处理装置,其与上述测试传输流的处理方法的技术方案一一对应,包括:
[0019]预处理模块,其用于选取含有多路PCR的测试传输流,找出传输流中各路视频流的包标志符PID,再找出各PID分别对应的视频序列的序列头及第一个图像组GOP头;
[0020]传输流截取模块,其用于分别截取并保存含各视频序列的一段传输流,且要求该段传输流的起始GOP循环和结束GOP循环的第一帧均为所述预处理模块中对应的序列头和GOP头,并保证各路视频流中的视频序列均为同步出现的整视频序列;
[0021]第一顺序码修改模块,其用于对所有截取的传输流,找出其除去空包和视频包以外所有的PID对应的第一个TS包的顺序码和最后一个TS包的包数,并修改最后一个TS包的顺序码为对应的第一个TS包的顺序码减1,同时在修改后的顺序码后插入不连续标记;
[0022]视频包处理模块,其用于对截取的传输流,分别找出各路视频流对应的视频包的第一包的顺序码Video_first_counter [i]及最后一个含PCR的视频包Video_Last_packet [i],并计算Video_Last_packet [i]到截取的传输流结尾时所含的视频包的包总数PCR_cnt[i];
[0023]第二顺序码修改模块,其用于将Video_Last_packet[i]的顺序码修改为Video_first_counter[i]减去 PCR_cnt[i]的值,并以此为基准将 Video_Last_packet[i]包到传输流结尾的视频包的顺序码依次递增;
[0024]PCR计算模块,其用于从截取的传输流中分别获取各路视频流中含PCR的第一个TS包的PCR信息,再根据两个PCR之间的固定差值Λ PCR获得Vide0_LaSt_paCket [i]的PCR信息,并将Video_Last_packet [i]的不连续标记改为I。
[0025]进一步,所述预处理模块用于找出视频流的PID具体包括:在测试传输流中查找节目关联表PAT,从PAT表中,找出TS流中各视频流对应的节目映射表PMT的PID,并记录,再根据节目映射表PMT的PID找出各视频流的PID,并记录。
[0026]进一步,预处理模块用于找出各PID分别对应的视频序列的序列头及第一个图像组GOP头具体包括:找出传输流中各视频流的PID对应的视频序列中的序列头,搜索该视频序列中的第一个GOP头,确定含该GOP头的帧所在TS包在传输流中的位置。
[0027]进一步,传输流截取模块具体用于:根据预处理模块确定的序列头和GOP头,确定要截取的传输流的起始GOP循环序号和结束GOP循环序号,并确保起始GOP循环和结束GOP循环的第一帧均为预处理模块中对应的序列头和GOP头,同时使各路视频流中的视频序列均为同步出现的整视频序列;截取满足条件的传输流,并以文件的方式进行保存。
[0028]进一步,所述PCR计算模块用于根据两个PCR之间的固定差值APCR获得Video_Last_packet [i]的PCR信息具体包括:根据MPEG-2传输流标准确定两个PCR之间的固定差值Λ PCR,再根据截取的传输流中含PCR的第一个TS包的PCR信息,按MPEG-2传输流标准的规定计算Video_Last_packet [i]包中的基本值PCR_ba和扩展值PCR_ext,将PCR_ba和PCR_ext分别赋值给PCR信息所在的高33位和低9位,得到Video_Last_packet [i]的PCR信息。
[0029]本发明的有益效果是:本发明对测试用传输流进行整视频序列的截取,并在其结尾处添加不连续标记并修改PCR值,降低了含有多路PCR的测试传输流处理难度。在很大程度上节省了存储空间,并解决了测试过程中出现画面残损、抖动、声音中断等现象,且生成的测试流可在任意装置上使用,具有可移植性,实现了 TS流的无缝循环。
【专利附图】

【附图说明】
[0030]图1为本发明所述含有多路PCR的测试传输流处理方法的流程示意图;
[0031]图2为本发明中视频序列与GOP关系图不意图,图中Ip B1^ P1分别表不Video_Packet_PID[l]的帧,12、B2、P2 分别表示 Video_Packet_PID [2]的帧;
[0032]图3为本发明实施例中相关TS包的处理示意图。图中国表示视频包,圖和圖:
均表示除视频包和空包外的其他PID对应的TS包;
[0033]图4为所述含有多路PCR的测试传输流处理装置的结构示意图。
【具体实施方式】
[0034]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0035]如图1所示,本实施例公开了一种含有多路PCR的测试传输流处理方法,具体包括如下步骤。
[0036]步骤1,选取含有多路PCR的测试传输流,找出传输流中各路视频流的包标志符PID,再找出各PID分别对应的视频序列的序列头及第一个图像组GOP头。
[0037]本实施例中,各路视频流均有其相对应的PCR。对于含有多路PCR的测试传输流,找出各视频流的PID的方法具体包括:在测试传输流中查找节目关联表PAT,从PAT表中,找出TS流中各视频流分别对应的节目映射表PMT的PID,记为PMT_PID[i],再根据PMT_PID [i]找出对应视频流的PID,记为Video_Packet_PID[i]。
[0038]确定视频流的PID后,找出各PID分别对应的视频序列的序列头及第一个图像组GOP头的具体方法包括:找出各视频流的PID对应的视频序列中的序列头,搜索该视频序列中的第一个GOP头,并确定含该GOP头的帧所在TS包在传输流中的位置。
[0039]步骤2,分别截取并保存含各视频序列的一段传输流,且要求该段传输流的起始GOP循环和结束GOP循环的第一帧均为步骤I中对应的序列头和GOP头,并保证各路视频流中的视频序列均为同步出现的整视频序列。
[0040]如图2所示,一个GOP循环从GOP头开始,延续若干个帧,因此在截取TS流过程中,应根据图中所示GOP头和序列头判断视频序列起始与终止,进而实现整视频序列的截取,保证TS流在内容上的连续。具体地,要截取整视频序列的传输流,需根据步骤I确定的序列头和GOP头,确定要截取的传输流的起始GOP循环序号和结束GOP循环序号,要确保起始GOP循环和结束GOP循环的第一帧均为步骤I中对应的序列头和GOP头,同时使各路视频流中的视频序列均为同步出现的整视频序列;再截取满足条件的传输流,并以文件的方式进行保存。本实施例中将其保存在名为TSMidfile的文件中,以供图3所示的后续步骤使用。
[0041]步骤3,对截取的传输流,找出其除去空包和视频包以外所有的PID对应的第一个TS包的顺序码和最后一个TS包的包数,并修改最后一个TS包的顺序码为对应的第一个TS包的顺序码减1,同时在修改后的顺序码后插入不连续标记。
[0042]具体地,先从步骤2确定的TSMidfile文件中枚举出所有除空包(即OxlFFF的TS包)和视频包(即步骤I中记为Video_Packet_PID[i]对应的视频包)以外的所有PID,记为PID[i],找出上述PID[i]的第一包的顺序码,记为PID_counter[i],以及上述PID[i]的最后一包的包数,记为PID_last_packet [i],修改PID_last_packet [i]包的顺序码为PID_counter [i]-l,并在顺序码后插入不连续标记:01、80。
[0043]步骤4,对截取的传输流,分别找出各路视频流对应的视频包的第一包的顺序码Video_first_counter[i]及最后一个含 PCR 的视频包 Video_Last_packet[i],并计算Video_Last_packet [i]到截取的传输流结尾时所含的视频包的包总数PCR_cnt[i]。
[0044]步骤5,将 Video_Last_packet [i]的顺序码修改为 Video_first_counter [i]减去PCR_cnt[i]的值,并以此为基准将Video_Last_packet[i]包到传输流结尾的视频包的顺序码依次递增。
[0045]步骤6,从截取的传输流中分别获取各路视频流中含PCR的第一个TS包的PCR信息,再根据两个PCR之间的固定差值Λ PCR获得Vide0_LaSt_paCket [i]的PCR信息,并将Video_Last_packet[i]的不连续标记改为I。
[0046]根据两个PCR之间的固定差值的PCR信息的方法具体包括:根据MPEG-2传输流标准确定两个PCR之间的固定差值APCR,再根据截取的传输流中含PCR的第一个TS包的PCR信息,按MPEG-2传输流标准的规定计算Vide0_Last_packet [i]包中的基本值PCR_ba和扩展值PCR_ext,将PCR_ba和PCR_ext分别赋值给PCR信息所在的高33位和低9位,得到Video_Last_packet[i]的PCR信息。
[0047]由以下计算公式(I)和(2)可得到PCR的差值Λ PCR:
[0048]
【权利要求】
1.一种含有多路节目时钟基准PCR的测试传输流的处理方法,其特征在于,包括: 步骤1,选取含有多路PCR的测试传输流,找出传输流中各路视频流的包标志符PID,再找出各PID分别对应的视频序列的序列头及第一个图像组GOP头; 步骤2,分别截取并保存含各视频序列的一段传输流,且要求该段传输流的起始GOP循环和结束GOP循环的第一帧均为步骤I中对应的序列头和GOP头,并保证各路视频流中的视频序列均为同步出现的整视频序列; 步骤3,对截取的传输流,找出其除去空包和视频包以外所有的PID对应的第一个TS包的顺序码和最后一个TS包的包数,并修改最后一个TS包的顺序码为对应的第一个TS包的顺序码减1,同时在修改后的顺序码后插入不连续标记; 步骤4,对截取的传输流,分别找出各路视频流对应的视频包的第一包的顺序码Video_first_counter [i]及最后一个含 PCR 的视频包 Video_Last_packet [i],并计算Video_Last_packet [i]到截取的传输流结尾时所含的视频包的包总数PCR_cnt[i]; 步骤 5,将 Video_Last_packet[i]的顺序码修改为 Video_first_counter[i]减去PCR_cnt[i]的值,并以此为基准将Video_Last_packet[i]包到传输流结尾的视频包的顺序码依次递增; 步骤6,从截取的传输流中分别获取各路视频流中含PCR的第一个TS包的PCR信息,再根据两个PCR之间的固定差值Λ PCR获得Video_Last_packet [i]的PCR信息,并将Video_Last_packet[i]的不连续标记改为I。
2.根据权利要求1所述的测试传输流的处理方法,其特征在于,所述步骤I中找出视频流的PID具体包括:在测试传输流中查找节目关联表PAT,从PAT表中,找出TS流中各视频流分别对应的节目映射表PMT的PID,并记录,再根据节目映射表PMT的PID找出对应视频流的PID,并记录。
3.根据权利要求1或2所述的测试传输流的处理方法,其特征在于,所述步骤I中找出各PID分别对应的视频序列的序列头及第一个图像组GOP头具体包括:找出传输流中各视频流的PID对应的视频序列中的序列头,搜索该视频序列中的第一个GOP头,确定含该GOP头的帧所在TS包在传输流中的位置。
4.根据权利要求1所述的测试传输流的处理方法,其特征在于,所述步骤2具体包括:根据步骤I确定的序列头和GOP头,确定要截取的传输流的起始GOP循环序号和结束GOP循环序号,并确保起始GOP循环和结束GOP循环的第一帧均为步骤I中对应的序列头和GOP头,同时使各路视频流中的视频序列均为同步出现的整视频序列;截取满足条件的传输流,并以文件的方式进行保存。
5.根据权利要求1所述的测试传输流的处理方法,其特征在于,所述步骤6中根据两个PCR之间的固定差值的PCR信息具体包括:根据MPEG-2传输流标准确定两个PCR之间的固定差值APCR,再根据截取的传输流中含PCR的第一个TS包的PCR信息,按MPEG-2传输流标准的规定计算Vide0_LaSt_paCket [i]包中的基本值PCR_ba和扩展值PCR_ext,将PCR_ba和PCR_ext分别赋值给PCR信息所在的高33位和低9 位,得至Ij Video_Last_packet [i]的 PCR 信息。
6.一种含有多路节目时钟基准PCR的测试传输流的处理装置,其特征在于,包括: 预处理模块,其用于选取含有多路PCR的测试传输流,找出传输流中各路视频流的包标志符PID,再找出各PID分别对应的视频序列的序列头及第一个图像组GOP头; 传输流截取模块,其用于分别截取并保存含各视频序列的一段传输流,且要求该段传输流的起始GOP循环和结束GOP循环的第一帧均为所述预处理模块中对应的序列头和GOP头,并保证各路视频流中的视频序列均为同步出现的整视频序列; 第一顺序码修改模块,其用于对所有截取的传输流,找出其除去空包和视频包以外所有的PID对应的第一个TS包的顺序码和最后一个TS包的包数,并修改最后一个TS包的顺序码为对应的第一个TS包的顺序码减1,同时在修改后的顺序码后插入不连续标记; 视频包处理模块,其用于对截取的传输流,分别找出各路视频流对应的视频包的第一包的顺序码 Video_first_counter [i]及最后一个含 PCR 的视频包 Video_Last_packet [i],并计算Video_Last_packet [i]到截取的传输流结尾时所含的视频包的包总数PCR_cnt[i]; 第二顺序码修改模块,其用于将Video_Last_packet[i]的顺序码修改为Video_f irst_counter [i]减去 PCR_cnt[i]的值,并以此为基准将 Video_Last_packet [i]包到传输流结尾的视频包的顺序码依次递增; PCR计算模块,其用于从截取的传输流中分别获取各路视频流中含PCR的第一个TS包的PCR信息,再根据两个PCR之间的固定差值Λ PCR获得Vide0_LaSt_paCket [i]的PCR信息,并将Video_Last_packet[i]的不连续标记改为I。
7.根据权利要求6所述的测试传输流的处理装置,其特征在于,所述预处理模块用于找出视频流的PID具体包括:在测试传输流中查找节目关联表PAT,从PAT表中,找出TS流中各视频流对应的节目映射表PMT的PID,并记录,再根据节目映射表PMT的PID找出各视频流的PID,并记录。
8.根据权利要求6所述的`测试传输流的处理装置,其特征在于,预处理模块用于找出各PID分别对应的视频序列的序列头及第一个图像组GOP头具体包括:找出传输流中各视频流的PID对应的视频序列中的序列头,搜索该视频序列中的第一个GOP头,确定含该GOP头的帧所在TS包在传输流中的位置。
9.根据权利要求6所述的测试传输流的处理装置,其特征在于,传输流截取模块具体用于:根据预处理模块确定的序列头和GOP头,确定要截取的传输流的起始GOP循环序号和结束GOP循环序号,并确保起始GOP循环和结束GOP循环的第一帧均为预处理模块中对应的序列头和GOP头,同时使各路视频流中的视频序列均为同步出现的整视频序列;截取满足条件的传输流,并以文件的方式进行保存。
10.根据权利要求6所述的测试传输流的处理装置,其特征在于,所述PCR计算模块用于根据两个PCR之间的固定差值的PCR信息具体包括:根据MPEG-2传输流标准确定两个PCR之间的固定差值Λ PCR,再根据截取的传输流中含PCR的第一个TS包的PCR信息,按MPEG-2传输流标准的规定计算Video_Last_packet [i]包中的基本值PCR_ba和扩展值PCR_ext,将PCR_ba和PCR_ext分别赋值给PCR信息所在的高33位和低9位,得到Video_Last_packet [i]的PCR信息。
【文档编号】H04N21/234GK103607597SQ201310655278
【公开日】2014年2月26日 申请日期:2013年12月6日 优先权日:2013年12月6日
【发明者】王利芳, 赵鹏, 赵德智, 徐晖 申请人:北京牡丹视源电子有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1