CN101562752A - 生成复用传输流文件的方法及装置 - Google Patents
生成复用传输流文件的方法及装置 Download PDFInfo
- Publication number
- CN101562752A CN101562752A CNA2009100855390A CN200910085539A CN101562752A CN 101562752 A CN101562752 A CN 101562752A CN A2009100855390 A CNA2009100855390 A CN A2009100855390A CN 200910085539 A CN200910085539 A CN 200910085539A CN 101562752 A CN101562752 A CN 101562752A
- Authority
- CN
- China
- Prior art keywords
- code stream
- bag
- factor
- formula
- material code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Television Systems (AREA)
Abstract
本发明公开了一种生成复用传输流文件的方法及装置,该方法中引入权重因子和优先因子两个参数,每从某素材码流取出一包数据送往目标流时,各素材码流的优先因子按同一规则全都更新,而被取数据包之素材码流的优先因子需再减去1,如此复用过程中各素材码流的优先级随时而变,实现了均匀复合。本发明使用数学方法进行复用,使得复用过程的复杂度大大降低,容易理解和实现,并且目标码流中每一个PCR字段的计算都是以初始时间加间隔时间得到PCR字段所在的第Bj包的时间,再转换为PCR字段,其PCR字段的更新都是以相同的初始时间为基准计算得到的,这样得到的PCR最准确,并且计算过程简单。
Description
技术领域
本发明涉及数字压缩技术领域,尤其涉及一种生成复用传输流文件的方法及装置。
背景技术
在数字电视的传输过程中,对多个素材传输流进行复用的目的在于复用后的含有多个素材传输流只占用一个物理传输信道,因此在解码器端只要一套固定的接收设备即可选择传输流中不同的素材码流,大大简化了接收设备的实现。
目前通过硬件实现多个素材传输流的多路复用的技术很多,但是用硬件实现传输流的多路复用存在如下缺陷:移植技术的可移植性差,当脱离了相应的硬件后,多路复用的功能就无法完成,此外,采用硬件实现多路复用的开发成本和工作成本高。
中国专利200510041803.2公开了一种MPEG-2单节目传输流多路复用方法,其采用软硬件相结合的技术方案实现码流复用,具体包括:首先节目特殊信息PSI和传输速率收集单元对参加复用的各路信号进行预处理,按照节目关联表PAT-节目映射表PMT-基本流ES的层次提取每路TS流的PAT表、PMT表和ES的公共包识别符PID信息并获得传输码率;其次进行节目特殊信息PSI的重构和重新映射单元重构PSI信息,将各路音频、视频PID和节目参考时钟的公共包识别符PCR_PID进行重映射,使解码端能正确识别复用后传输流中的各个节目并获得正确的时钟信息,最后再由多路复用单元算出复用后的传输速率,通过插入空包并将不同的节目的TS包重新排列而不改变原始节目流PCR值的方法,将各个单节目传输流复用为一路传输流输出。
然而,中国专利200510041803.2所公开的技术方案是集中插入某一素材传输流的若干包数据,直到出现该素材流中的包含节目参考时钟信息的TS包,经过计算后同时插入若干包空包,这样就会导致复用不均匀,且这种复用方法操作过程繁琐复杂。
发明内容
本发明提供一种生成复用传输流文件的方法及装置,以解决现有技术中存在的复用不均匀和复用方法操作过程繁琐复杂的问题。
为达到上述目的,本发明一方面提供了一种生成复用传输流文件的方法,包括以下步骤:
S101,初始化:素材码流TS[i]的总数为N+1、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj,其中,TS[i]、W[i]和P[i]的参数i取值范围为:0,1…,N,R[i]和t0[i]的i取值范围是为:0,1…,N-1;
S102,根据公式P[i]=P[i]+W[i]更新各素材码流的优先因子P[i];
S103,找出最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;
S104,判断第Bj包中是否有节目参考时钟PCR字段,如果有,则执行步骤S105,否则执行步骤S106;
S105,更新第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
S106,将第Bj包插入目标码流中;
S107,将当前包计数值Bj加1;
S108,根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],并将TS[I]的指针移向新的位置;
S109,判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,执行步骤S102。
本发明的生成复用传输流文件的方法,所述初始化,具体包括以下步骤:
S1011,确定素材码流TS[i]的总数为N+1,其中i=0,1…,N;
S1012,根据标准《ISO/IEC 13818-2》的公式I-2-5计算各素材码流的码率R[i],其中i=0,1…,N-1;
S1013,根据各素材码流的码率R[i]确定目标码流的码率Rm,其中,Rm>R[0]+…+R[N-1];
S1014,计算各素材码流的节目参考时钟PCR的初始时间t0[i],其中i=0,1…,N-1;具体包括:首先找到第一个有节目参考时钟PCR字段的数据包,并计算出从起始点到该包的间隔包数cntB[i];其次,根据节目参考时钟PCR字段计算出该包所在的时间tt[i];然后,根据公式interT[i]=cntB[i]×188×8/R[i]计算从起始点到该包的时间间隔interT[i];最后,根据公式t0[i]=tt[i]-interT[i]计算初始时间t0[i];
步骤S1015,根据公式 计算各素材码流的权重因子W[i],其中i=0,1…,N-1,并根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子W[N],即空包文件的权重因子;
步骤S1016,根据公式P[i]=n×W[i]对各素材码流的优先因子P[i]赋初值,其中n为不等于0的自然数,i=0,1…,N;
步骤S1017,创建空包数据码流作为第N个素材码流,记为TS[N],该码流由一包空包数据组成;
步骤S1018,将各素材码流指针指向本码流的第一包;
步骤S1019,确定目标码流的包计数值的初值为Bj=0。
本发明的生成复用传输流文件的方法,所述计算各个素材码流的权重因子W[N],包括如下步骤:
首先,根据S101初始化过程中得到的参数R[i]、Rm和公式 计算第0至N-1个素材码流的权重因子;
其次,根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子,即空包文件的权重因子。
本发明的生成复用传输流文件的方法,所述计算各个素材码流的权重因子W[N],包括如下步骤:
首先,分析N个素材码流,确定各素材码流在相同时间长度时的数据包数,记为B[i],其中i=0,1,…,N-1;
其次,根据公式Bm≥B[0]+B[1]+…+B[N-1]计算目标码流的包数Bm,其中i=0,],…,N-1;
再者,根据公式 计算权重因子Wi,其中i=0,1,…,N-1;
最后,根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子,即空包码流的权重因子。
再一方面,本发明还提供了一种生成复用传输流文件的装置,包括:
初始化模块,用于对素材码流TS[i]的总数为N+1、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj进行初始化,其中,TS[i]、W[i]和P[i]的参数i取值范围为:0,1…,N,R[i]和t0[i]的i取值范围是为:0,1…,N-1;
第一优先因子更新模块,用于根据公式P[i]=P[i]+W[i]对所述初始化模块获取的各素材码流的优先因子P[i]进行更新;
优先权因子选择模块,用于从所述第一优先因子更新模块更新后的优先因子P[i]中找出最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;
第一判断模块,用于判断所述优先权因子选择模块获取的第Bj包中是否有节目参考时钟PCR字段,如果有,则触发PCR字段更新模块,否则触发数据包插入模块;
PCR字段更新模块,用于更新所述优先权因子选择模块获取的第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
数据包插入模块,用于将所述PCR字段更新模块更新后获得的第Bj包插入目标码流中,将当前包计数值Bj加1,并触发第二优先因子更新模块;
第二优先因子更新模块,用于根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],将TS[I]的指针移向新的位置,并触发第二判断模块;
第二判断模块,用于判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,触发所述第一优先因子更新模块。
再一方面,本发明还提供另一种生成复用传输流文件的方法,包括以下步骤:
S401,初始化:素材码流TS[i]的总数N、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj,其中i=0,1…,N-1;
S402,根据公式P[i]=P[i]+W[i]更新各素材码流的优先因子P[i];
S403,判断所有的P[i]中,是否有大于等于1的优先因子,如果有,则执行步骤S404,否则,执行步骤S406;
S404,目标码流中插入一个空包数据;
S405,将当前包计数值Bj加1;
S406,从所有优先因子P[i]中选出值最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;
S407,判断第Bj包中是否有节目参考时钟PCR字段,如果有,则执行步骤S408,否则,执行步骤S409;
S408,更新第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
S409,将第Bj包插入目标码流中;
S410,将当前包计数值Bj加1;
S411,根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],并将TS[I]的指针移向该码流的下一包;
S412,判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,执行步骤S302。
本发明的生成复用传输流文件的方法,所述初始化,具体包括如下步骤:
S4011,确定素材码流TS[i]的总数N,其中i=0,1…,N-1;
S4012,根据标准《ISO/IEC 13818-2》的公式I-2-5计算计算各素材码流的码率R[i],其中i=0,1…,N-1;
S4013,根据各素材码流的码率R[i]确定目标码流的码率Rm,其中,Rm>R[0]+…+R[N-1];
S4014,计算各素材码流的节目参考时钟PCR的初始时间t0[i],其中i=0,1…,N-1,具体包括:首先找到第一个有节目参考时钟PCR字段的数据包,并计算出从起始点到该包的间隔包数cntB[i];其次,根据节目参考时钟PCR字段计算出该包所在的时间tt[i];然后,根据公式interT[i]=cntB[i]×188×8/R[i]计算从起始点到该包的时间间隔interT[i];最后,根据公式t0[i]=tt[i]-interT[i]计算初始时间t0[i];
S4015,根据公式 计算各素材码流的权重因子W[i],其中i=0,1…,N-1;
S4016,根据公式P[i]=n×W[i]对各素材码流的优先因子P[i]赋初值,其中n为不等于0的自然数,i=0,1…,N-1;
S4017,将各素材码流指针指向本码流的第一包;
S4018,确定目标码流的包计数值的初值为Bj=0。
再一方面,本发明还提供另一种生成复用传输流文件的装置,包括:
初始化模块,用于对素材码流TS[i]的总数N、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj进行初始化,其中i=0,1…,N-1;
第一优先权因子更新模块,用于根据公式P[i]=P[i]+W[i]对所述初始化模块获取的各素材码流的优先因子P[i]进行更新;
第一判断模块,用于判断所述第一优先权因子更新模块获取的所有的P[i]中是否有大于等于1的优先因子,如果有,则触发第一数据包插入模块,否则,触发优先权因子选择模块;
第一数据包插入模块,用于在目标码流中插入一个空包数据,将当前包计数值Bj加1;
优先权因子选择模块,用于从所有优先因子P[i]中选出值最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包,并触发第二判断模块;
第二判断模块,用于判断所述优先权因子选择模块获得的第Bj包中是否有节目参考时钟PCR字段,如果有,则触发PCR字段更新模块,否则,触发第二数据插入模块;
PCR字段更新模块,用于对更新所述优先权因子选择模块获得的第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
第二数据插入模块,用于将所述PCR字段更新模块更新后获得的第Bj包插入目标码流中,将当前包计数值Bj加1,并触发第二优先权因子更新模块;
第二优先权因子更新模块,用于根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],将TS[I]的指针移向该码流的下一包,并触发第三判断模块;
第三判断模块,用于判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,触发所述第一优先权因子更新模块。
本发明的生成复用传输流文件的方法中引入权重因子和优先因子两个参数,每从某素材码流取出一包数据送往目标流时,各素材码流的优先因子按同一规则全都更新,而被取数据包之素材码流的优先因子需再减去1,如此复用过程中各素材码流的优先级随时而变,实现了均匀复合的目的。每复用一包数据后,提供该包数据的素材流TS[I]的优先因子P[l]更新为P[l]-1,之后所有素材码流的优先因子P[i]全部更新为P[i]+W[i],更新后的优先因子表示在新一轮的复用中各自所代表的素材码流的优先级,作为新一轮复用过程中选择新的IS[l]的依据。此外,本发明使用数学方法进行复用,使得复用过程的复杂度大大降低,容易理解和实现,并且目标码流中每一个PCR字段的计算都是以初始时间加间隔时间得到PCR字段所在的第Bj包的时间,再转换为PCR字段,其PCR字段的更新都是以相同的初始时间为基准计算得到的,这样得到的PCR最准确,并且计算过程简单。
附图说明
图1为本发明的一种生成复用传输流文件的方法的流程图;
图2为图1中的初始化的流程图;
图3为本发明的一种生成复用传输流文件的装置的结构框图;
图4为本发明的另一种生成复用传输流文件的方法的流程图;
图5为图4中的初始化的流程图;
图6为本发明的另一种生成复用传输流文件的装置的结构框图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细描述:
参考图1发明的一种生成复用传输流文件的方法,具体包括如下步骤:
步骤S101,初始化素材码流TS[i]的总数为N+1、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj,其中TS[i]、W[i]和P[i]的参数i取值范围是(0,1…,N),R[i]和t0[i]的i取值范围是(0,1…,N-1)。其具体初始化的过程如图2所示,具体包括如下步骤:
步骤S1011,确定素材码流TS[i]的总数为N+1,其中i=0,1…,N。
步骤S1012,根据标准《ISO/IEC 13818-2》的公式I-2-5计算各素材码流的码率R[i]。其中i=0,1…,N-1。
步骤S1013,根据各素材码流的码率R[i]确定目标码流的码率Rm,其中,Rm>R[0]+…+R[N-1]。
步骤S1014,计算各素材码流的节目参考时钟PCR的初始时间t0[i],其中i=0,1…,N-1。具体包括:首先找到第一个有节目参考时钟PCR字段的数据包,并计算出从起始点到该包的间隔包数cntB[i];其次,根据节目参考时钟PCR字段计算出该包所在的时间tt[i];然后,根据公式interT[i]=cntB[i]×188×8/R[i]计算从起始点到该包的时间间隔interT[i];最后,根据公式t0[i]=tt[i]-interT[i]计算初始时间t0[i]。
步骤S1015,根据公式 计算各素材码流的权重因子W[i],其中i=0,1…,N-1,并根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子W[N],即空包文件的权重因子。具体为:首先,根据S101初始化过程中得到的参数R[i]、Rm和公式 计算第0至N-1个素材码流的权重因子;其次,根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子,即空包文件的权重因子。,由此得到从0到N共N+1个素材码流的权重因子。其中,计算这N+1个素材码流的权重因子W[i]还可以采用如下步骤:
1)首先分析N个素材码流,确定各素材码流在相同时间长度时的数据包数,记为B[i],其中i=0,1,…,N-1;
2)计算数据包总数Bm:Bm≥B[0]+B[1]+…+B[N-1],其中i=0,1,…,N-1;
3)计算权重因子 其中i=0,1,…,N-1;
4)根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子W[N],即空包码流的权重因子。
步骤S1016,根据公式P[i]=n×W[i]对各素材码流的优先因子P[i]赋初值,其中n为不等于0的自然数,i=0,1…,N。
步骤S1017,创建空包数据码流作为第N个素材码流,记为TS[N],该码流由一包空包数据组成。
步骤S1018,将各素材码流指针指向本码流的第一包。
步骤S1019,确定目标码流的包计数值的初值为Bj=0,初始化完毕即建立空的目标码流文件完毕。
步骤S102,根据公式P[i]=P[i]+W[i]更新各素材码流的优先因子P[i]。
步骤S103,找出最大的优先因子,记为P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包。
步骤S104,判断第Bj包中是否有节目参考时钟PCR字段,如果有,则执行步骤S105,否则执行步骤S106。
步骤S105,更新第Bj包的节目参考时钟PCR字段。具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段。
步骤S106,将第Bj包插入目标码流中。
步骤S107,将当前包计数值Bj加1。
步骤S108,根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],并将TS[I]的指针移向新的位置。
步骤S109,判断是否符合复用结束条件,如果符合,则结束复用,否则,执行步骤102,复用结束条件为:当N个素材码流中任何一个码流的指针指向本码流的末尾时,结束复用。
参考图3,本发明的生成复用传输流文件的装置,包括:初始化模块301,用于对素材码流TS[i]的总数为N+1、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj进行初始化,其中,TS[i]、W[i]和P[i]的参数i取值范围为:0,1…,N,R[i]和t0[i]的i取值范围是为:0,1…,N-1;
第一优先因子更新模块302,用于根据公式P[i]=P[i]+W[i]对初始化模块301获取的各素材码流的优先因子P[i]进行更新;优先权因子选择模块303,用于从第一优先因子更新模块302更新后的优先因子P[i]中找出最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;第一判断模块304,用于判断优先权因子选择模块303获取的第Bj包中是否有节目参考时钟PCR字段,如果有,则触发PCR字段更新模块305,否则触发数据包插入模块306;PCR字段更新模块305,用于更新优先权因子选择模块303获取的第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;数据包插入模块306,用于将PCR字段更新模块305更新后获得的第Bj包插入目标码流中,将当前包计数值Bj加1,并触发第二优先因子更新模块307;第二优先因子更新模块307,用于根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],将TS[I]的指针移向新的位置,并触发第二判断模块308;第二判断模块308,用于判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,触发第一优先因子更新模块302。
参考图4本发明的另一种生成复用传输流文件的方法,具体包括如下步骤:
步骤S401,初始化素材码流TS[i]的总数N、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj,其中i=0,1…,N-1。其具体初始化的过程如图5所示,具体包括如下步骤:
步骤S4011,确定素材码流TS[i]的总数N,其中i=0,1…,N-1。
步骤S4012,根据标准《ISO/IEC 13818-2》的公式I-2-5计算计算各素材码流的码率R[i]。其中i=0,1…,N-1。
步骤S4013,根据各素材码流的码率R[i]确定目标码流的码率Rm,其中,Rm>R[0]+…+R[N-1]。
步骤S4014,计算各素材码流的节目参考时钟PCR的初始时间t0[i],其中i=0,1…,N-1。具体包括:首先找到第一个有节目参考时钟PCR字段的数据包,并计算出从起始点到该包的间隔包数cntB[i];其次,根据节目参考时钟PCR字段计算出该包所在的时间tt[i];然后,根据公式interT[i]=cntB[i]×188×8/R[i]计算从起始点到该包的时间间隔interT[i];最后,根据公式t0[i]=tt[i]-interT[i]计算初始时间t0[i]。
步骤S4015,根据公式 计算各素材码流的权重因子W[i],其中i=0,1…,N-1。
步骤S4016,根据公式P[i]=n×W[i]对各素材码流的优先因子P[i]赋初值,其中n为不等于0的自然数,i=0,1…,N-1。
步骤S4017,将各素材码流指针指向本码流的第一包。
步骤S4018,确定目标码流的包计数值的初值为Bj=0。
步骤S402,根据公式P[i]=P[i]+W[i]更新各素材码流的优先因子P[i]。
步骤S403,判断所有的P[i]中,是否有大于等于1的优先因子,如果有,则执行步骤S404,否则,执行步骤S406。
步骤S404,目标码流中插入一个空包数据。
步骤S405,将当前包计数值Bj加1。
步骤S406,从所有优先因子P[i]中选出值最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包。
步骤S407,判断第Bj包中是否有节目参考时钟PCR字段,如果有,则执行步骤S408,否则,执行步骤S409。
步骤S408,更新第Bj包的节目参考时钟PCR字段。具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time最后,根据得到的Time计算出要更新的PCR字段。
步骤S409,将第Bj包插入目标码流中。
步骤S410,将当前包计数值Bj加1。
步骤S411,根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],并将TS[I]的指针移向该码流的下一包。
步骤S412,判断是否符合复用结束条件,如果符合,则结束复用,否则,执行步骤302,复用结束条件为:当N个素材码流中任何一个码流的指针指向本码流的末尾时,结束复用。
参考图6,本发明的另一种生成复用传输流文件的装置,包括:初始化模块601,用于对素材码流TS[i]的总数N、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj进行初始化,其中i=0,1…,N-1;第一优先权因子更新模块602,用于根据公式P[i]=P[i]+W[i]对初始化模块601获取的各素材码流的优先因子P[i]进行更新;第一判断模块603,用于判断第一优先权因子更新模块602获取的所有的P[i]中是否有大于等于1的优先因子,如果有,则触发第一数据包插入模块604,否则,触发优先权因子选择模块605;第一数据包插入模块604,用于在目标码流中插入一个空包数据,将当前包计数值Bj加1;优先权因子选择模块605,用于从所有优先因子P[i]中选出值最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包,并触发第二判断模块606;第二判断模块606,用于判断优先权因子选择模块605获得的第Bj包中是否有节目参考时钟PCR字段,如果有,则触发PCR字段更新模块607,否则,触发第二数据插入模块608;PCR字段更新模块607,用于对更新优先权因子选择模块605获得的第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;第二数据插入模块608,用于将PCR字段更新模块607更新后获得的第Bj包插入目标码流中,将当前包计数值Bj加1,并触发第二优先权因子更新模块609;第二优先权因子更新模块609,用于根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],将TS[I]的指针移向该码流的下一包,并触发第三判断模块610;第三判断模块610,用于判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,触发第一优先权因子更新模块602。
本发明的生成复用传输流文件的方法中引入权重因子和优先因子两个参数,每从某素材码流取出一包数据送往目标流时,各素材码流的优先因子按同一规则全都更新,而被取数据包之素材码流的优先因子需再减去1,如此复用过程中各素材码流的优先级随时而变,实现了均匀复合的目的。每复用一包数据后,更新所有素材流的优先因子,各素材码流的优先级随优先因子数值的变化而变化,更新后的优先因子成为新一轮复用中选择复用数据的依据。此外,本发明使用数学方法进行复用,使得复用过程的复杂度大大降低,容易理解和实现,并且目标码流中每一个PCR字段的计算都是以初始时间加间隔时间得到PCR字段所在的第Bj包的时间,再转换为PCR字段,其PCR字段的更新都是以相同的初始时间为基准计算得到的,这样得到的PCR最准确,并且计算过程简单。
本领域技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以可借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通工程技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
Claims (8)
1、一种生成复用传输流文件的方法,其特征在于,包括以下步骤:
S101,初始化:素材码流TS[i]的总数为N+1、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj,其中,TS[i]、W[i]和P[i]的参数i取值范围为:0,1…,N,R[i]和t0[i]的i取值范围是为:0,1…,N-1;
S102,根据公式P[i]=P[i]+W[i]更新各素材码流的优先因子P[i];
S103,找出最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;
S104,判断第Bj包中是否有节目参考时钟PCR字段,如果有,则执行步骤S105,否则执行步骤S106;
S105,更新第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
S106,将第Bj包插入目标码流中;
S107,将当前包计数值Bj加1;
S108,根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],并将TS[I]的指针移向新的位置;
S109,判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,执行步骤S102。
2、根据权利要求1所述的生成复用传输流文件的方法,其特征在于,所述初始化,具体包括以下步骤:
S1011,确定素材码流TS[i]的总数为N+1,其中i=0,1…,N;
S1012,根据标准《ISO/IEC 13818-2》的公式I-2-5计算各素材码流的码率R[i],其中i=0,1…,N-1;
S1013,根据各素材码流的码率R[i]确定目标码流的码率Rm,其中,Rm>R[0]+…+R[N-1];
S1014,计算各素材码流的节目参考时钟PCR的初始时间t0[i],其中i=0,1…,N-1;具体包括:首先找到第一个有节目参考时钟PCR字段的数据包,并计算出从起始点到该包的间隔包数cntB[i];其次,根据节目参考时钟PCR字段计算出该包所在的时间tt[i];然后,根据公式interT[i]=cntB[i]×188×8/R[i]计算从起始点到该包的时间间隔interT[i];最后,根据公式t0[i]=tt[i]-interT[i]计算初始时间t0[i];
步骤S1015,根据公式 计算各素材码流的权重因子W[i],其中i=0,1…,N-1,并根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子W[N],即空包文件的权重因子;
步骤S1016,根据公式P[i]=n×W[i]对各素材码流的优先因子P[i]赋初值,其中n为不等于0的自然数,i=0,1…,N;
步骤S1017,创建空包数据码流作为第N个素材码流,记为TS[N],该码流由一包空包数据组成;
步骤S1018,将各素材码流指针指向本码流的第一包;
步骤S1019,确定目标码流的包计数值的初值为Bj=0。
3、根据权利要求2所述的生成复用传输流文件的方法,其特征在于,所述计算各个素材码流的权重因子W[N],包括如下步骤:
首先,根据S101初始化过程中得到的参数R[i]、Rm和公式 计算第0至N-1个素材码流的权重因子;
其次,根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子,即空包文件的权重因子。
4、根据权利要求2所述的生成复用传输流文件的方法,其特征在于,所述计算各个素材码流的权重因子W[N],包括如下步骤:
首先,分析N个素材码流,确定各素材码流在相同时间长度时的数据包数,记为B[i],其中i=0,1,…,N-1;
其次,根据公式Bm≥B[0]+B[1]+…+B[N-1]计算目标码流的包数Bm,其中i=0,1,…,N-1;
再者,根据公式 计算权重因子Wi,其中i=0,1,…,N-1;
最后,根据公式W[N]=1-(W[0]+W[1]+…+W[N-1])计算第N个素材码流的权重因子,即空包码流的权重因子。
5、一种生成复用传输流文件的装置,其特征在于,包括:
初始化模块,用于对素材码流TS[i]的总数为N+1、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj进行初始化,其中,TS[i]、W[i]和P[i]的参数i取值范围为:0,1…,N,R[i]和t0[i]的i取值范围是为:0,1…,N-1;
第一优先因子更新模块,用于根据公式P[i]=P[i]+W[i]对所述初始化模块获取的各素材码流的优先因子P[i]进行更新;
优先权因子选择模块,用于从所述第一优先因子更新模块更新后的优先因子P[i]中找出最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;
第一判断模块,用于判断所述优先权因子选择模块获取的第Bj包中是否有节目参考时钟PCR字段,如果有,则触发PCR字段更新模块,否则触发数据包插入模块;
PCR字段更新模块,用于更新所述优先权因子选择模块获取的第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
数据包插入模块,用于将所述PCR字段更新模块更新后获得的第Bj包插入目标码流中,将当前包计数值Bj加1,并触发第二优先因子更新模块;
第二优先因子更新模块,用于根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],将TS[I]的指针移向新的位置,并触发第二判断模块;
第二判断模块,用于判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,触发所述第一优先因子更新模块。
6、一种生成复用传输流文件的方法,其特征在于,包括以下步骤:
S401,初始化:素材码流TS[i]的总数N、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj,其中i=0,1…,N-1;
S402,根据公式P[i]=P[i]+W[i]更新各素材码流的优先因子P[i];
S403,判断所有的P[i]中,是否有大于等于1的优先因子,如果有,则执行步骤S404,否则,执行步骤S406;
S404,目标码流中插入一个空包数据;
S405,将当前包计数值Bj加1;
S406,从所有优先因子P[i]中选出值最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包;
S407,判断第Bj包中是否有节目参考时钟PCR字段,如果有,则执行步骤S408,否则,执行步骤S409;
S408,更新第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
S409,将第Bj包插入目标码流中;
S410,将当前包计数值Bj加1;
S411,根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],并将TS[I]的指针移向该码流的下一包;
S412,判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,执行步骤S302。
7、根据权利要求6所述的生成复用传输流文件的方法,其特征在于,所述初始化,具体包括如下步骤:
S4011,确定素材码流TS[i]的总数N,其中i=0,1…,N-1;
S4012,根据标准《ISO/IEC 13818-2》的公式I-2-5计算计算各素材码流的码率R[i],其中i=0,1…,N-1;
S4013,根据各素材码流的码率R[i]确定目标码流的码率Rm,其中,Rm>R[0]+…+R[N-1];
S4014,计算各素材码流的节目参考时钟PCR的初始时间t0[i],其中i=0,1…,N-1,具体包括:首先找到第一个有节目参考时钟PCR字段的数据包,并计算出从起始点到该包的间隔包数cntB[i];其次,根据节目参考时钟PCR字段计算出该包所在的时间tt[i];然后,根据公式interT[i]=cntB[i]×188×8/R[i]计算从起始点到该包的时间间隔interT[i];最后,根据公式t0[i]=tt[i]-interT[i]计算初始时间t0[i];
S4015,根据公式 计算各素材码流的权重因子W[i],其中i=0,1…,N-1;
S4016,根据公式P[i]=n×W[i]对各素材码流的优先因子P[i]赋初值,其中n为不等于0的自然数,i=0,1…,N-1;
S4017,将各素材码流指针指向本码流的第一包;
S4018,确定目标码流的包计数值的初值为Bj=0。
8、一种生成复用传输流文件的装置,其特征在于,包括:
初始化模块,用于对素材码流TS[i]的总数N、各素材码流的码率R[i]、目标码流的码率Rm、各素材码流的节目参考时钟PCR的初始时间t0[i]、各素材码流的权重因子W[i]、各素材码流的优先因子P[i]和目标码流的包计数值Bj进行初始化,其中i=0,1…,N-1;
第一优先权因子更新模块,用于根据公式P[i]=P[i]+W[i]对所述初始化模块获取的各素材码流的优先因子P[i]进行更新;
第一判断模块,用于判断所述第一优先权因子更新模块获取的所有的P[i]中是否有大于等于1的优先因子,如果有,则触发第一数据包插入模块,否则,触发优先权因子选择模块;
第一数据包插入模块,用于在目标码流中插入一个空包数据,将当前包计数值Bj加1;
优先权因子选择模块,用于从所有优先因子P[i]中选出值最大的优先因子P[I],并从P[I]对应的素材码流TS[I]的指针指向的位置开始取出1包数据,该包即为目标码流的第Bj包,并触发第二判断模块;
第二判断模块,用于判断所述优先权因子选择模块获得的第Bj包中是否有节目参考时钟PCR字段,如果有,则触发PCR字段更新模块,否则,触发第二数据插入模块;
PCR字段更新模块,用于对更新所述优先权因子选择模块获得的第Bj包的节目参考时钟PCR字段,具体包括:首先根据公式deltT=Bj×188×8/Rm计算从初始时间t0[i]到第Bj包的时间间隔deltT;其次,根据公式Time=t0[i]+deltT计算第Bj包所在的时间Time;最后,根据得到的Time计算出要更新的PCR字段;
第二数据插入模块,用于将所述PCR字段更新模块更新后获得的第Bj包插入目标码流中,将当前包计数值Bj加1,并触发第二优先权因子更新模块;
第二优先权因子更新模块,用于根据公式P[I]=P[I]-1更新TS[I]的优先因子P[I],将TS[I]的指针移向该码流的下一包,并触发第三判断模块;
第三判断模块,用于判断N个素材码流中任何一个码流的指针指向本码流的末尾,如果是,则结束复用,否则,触发所述第一优先权因子更新模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085539.0A CN101562752B (zh) | 2009-05-25 | 2009-05-25 | 生成复用传输流文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085539.0A CN101562752B (zh) | 2009-05-25 | 2009-05-25 | 生成复用传输流文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101562752A true CN101562752A (zh) | 2009-10-21 |
CN101562752B CN101562752B (zh) | 2016-05-18 |
Family
ID=41221338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910085539.0A Active CN101562752B (zh) | 2009-05-25 | 2009-05-25 | 生成复用传输流文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101562752B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357164A (zh) * | 2010-09-09 | 2016-02-24 | 南京创达特网络科技有限公司 | 多载波接收机、多载波发射机及多载波收发系统 |
CN106034243A (zh) * | 2015-03-18 | 2016-10-19 | 华为技术有限公司 | 一种ts流输出方法及装置 |
-
2009
- 2009-05-25 CN CN200910085539.0A patent/CN101562752B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357164A (zh) * | 2010-09-09 | 2016-02-24 | 南京创达特网络科技有限公司 | 多载波接收机、多载波发射机及多载波收发系统 |
CN105357164B (zh) * | 2010-09-09 | 2020-11-17 | 华为技术有限公司 | 多载波接收机、多载波发射机及多载波收发系统 |
CN106034243A (zh) * | 2015-03-18 | 2016-10-19 | 华为技术有限公司 | 一种ts流输出方法及装置 |
CN106034243B (zh) * | 2015-03-18 | 2019-06-28 | 华为技术有限公司 | 一种ts流输出方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101562752B (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100533380C (zh) | 基于dsp的升级系统以及升级方法 | |
CN1161990C (zh) | 能正确裁取得自多路复用的位流的连续媒体的方法和系统 | |
US20080040401A1 (en) | Processing of compact functional diferences | |
US8572644B2 (en) | Data injection | |
EP2293216A1 (en) | Information processing device, information processing method, and computer program and integrated circuit for the realization thereof | |
CN101505417B (zh) | 时戳附加装置、时戳附加方法 | |
CN109167645A (zh) | 用于物理层封装的数据结构、数据结构产生设备及其方法 | |
CN1778115A (zh) | 用于提供mpeg-2流的多路复用和重多路复用的方法和系统 | |
CN102209204A (zh) | 一种基于模板的节目单编排方法及系统 | |
SA518391264B1 (ar) | تشفير طبقي وهيكل لبيانات تمثيلات صوت أو مجال صوت لأصوات محيطة مضغوطة عالية الرتبة | |
WO2005114457A1 (en) | Service method and system of multimedia music contents | |
CN104768025B (zh) | 一种视频坏帧修复方法及装置 | |
CN108243350A (zh) | 一种音视频同步处理的方法和装置 | |
CN101562752A (zh) | 生成复用传输流文件的方法及装置 | |
RU2008123528A (ru) | Оптимальный выбор частичных тв программ | |
CN103297482A (zh) | 信息处理方法和设备 | |
CN101379820B (zh) | 具有希望的比特率的dvb-h信号的作成方法和装置 | |
CN101253770A (zh) | 修正广播ts的一部分的装置 | |
CN107153563A (zh) | 一种软件版本生成方法及装置 | |
CN101720014A (zh) | 一种处理数字电视节目信息的方法及服务器和系统 | |
CN102572521B (zh) | 一种自动分配传输流视频基本码流码率的方法和系统 | |
CN102665104B (zh) | 一种传输流并行复用方法、装置 | |
CN106547548A (zh) | 一种软件版本的编译方法和装置 | |
CN112437315B (zh) | 适应多系统版本的音频适配方法及系统 | |
CN101526893B (zh) | 一种超长指令字指令并行执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |