一种传输流复用的方法

文档序号:7625513阅读:73来源:国知局
专利名称:一种传输流复用的方法
技术领域
本发明涉及一种传输流复用的方法。
背景技术
现在已经成熟应用的数字音视频编解码标准,如MPEG-2,以及近年出现的一批具有代表性的国际标准,如MPEG-4、H.264/MPEG-4AVC、我国自主制定的标准AVS等,这些标准中都有一部分称为系统部分,这部分主要讨论了如何将单路或多路基本音频和视频流以及其他数据组合成适合于存储和传输的单路和多路复合流。传输流就是系统部分定义的一种数据流,它将具有一个或者多个不同时钟基准的一个或多个节目组成一个单一流,其速率可以是恒定的也可以是可变的。传输流是针对在那些可能会出现显著错误(往往表现为位差错或丢失分组)的环境中进行节目传输而定义的,例如卫星传输。
目前,已经有一些软件能够完成传输流的复用的功能,即它们可以将单路或多路基本音频和视频流合成为一个符合MPEG-2等标准系统层规定的传输流的语法要求的码流。这样的传输流可以在media player等播放器中流畅的播放,同时,视音频也能很好的同步,但是,这些软件复用出的传输流的传输速率不是很精确的恒定,这样这种复用软件就不能应用在对传输流的传输率要求完全的精确的恒定的场合,例如,用卫星信道传输节目时,这种传输流就会因为传输率不是完全的恒定而不能发送到卫星信道上。例如,VLC中就有复用传输流的功能,但是,它复用的传输流的速率不是完全精确的恒定,这种传输流在往卫星信道上发送时就会碰到上述的问题。

发明内容
本发明提供的一种传输流复用的方法,提供一种简单且效率高的复用速率完全恒定的传输流的方法,这种传输流不但能够在本地流畅的播放,也能够很顺利的发送到卫星通道上。
为了达到上述目的,本发明提供一种传输流复用的方法,其包含以下步骤步骤1、根据输入的视音频数据,对复用器进行初始化;步骤1.1、解析输入的视频基本流中的视频序列头(Sequence header),得到该视频序列的帧速率video.Frame_rate;步骤1.2、根据复用后要得到的恒定的传输流速率Trans_rate和视频流的帧速率video.Frame_rate计算出Packet_2PCR,Packet_2PCR代表同一节目的两个PCR(Program Clock Reference,节目时钟信息)包之间应该有多少个TS(Transport Stream,传输流)包Packet_2PCR=Trans_rate/(188*8*video.Frame_rate)步骤2、根据步骤1的结果,生成三类数据步骤2.1、根据输入的视频基本流和音频基本流的个数,生成传输流中的PSI(Program Specific Information,节目特定信息),PSI包括用来分离传输流和成功地再生节目所必需的标准化数据;在MPEG-2和AVS标准系统部分中,节目特殊信息(PSI)被分成5类表,即节目关联表(PAT),节目映射表(PMT),网络信息表(NIT),条件访问表(CAT)和传输流描述表。在本发明中,复用出的传输流只包含必须的信息表,例如,对于一个含有3路节目的传输流,则包含1个PAT表和3个PMT表。
步骤2.2、根据复用器初始化得到的每路视频基本流的帧速率video.Frame_rate,生成传输流的节目时钟信息PCR;同一节目的两两PCR之间的间隔为该节目的视频帧速率video.Frame_rate的倒数,也就是说,每一帧视频和音频数据,都有一个含有PCR信息的TS包;所述的PCR由33bit基值(PCR_Base)和9bit扩展值(PCR_Extension)组成,PCR值以系统参考时钟周期为单位记录了源端的时间信息,对于整个解码器的同步起着关键的作用;步骤2.2.1、计算PCR_Base;所述的PCR_Base是对编码器的27MHz系统时钟的300分频后的时钟计数值抽样,它在解码器切换节目时,提供对解码器PCR计数器的初始值,以使该PCR值与PES(Packet Elementary Stream,打包的基本码流)包中的PTS(Presentation Time Stamp,显示时间标签)、DTS(Decoding Time Stamp,解码时间标签)最大可能地达到相同的时间起点;步骤2.2.2、计算PCR_Extension;所述的PCR_Extension是计数器对编码器27MHz系统时钟的计数值,它通过解码器端的锁相环电路修正解码器的系统时钟,使其达到和编码器一致的27MHz;步骤2.3、将输入的视音频基本数据流以帧为单位打包成音视频数据的PES包;一个音视频数据的PES分组包包含PES分组包的数据部分和PES分组包首部;步骤2.3.1、打包音视频数据的PES分组包的数据部分;所述的PES分组包的数据部分包含视频数据和音频数据,所述的视频数据是I帧(帧内图像)、P帧(前向预测图像)或者B帧(双向预测图像)的每一帧数据,所述的音频数据是每一帧与视频数据相对应的音频数据,这部分数据的大小一般是固定的,它与视频数据的帧速率和音频数据的采样频率,比特率以及音频数据的编码格式有关;步骤2.3.2、计算音视频数据的PES分组包首部包含的时间标签PTS/DTS;所述的音视频数据的PES分组包首部包含用于解码器同步重放的解码时间标签DTS和显示时间标签PTS;对于视频序列,若序列中没有B帧,则解码顺序和显示顺序相同,即DTS等于PTS,若序列中包含B帧,则解码顺序和显示顺序不同,即DTS不等于PTS;PTS/DTS具体计算法如下步骤2.3.2.1、对于音频PESDTSi=DTSi-1+picture_duration(i>=1)PTSi=DTSi其中DTS0=0,picture_duration等于video.Frame_rate的倒数,表示一帧数据的显示时间;
步骤2.3.2.2、对于视频PESDTSi=DTSi-1+picture_duration(i>=1)其中DTS0=0,picture_duration等于video.Frame_rate的倒数,表示一帧数据的显示时间;若该帧数据为B帧,则PTSi=DTSi;若该帧数据为I帧或者P帧,则PTSix=DTSi+picture_duration*(n+1),这里的n表示相邻的I帧与P帧,或者I帧与I帧、P帧与P帧之间B帧的个数;步骤3、将步骤2得到的三种数据根据标准中规定的传输流的TS包的语法格式打包成TS包,即PSI包,PCR包和音视频数据包(该音视频数据包是将音视频数据的PES包根据TS包的语法格式再次打包生成),以及填充包(为了使传输流速率恒定的一种TS包);步骤4、将步骤3得到的四种TS包复用成传输速率恒定的传输流;步骤4.1、将当前帧的PSI包和PCR包写入输出文件或缓冲区中,计算在一定时间内,上一帧的数据没有传输完而遗留下来的数据包的个数Leaved_Tspacket_No,如果Leaved_Tspacket_No=0,则执行步骤4.2;如果Leaved_Tspacket_No≠0,则执行步骤4.3;步骤4.2、计算当前帧的所有有用的TS包(包括PSI包,PCR包和音视频数据包)的个数的总和Frame_Tspacket_No,将Frame_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果Frame_Tspacket_No>Packet_2PCR,则执行步骤4.2.1;否则,执行步骤4.2.2;步骤4.2.1、计算A=Packet_2PCR-Npackets;Npackets是遗留数据包Leaved_Tspacket_No与当前帧的PSI包和PCR包的个数总合;将当前帧的A个音视频数据包均匀地写入输出文件或缓冲区中;设置Leaved_Tspacket_No=Frame_Tspacket_No-Packet_2PCR;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.2.2、计算B=Packet_2PCR-Frame_Tspacket_No;将当前帧的音视频数据包和B个填充包均匀的写入输出文件或缓冲区中;
步骤4.3、将Leaved_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果Leaved_Tspacket_No>Packet_2PCR,则执行步骤4.3.1;否则,执行步骤4.3.2;步骤4.3.1、计算C=Packet_2PCR-Mpackets;Mpackets是当前帧的PSI包、PCR包的个数的总和;将前一帧遗留的C个数据包写入输出文件或缓冲区中;设置Leaved_Tspacket_No=Leaved_Tspacket_No-Packet-2PCR+rame_Tspacket_No;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.3.2、将前一帧遗留的所有数据包写入输出文件或缓冲区中;计算All_Tspacket_No=Leaved_Tspacket_No+Frame_Tspacket_No;将All_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果All_Tspacket_No>Packet_2PCR,则执行步骤4.3.2.1;否则,执行步骤4.3.2.2;步骤4.3.2.1、将当前帧的A个音视频数据包均匀的写入输出文件或缓冲区中;设置Leaved_Tspacket_No=All_Tspacket_No-Packet_2PCR;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.3.2.2、计算D=Packet_2PCR-All_Tspacket_No;将当前帧的音视频数据包和D个填充包写入输出文件或缓冲区中;设置Leaved_Tspacket_No=0;返回执行步骤4.1,开始进行下一帧数据的复用;本发明提供的一种传输流复用的方法,是一种简单且效率高的复用速率传输流的方法,该方法有优点1、可使复用得到的传输流的速率完全恒定;2、计算节目时间参考PCR的方法简单;3、视音频同步的算法简单,即计算PTS/DTS的方法简单;4、以帧为单位对基本数据流打包的方法使得解码器可以很方便的在PES首部的PES_packet_length(包长)这个信息中获得将要处理的一帧视频或者音频数据的大小,可以根据这个值很好的控制VBV(视频缓冲检测器)缓冲区,使其既不上溢也不下溢。
应用本发明的方法,可以实时或者非实时的复用出符合MPEG-2或者AVS标准的传输流,因此本发明可以应用在传输流复用器或者一些有复用功能的转码器中。


图1是本发明提供的一种传输流复用的方法的步骤1~步骤3的算法框图;图2是本发明提供的一种传输流复用的方法的步骤4的流程图;图3是本发明提供的一种传输流复用的方法实施例示意图。
具体实施例方式
以下根据图1~图3,具体说明本发明的一种最佳实施方式如图1~图3所示,本发明提供一种传输流复用的方法,其包含以下步骤步骤1、根据输入的一路AVS格式的视频基本流和一路mp3(MovingPicture Experts Group Audio Layer III,音频压缩)格式的音频流,对复用器进行初始化;步骤1.1、解析输入的视频基本流中的视频序列头(Sequence header),得到该视频序列的帧速率video.Frame_rate=25帧/秒;步骤1.2、根据复用后要得到的传输流的速率Trans_rate=37.6Mbps,和视频流的帧速率video.Frame_rate=25帧/秒,计算出Packet_2PCRPacket_2PCR=37600000/(188×25×8)=1000个;Packet_2PCR代表同一节目的两个PCR(Program Clock Reference节目时钟信息)包之间应该有多少个TS(Transport Stream,传输流)包步骤2、根据步骤1的结果,生成三类数据步骤2.1、根据输入的视频基本流和音频基本流的个数,生成传输流中包含用来分离传输流和成功地再生节目所必需的标准化数据的节目特定信息PSI,对于该实例中,是复用一个含有1路节目的传输流,则节目特定信息PSI包含1个节目关联表(PAT)表和1个节目映射表(PMT);步骤2.2、根据复用器初始化得到的每路视频基本流的帧速率video.Frame_rate,生成传输流的节目时钟信息PCR;同一节目的两两PCR之间的间隔为该节目的视频帧速率video.Frame_rate的倒数,也就是说,每一帧视频和音频数据,包含一个含有PCR信息的TS包;例如对于帧速率是25帧/秒的PAL(一种彩色电视标准)制,两两PCR之间的差值为40ms,即PCRi=0(i=0),PCRi=PCRi-1+40ms(i>=1);所述的PCR由33bit基值(PCR_Base)和9bit扩展值(PCR_Extension)组成,PCR值以系统参考时钟周期为单位记录了源端的时间信息,对于整个解码器的同步起着关键的作用;步骤2.2.1、计算PCR_Base;所述的PCR_Base是对编码器的27MHz系统时钟的300分频后的时钟计数值抽样,它在解码器切换节目时,提供对解码器PCR计数器的初始值,以使该PCR值与PES包中的PTS(Presentation Time Stamp,显示时间标签)、DTS(Decoding Time Stamp,解码时间标签)最大可能地达到相同的时间起点;步骤2.2.2、计算PCR_Extension;所述的PCR_Extension是计数器对编码器27MHz系统时钟的计数值,它通过解码器端的锁相环电路修正解码器的系统时钟,使其达到和编码器一致的27MHz;步骤2.3、将输入的视音频数据流以帧为单位打包成音视频数据的PES包;一个音视频数据的PES分组包包含音视频数据的PES分组包的数据部分和音视频数据的PES分组包首部;步骤2.3.1、打包音视频数据的PES分组包的数据部分;所述的音视频数据的PES分组包的数据部分包含视频数据和音频数据,所述的视频数据是AVS格式的视频基本流的每一帧数据,所述的音频数据是每一帧mp3格式的音频流,这部分数据的大小一般是固定的,它与视频数据的帧速率和音频数据的采样频率,比特率以及音频数据的编码格式有关;步骤2.3.2、计算音视频数据的PES分组包首部包含的时间标签PTS/DTS;所述的音视频数据的PES分组包首部包含用于解码器同步重放的解码时间标签DTS和显示时间标签PTS;对于视频序列,若序列中没有B帧,则解码顺序和显示顺序相同,即DTS等于PTS,若序列中包含B帧,则解码顺序和显示顺序不同,即DTS不等于PTS;PTS/DTS具体计算法如下步骤2.3.2.1、对于音频PESDTSi=DTSi-1+picture_duration(i>=1)PTSi=DTSi其中DTS0=0,picture_duration等于video.Frame_rate的倒数,表示一帧数据的显示时间;步骤2.3.2.2、对于视频PESDTSi=DTSi-1+picture_duration(i>=1)其中DTS0=0,picture_duration等于video.Frame_rate的倒数,表示一帧数据的显示时间;若该帧数据为B帧,则PTSi=DTSi;若该帧数据为I帧或者P帧,则PTSi=DTSi+picture_duration*(n+1),这里的n表示相邻的I帧与P帧,或者I帧与I帧、P帧与P帧之间B帧的个数;步骤3、将步骤2得到的三种数据根据标准中规定的传输流的TS包的语法格式打包成TS包,即PSI包,PCR包和音视频数据包(该音视频数据包是将音视频数据的PES包根据TS包的语法格式再次打包生成),以及填充包(为了使传输流速率恒定的一种TS包);步骤4、将步骤3得到的四种TS包复用成传输速率恒定等于Trans_rate=37.6Mbps的传输流;步骤4.1、将当前帧的PSI包和PCR包写入输出文件或缓冲区中,计算在一定时间内,上一帧的数据没有传输完而遗留下来的数据包的个数Leaved_Tspacket_No,如果Leaved_Tspacket_No=0,则执行步骤4.2;如果Leaved_Tspacket No≠0,则执行步骤4.3;
步骤4.2、计算当前帧的所有有用的TS包(包括PSI包,PCR包和音视频数据包)的个数的总和Frame_Tspacket_No,将Frame_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果Frame_Tspacket_No>Packet_2PCR,则执行步骤4.2.1;否则,执行步骤4.2.2;步骤4.2.1、计算A=Packet_2PCR-Npackets;Npackets是遗留数据包Leaved_Tspacket_No与当前帧的PSI包和PCR包的个数总合;将当前帧的A个音视频数据包均匀地写入输出文件或缓冲区中;设置Leaved_Tspacket_No=Frame Tspacket_No-Packet_2PCR;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.2.2、计算B=Packet_2PCR-Frame_Tspacket_No;将当前帧的音视频数据包和B个填充包均匀的写入输出文件或缓冲区中;步骤4.3、将Leaved_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果Leaved_Tspacket_No>Packet_2PCR,则执行步骤4.3.1;否则,执行步骤4.3.2;步骤4.3.1、计算C=Packet_2PCR-Mpackets;Mpackets是当前帧的PSI包、PCR包的个数的总和;将前一帧遗留的C个数据包写入输出文件或缓冲区中;设置Leaved_Tspacket_No=Leaved_Tspacket_No-Packet-2PCR+rame_Tspacket_No;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.3.2、将前一帧遗留的所有数据包写入输出文件或缓冲区中;计算All_Tspacket_No=Leaved_Tspacket_No+Frame_Tspacket_No;将All_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果All_Tspacket_No>Packet_2PCR,则执行步骤4.3.2.1;否则,执行步骤4.3.2.2;步骤4.3.2.1、将当前帧的A个音视频数据包均匀的写入输出文件或缓冲区中;设置Leaved_Tspacket_No=All_Tspacket_No-Packet_2PCR;返回执行步骤4.1,开始进行下一帧数据的复用;
步骤4.3.2.2、计算D=Packet_2PCR-All_Tspacket_No;将当前帧的音视频数据包和D个填充包写入输出文件或缓冲区中;设置Leaved_Tspacket_No=0;返回执行步骤4.1,开始进行下一帧数据的复用;本发明提供的一种传输流复用的方法,是一种简单且效率高的复用速率传输流的方法,该方法有优点1、可使复用得到的传输流的速率完全恒定;2、计算节目时间参考PCR的方法简单;3、视音频同步的算法简单,即计算PTS/DTS的方法简单;4、以帧为单位对基本数据流打包的方法使得解码器可以很方便的在PES首部的PES_packet_length(PES包长)这个信息中获得将要处理的一帧视频或者音频数据的大小,可以根据这个值很好的控制VBV(视频缓冲检测器)缓冲区,使其既不上溢也不下溢。
应用本发明的方法,可以实时或者非实时的复用出符合MPEG-2或者AVS标准的传输流,因此本发明可以应用在传输流复用器或者一些有复用功能的转码器中。
权利要求
1.一种传输流复用的方法,其特征在于,包含以下步骤步骤1、根据输入的视音频数据,对复用器进行初始化;步骤2、根据步骤1的结果,生成三类数据节目特定信息PSI、节目时钟信息PCR和音视频数据的打包的基本码流PES包;步骤3、将步骤2得到的三种数据根据标准中规定的传输流的传输流包的语法格式打包成传输流包,即节目特定信息包,节目时钟信息包和音视频数据包,以及填充包;步骤4、将步骤3得到的四种传输流包复用成传输速率恒定的传输流。
2.如权利要求1所述的传输流复用的方法,其特征在于,所述的步骤1包含以下步骤步骤1.1、解析输入的视频基本流中的视频序列头,得到该视频序列的帧速率;步骤1.2、根据复用后要得到的恒定的传输流速率Trans_rate和视频流的帧速率video.Frame_rate,计算出Packet_2PCRPacket_2PCR=Trans_rate/(188*8*video.Frame_rate)Packet_2PCR代表同一节目的两个节目时钟信息PCR包之间的传输流TS包的个数。
3.如权利要求1所述的传输流复用的方法,其特征在于,所述的步骤2包含以下步骤步骤2.1、根据输入的视频基本流和音频基本流的个数,生成传输流中的节目特定信息PSI,该节目特定信息PSI包括了用来分离传输流和成功地再生节目所必需的标准化数据;步骤2.2、根据复用器初始化得到的每路视频基本流的帧速率,生成传输流的节目时钟信息PCR;同一节目的两两节目时钟信息PCR之间的间隔为该节目的视频帧速率的倒数,即,每一帧视频和音频数据,都有一个含有节目时钟信息PCR的传输流TS包;所述的节目时钟信息PCR由33bit基值PCR_Base和9bit扩展值PCR_Extension组成,节目时钟信息PCR值以系统参考时钟周期为单位记录了源端的时间信息,对于整个解码器的同步起着关键的作用;步骤2.3、将输入的视音频基本数据流以帧为单位打包成音视频数据的打包的基本码流PES包;一个PES分组包包含PES分组包的数据部分和PES分组包首部。
4.如权利要求3所述的传输流复用的方法,其特征在于,所述的步骤2.2包含以下步骤步骤2.2.1、计算节目时钟信息基值PCR_Base;所述的节目时钟信息基值PCR_Base是对编码器的27MHz系统时钟的300分频后的时钟计数值抽样,它在解码器切换节目时,提供对解码器节目时钟信息计数器的初始值,以使该节目时钟信息PCR值与PES包中的显示时间标签PTS、解码时间标签DTS最大可能地达到相同的时间起点;步骤2.2.2、计算节目时钟信息扩展值PCR_Extension;所述的节目时钟信息扩展值PCR_Extension是计数器对编码器27MHz系统时钟的计数值,它通过解码器端的锁相环电路修正解码器的系统时钟,使其达到和编码器一致的27MHz。
5.如权利要求3所述的传输流复用的方法,其特征在于,所述的步骤2.3包含以下步骤步骤2.3.1、将音视频数据的PES分组包的数据部分打包;所述的PES分组包的数据部分包含视频数据和音频数据,所述的视频数据是帧内图像、前向预测图像或者双向预测图像的每一帧数据,所述的音频数据是每一帧与视频数据相对应的音频数据,这部分数据的大小一般是固定的,它与视频数据的帧速率和音频数据的采样频率,比特率以及音频数据的编码格式有关;步骤2.3.2、计算音视频数据的PES分组包首部包含的时间标签PTS/DTS;所述的音视频数据的PES分组包首部包含用于解码器同步重放的解码时间标签DTS和显示时间标签PTS;对于视频序列,若序列中没有B帧,即双向预测图像,则解码顺序和显示顺序相同,即解码时间标签DTS等于显示时间标签PTS,若序列中包含B帧,则解码顺序和显示顺序不同,即解码时间标签DTS不等于显示时间标签PTS。
6.如权利要求5所述的传输流复用的方法,其特征在于,所述的步骤2.3.2中PTS/DTS具体计算法包含以下步骤步骤2.3.2.1、对于音频PESDTSi=DTSi-1+picture_duration(i>=1)PTSi=DTSi其中DTS0=0,picture_duration等于video.Frame_rate的倒数,表示一帧数据的显示时间;步骤2.3.2.2、对于视频PESDTSi=DTSi-1+picture_duration(i>=1)其中DTS0=0,picture_duration等于video.Frame_rate的倒数,表示一帧数据的显示时间;若该帧数据为B帧,则PTSi=DTSi;若该帧数据为I帧,即帧内图像,或者P帧,即前向预测图像,则PTSi=DTSi+picture_duration*(n+1),这里的n表示相邻的I帧与P帧,或者I帧与I帧、P帧与帧之间B帧的个数。
7.如权利要求1所述的传输流复用的方法,其特征在于,所述的步骤4包含以下步骤步骤4.1、将当前帧的节目特定信息PSI包和节目时钟信息PCR包写入输出文件或缓冲区中,计算在一定时间内,上一帧的数据没有传输完而遗留下来的数据包的个数Leaved_Tspacket_No,如果Leaved_Tspacket_No=0,则执行步骤4.2;如果Leaved_Tspacket_No≠0,则执行步骤4.3步骤4.2、计算当前帧的所有有用的传输流TS包(包括节目特定信息PSI包,节目时钟信息PCR包和音视频数据包)的个数的总和Frame_Tspacket_No,将Frame_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果Frame_Tspacket_No>Packet_2PCR,则执行步骤4.2.1;否则,执行步骤4.2.2;步骤4.3、将Leaved_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果Leaved_Tspacket_No>Packet_2PCR,则执行步骤4.3.1;否则,执行步骤4.3.2。
8.如权利要求7所述的传输流复用的方法,其特征在于,所述的步骤4.2包含以下步骤步骤4.2.1、计算A=Packet_2PCR-Npackets;Npackets是遗留数据包Leaved_Tspacket_No与当前帧的节目特定信息PSI包和节目时钟信息PCR包的个数总合;将当前帧的A个音视频数据包均匀地写入输出文件或缓冲区中;设置Leaved_Tspacket_No=Frame_Tspacket_No-Packet_2PCR;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.2.2、计算B=Packet_2PCR-Frame_Tspacket_No;将当前帧的音视频数据包和B个填充包均匀的写入输出文件或缓冲区中。
9.如权利要求7所述的传输流复用的方法,其特征在于,所述的步骤4.3包含以下步骤步骤4.3.1、计算C=Packet_2PCR-Mpackets;Mpackets是当前帧的节目特定信息PSI包、节目时钟信息PCR包的个数的总和;将前一帧遗留的C个数据包写入输出文件或缓冲区中;设置Leaved_Tspacket_No=Leaved_Tspacket_No-Packet-2PCR+Frame_Tspacket_No;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.3.2、将前一帧遗留的所有数据包写入输出文件或缓冲区中;计算All_Tspacket_No=Leaved_Tspacket_No+Frame_Tspacket_No;将All_Tspacket_No同步骤1.2中得到的Packet_2PCR相比较,如果All_Tspacket_No>Packet_2PCR,则执行步骤4.3.2.1;否则,执行步骤4.3.2.2。
10.如权利要求9所述的传输流复用的方法,其特征在于,所述的步骤4.3.2包含以下步骤步骤4.3.2.1、将当前帧的A个音视频数据包均匀的写入输出文件或缓冲区中;设置Leaved_Tspacket_No=All_Tspacket_No-Packet_2PCR;返回执行步骤4.1,开始进行下一帧数据的复用;步骤4.3.2.2、计算D=Packet_2PCR-All_Tspacket_No;将当前帧的音视频数据包和D个填充包写入输出文件或缓冲区中;设置Leaved_Tspacket_No=0;返回执行步骤4.1,开始进行下一帧数据的复用。
全文摘要
一种传输流复用的方法,先根据输入的视音频数据,对复用器进行初始化,再生成三类数据节目特定信息PSI、节目时钟信息PCR和音视频数据的PES包,将得到的三种数据根据标准中规定的传输流的TS包的语法格式打包成TS包,即节目特定信息包,节目时钟信息包和填充包,最后将四种TS包复用成传输速率恒定的传输流。本发明提供的一种传输流复用的方法,提供一种简单且效率高的复用速率完全恒定的传输流的方法,这种传输流不但能够在本地流畅的播放,也能够很顺利的发送到卫星通道上。
文档编号H04N7/20GK1794812SQ20051011114
公开日2006年6月28日 申请日期2005年12月5日 优先权日2005年12月5日
发明者李萍, 李国平, 陈勇, 赵海武, 侯钢, 王国中 申请人:上海广电(集团)有限公司中央研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1