一種生成ts流的打包順序控制方法
【專利摘要】本發(fā)明公開了一種生成TS流的打包順序控制方法,按照PSI、PCR、音頻、視頻和空包的先后順序,判斷先滿足打包條件數(shù)據(jù)類型,再生成該類型的TS包,最終生成符合標(biāo)準(zhǔn)的TS流;且生成每個TS包后,通過模擬解碼緩存器,刪除播放時間小于TS包對應(yīng)節(jié)目時間的數(shù)據(jù);生成每個音頻TS包時,模擬一個音頻解碼器緩存,確保音頻解碼器緩存大于該TS包節(jié)目時間的音頻數(shù)據(jù)量;生成每個視頻TS時,模擬一個視頻頻解碼器緩存,確保視頻解碼器緩存大于該TS包節(jié)目時間的視頻數(shù)據(jù)量,進(jìn)而使得生成的TS流在解碼時不會發(fā)生緩存的溢出。
【專利說明】
一種生成TS流的打包順序控制方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及一種生成TS流的打包順序控制方法,
【背景技術(shù)】
[0002]TS流是MPEG-2格式種類中的一種,其英文全稱是(MPEG-2Transport Stream),它是數(shù)字電視領(lǐng)域中普遍應(yīng)用的系統(tǒng)層編碼標(biāo)準(zhǔn);TS流中是固定長度為188字節(jié)的連續(xù)TS包,通過這些TS包,它包含了豐富的流信息,要解析一個特定的流,首先要解析它由哪些PID(Packet ID)的包構(gòu)成,再根據(jù)PID解析出對應(yīng)的音視頻流;MPEG-2定義了一些用來描述傳輸流所攜帶內(nèi)容的信息表,稱為節(jié)目特定信息(PSI)表,包括4個與之相關(guān)的表,其中,節(jié)目關(guān)聯(lián)表PAT和節(jié)目映射表PMT是確定當(dāng)前傳輸流中各節(jié)目內(nèi)容的最關(guān)鍵的兩個表,需在流中周期性重復(fù)出現(xiàn)。
[0003]由于TS是經(jīng)過壓縮的信號,數(shù)據(jù)間的相關(guān)性很小,而且TS流有著嚴(yán)格的數(shù)據(jù)格式,因而很小的誤差都將導(dǎo)致圖像質(zhì)量的急劇下降甚至無法解碼;我國的數(shù)字電視技術(shù)正在快速發(fā)展,為了保證數(shù)字電視網(wǎng)絡(luò)的正常運轉(zhuǎn)和傳輸質(zhì)量,必須對TS流進(jìn)行碼流分析,以確保TS流中的信息格式都符合標(biāo)準(zhǔn)規(guī)范。
[0004]碼流分析的信息包括:基本信息、節(jié)目信息、PCR信息、音視頻緩沖區(qū)信息等部分;其中基本信息主要包含TS包同步字節(jié)、流碼率、流ID等;節(jié)目信息包含流中各個節(jié)目的節(jié)目號、節(jié)目名、節(jié)目中各信息流PID(Packet ID)的分配等信息;PCR信息顯示流中各個PCR的精度和間隔;音視頻緩沖區(qū)信息是虛擬解碼器(STD)在解碼當(dāng)前流時對應(yīng)緩沖區(qū)中原始數(shù)據(jù)的狀態(tài);此外還包括ETR290分析測試,根據(jù)測試參數(shù)的重要性以及其不同的性質(zhì),為3個優(yōu)先級,其中:第I級包含TS流基本的參數(shù),這些參數(shù)保證ts流能夠被解碼;第2級包含一些附加參數(shù),是保證TS流達(dá)到同步后可連續(xù)工作必須的參數(shù)和周期性監(jiān)測的參數(shù);第3級是一些特定應(yīng)用的參數(shù)。碼流分析工具可對TS流進(jìn)行完整的分析,對不符合標(biāo)準(zhǔn)的TS流,發(fā)出錯誤警告,即該TS流不能通過監(jiān)測,不能在數(shù)字電視應(yīng)用中被正常播放。
[0005]目前,大部分開源工具生成的TS流,并不能通過碼流分析工具的監(jiān)測,生成的TS流不符合數(shù)字電視對流的上線要求。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種生成TS流的打包順序控制方法,按照PS1、PCR、音頻、視頻和空包的先后順序,判斷先滿足打包條件數(shù)據(jù)類型,再生成該類型的TS包,最終生成符合標(biāo)準(zhǔn)的TS流;且生成每個TS包后,通過模擬解碼緩存器,刪除播放時間小于TS包對應(yīng)節(jié)目時間的數(shù)據(jù)。
[0007]本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:一種生成TS流的打包順序控制方法,包括以下步驟:
[0008]S1.開始生成TS流;
[0009]S2.判斷音視頻是否打包完成:
[0010](I)音視頻打包完成,打包結(jié)束;
[0011 ] (2)音視頻打包沒有完成,進(jìn)入步驟S3;
[0012]S3.判斷PSI是否滿足打包條件:
[0013](I )PSI滿足打包條件,連續(xù)生成所有節(jié)目信息的TS包,并跳轉(zhuǎn)至步驟S8;
[0014](2 )PSI不滿足打包條件,進(jìn)入步驟S4;
[0015]S4.判斷PCR是否滿足打包條件:
[0016](I )PCR滿足打包條件,生成一個PCR標(biāo)記的TS包,并跳轉(zhuǎn)至步驟S8 ;
[0017](2)PCR不滿足打包條件,進(jìn)入步驟S5;
[0018]S5.判斷音頻是否滿足打包條件:
[0019](I)音頻滿足打包條件,生成一個音頻TS包,并跳轉(zhuǎn)至步驟S8;
[0020](2)音頻不滿足打包條件,進(jìn)入步驟S6;
[0021 ] S6.判斷視頻是否滿足打包條件:
[0022](I)視頻滿足打包條件,生成一個視頻TS包,并跳轉(zhuǎn)至步驟S8 ;
[0023](2)視頻不滿足打包條件,進(jìn)入步驟S7;
[0024]S7.生成一個空包并進(jìn)入步驟S8;
[0025]S8.通過模擬解碼緩存器,刪除播放時間小于TS包對應(yīng)節(jié)目時間的數(shù)據(jù);完成當(dāng)前TS包的生成,并返回步驟SI進(jìn)行下一個TS包的生成。
[0026]步驟SI中如果所有音視頻數(shù)據(jù)均被打包,且TS包的節(jié)目時間大于音視頻數(shù)據(jù)的最大播放時間戳,則認(rèn)為音視頻打包完成。
[0027]步驟S2中PSI的打包條件為:TS包與上一次打包PSI的節(jié)目時間間隔大于PSI閾值,PSI閾值在開始生成TS流之前預(yù)先設(shè)定。
[0028]步驟S3中PCR的打包條件為:TS包與上一次打包PCR的節(jié)目時間間隔大于PCR閾值,PCR閾值在開始生成TS流之前預(yù)先設(shè)定。
[0029]步驟S5中對音頻是否滿足條件的判斷包括以下子步驟:
[0030]S51.判斷音頻數(shù)據(jù)的播放時間與視頻數(shù)據(jù)的播放時間(視頻流中準(zhǔn)備打包的數(shù)據(jù)播放時間)大小關(guān)系:
[0031 ] (I)如果音頻數(shù)據(jù)的播放時間小于視頻數(shù)據(jù)的播放時間;進(jìn)入步驟S52;
[0032](2)如果音頻數(shù)據(jù)的播放時間不小于視頻數(shù)據(jù)的播放時間,則不滿足音頻打包條件;
[0033]S52.模擬一個音頻解碼器緩存,判斷判斷音頻數(shù)據(jù)的播放時間在大于TS包對應(yīng)節(jié)目時間的固定范圍內(nèi)時,音頻模擬解碼緩存是否有溢出:
[0034](I)如果音頻模擬解碼緩存無溢出,則認(rèn)為滿足音頻打包條件;
[0035](2)如果音頻模擬解碼緩存有溢出,則認(rèn)為不滿足音頻打包條件。
[0036]步驟S6中對視頻是否滿足條件的判斷包括:模擬一個視頻解碼器緩存,判斷視頻數(shù)據(jù)的播放時間在大于TS包對應(yīng)節(jié)目時間的固定范圍內(nèi)、視頻模擬解碼緩存是否有溢出:
[0037](I)如果視頻模擬解碼緩存無溢出,則認(rèn)為滿足視頻打包條件;
[0038](2)如果視頻模擬解碼緩存有溢出,則認(rèn)為不滿足視頻打包條件。
[0039]本發(fā)明的有益效果是:按照PS1、PCR、音頻、視頻和空包的先后順序,判斷先滿足打包條件數(shù)據(jù)類型,再生成該類型的TS包,最終生成符合標(biāo)準(zhǔn)的TS流;且生成每個TS包后,通過模擬解碼緩存器,刪除播放時間小于TS包對應(yīng)節(jié)目時間的數(shù)據(jù);生成每個音頻TS包時,模擬一個音頻解碼器緩存,確保音頻解碼器緩存大于該TS包節(jié)目時間的音頻數(shù)據(jù)量;生成每個視頻TS時,模擬一個視頻頻解碼器緩存,確保視頻解碼器緩存大于該TS包節(jié)目時間的視頻數(shù)據(jù)量,進(jìn)而使得生成的TS流在解碼時不會發(fā)生緩存的溢出。
【附圖說明】
[0040]圖1為本發(fā)明的流程圖。
【具體實施方式】
[0041]下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案,但本發(fā)明的保護(hù)范圍不局限于以下所述。
[0042]如圖1所示,一種生成TS流的打包順序控制方法,包括以下步驟:
[0043]S1.開始生成TS流;
[0044]S2.判斷音視頻是否打包完成:
[0045](I)音視頻打包完成,打包結(jié)束;
[0046](2)音視頻打包沒有完成,進(jìn)入步驟S3;
[0047]音視頻打包完成,即所有音視頻數(shù)據(jù)已打包完畢;首先所有音視頻數(shù)據(jù)均被打包,其次TS包的節(jié)目時間大于音視頻數(shù)據(jù)的最大播放時間戳,滿足兩個條件后就結(jié)束打包任務(wù),確保流中的所有音視頻數(shù)據(jù)均可解碼播放;設(shè)音頻未打包數(shù)據(jù)長度為Ia,視頻未打包數(shù)據(jù)長度為IV,已音視頻數(shù)據(jù)的最大播放時間戳Pt Smax,TS包的節(jié)目時間pcrts,如果Ia = O,Iv =O,且pcrts >ptSmax,則結(jié)束打包,否貝lJ,進(jìn)入步驟S3。
[0048]S3.判斷PSI是否滿足打包條件:
[0049](I )PSI滿足打包條件,連續(xù)生成所有節(jié)目信息的TS包,并跳轉(zhuǎn)至步驟S8;
[0050](2)PSI不滿足打包條件,進(jìn)入步驟S4;
[0051]TS包與上一次打包PSI信息的節(jié)目時間間隔超過閾值則視為滿足條件,進(jìn)行打包;如設(shè)置閾值0.5s,則確保PSI信息在0.5s內(nèi)打包一次。
[0052]設(shè)PSI閾值為Tpsi,上一次打包PSI的節(jié)目時間為Pcrpsi,如果當(dāng)前TS包的節(jié)目時間pcrts>pcrPsi+TPsi,則打包所有節(jié)目信息,并更新pcrpsi,更新后的pcrpsi與當(dāng)前的pcrts相等。
[0053]S4.判斷PCR是否滿足打包條件:
[0054](I )PCR滿足打包條件,生成一個PCR標(biāo)記的TS包,并跳轉(zhuǎn)至步驟S8 ;
[0055](2)PCR不滿足打包條件,進(jìn)入步驟S5;
[0056]TS包與上一次打包PCR信息的節(jié)目時間間隔超過閾值,則認(rèn)為滿足條件,進(jìn)行打包,如設(shè)置閾值小于40ms,確保PCR信息在40ms內(nèi)打包一次。
[0057]設(shè)PCR閾值為Tpcr,上一次打包PCR的節(jié)目時間為Pcrpcr,如果當(dāng)前TS包的節(jié)目時間pcrts >pcrpcr+TPCT,則生成一個PCR標(biāo)記的TS包,并對pcrpcr進(jìn)行更新,更新后的pcrpcr等于當(dāng)前pcrts ο
[0058]S5.判斷音頻是否滿足打包條件:
[0059](I)音頻滿足打包條件,生成一個音頻TS包,并跳轉(zhuǎn)至步驟S8;
[0060](2)音頻不滿足打包條件,進(jìn)入步驟S6;
[0061]及時打包音頻數(shù)據(jù),可防止流中音頻出現(xiàn)數(shù)據(jù)下溢,但音頻數(shù)據(jù)連續(xù)打包太多會導(dǎo)致流中音頻出現(xiàn)數(shù)據(jù)上溢,設(shè)音頻模擬解碼緩存大小Sma,音頻緩存中數(shù)據(jù)長度為Ima,系統(tǒng)時間超時閾值為Tpcra(步驟S52中所述的固定時間,所有音頻流的超時閾值均為0.95秒),如果ptsa<pts/ 4七8£1<口01'1;3+1'1)。1^,且1]1£1>11113,則滿足音頻打包條件4七8£1表示當(dāng)前音頻數(shù)據(jù)的播放時間,PtS/表示當(dāng)前視頻數(shù)據(jù)播放時間(視頻流中準(zhǔn)備打包的數(shù)據(jù)播放時間)。
[0062]S6.判斷視頻是否滿足打包條件:
[0063](I)視頻滿足打包條件,生成一個視頻TS包,并跳轉(zhuǎn)至步驟S8 ;
[0064](2)視頻不滿足打包條件,進(jìn)入步驟S7;
[0065]及時打包視數(shù)據(jù),可防止流中視頻出現(xiàn)數(shù)據(jù)下溢,但視頻數(shù)據(jù)打包太多會導(dǎo)致流中視頻出現(xiàn)數(shù)據(jù)上溢,設(shè)視頻模擬解碼緩存大小為mv,視頻緩存中數(shù)據(jù)長度為Imv,系統(tǒng)時間超時閾值Tpcra(步驟S6中的固定時間,超時閾值,H264: 8秒、MPEG2: 0.95秒),如果ptsv<口(31^+1'1)。:^,且1]^>11^,則打包一個視頻數(shù)據(jù)的15包抓8扇示當(dāng)前視頻數(shù)據(jù)播放時間。
[0066]S7.生成一個空包并進(jìn)入步驟S8;
[0067]S8.通過模擬解碼緩存器,刪除播放時間小于TS包對應(yīng)節(jié)目時間的數(shù)據(jù);完成當(dāng)前TS包的生成,并返回步驟SI進(jìn)行下一個TS包的生成。
【主權(quán)項】
1.一種生成TS流的打包順序控制方法,其特征在于:包括以下步驟: 51.開始生成TS流; 52.判斷音視頻是否打包完成: (1)音視頻打包完成,打包結(jié)束; (2)音視頻打包沒有完成,進(jìn)入步驟S3; 53.判斷PSI是否滿足打包條件: (I )PSI滿足打包條件,連續(xù)生成所有節(jié)目信息的TS包,并跳轉(zhuǎn)至步驟S8; (2)PSI不滿足打包條件,進(jìn)入步驟S4; 54.判斷PCR是否滿足打包條件: (I )PCR滿足打包條件,生成一個PCR標(biāo)記的TS包,并跳轉(zhuǎn)至步驟S8 ; (2)PCR不滿足打包條件,進(jìn)入步驟S5; 55.判斷音頻是否滿足打包條件: (I)音頻滿足打包條件,生成一個音頻TS包,并跳轉(zhuǎn)至步驟S8; (2 )音頻不滿足打包條件,進(jìn)入步驟S6; 56.判斷視頻是否滿足打包條件: (I)視頻滿足打包條件,生成一個視頻TS包,并跳轉(zhuǎn)至步驟S8 ; (2 )視頻不滿足打包條件,進(jìn)入步驟S7; 57.生成一個空包并進(jìn)入步驟S8; 58.通過模擬解碼緩存器,刪除播放時間小于TS包對應(yīng)節(jié)目時間的數(shù)據(jù),完成當(dāng)前TS包的生成,并返回步驟SI進(jìn)行下一個TS包的生成。2.根據(jù)權(quán)利要求1所述的一種生成TS流的打包順序控制方法,其特征在于:步驟SI中如果所有音視頻數(shù)據(jù)均被打包,且TS包的節(jié)目時間大于音視頻數(shù)據(jù)的最大播放時間戳,則認(rèn)為首視頻打包完成。3.根據(jù)權(quán)利要求1所述的一種生成TS流的打包順序控制方法,其特征在于:步驟S2中PSI的打包條件為:TS包與上一次打包PSI的節(jié)目時間間隔大于PSI閾值,PSI閾值在開始生成TS流之前預(yù)先設(shè)定。4.根據(jù)權(quán)利要求1所述的一種生成TS流的打包順序控制方法,其特征在于:步驟S3中PCR的打包條件為:TS包與上一次打包PCR的節(jié)目時間間隔大于PCR閾值,PCR閾值在開始生成TS流之前預(yù)先設(shè)定。5.根據(jù)權(quán)利要求1所述的一種生成TS流的打包順序控制方法,其特征在于:步驟S5中對音頻是否滿足條件的判斷包括以下子步驟: 551.判斷音頻數(shù)據(jù)的播放時間與視頻數(shù)據(jù)的播放時間大小關(guān)系: (1)如果音頻數(shù)據(jù)的播放時間小于視頻數(shù)據(jù)的播放時間;進(jìn)入步驟S52; (2)如果音頻數(shù)據(jù)的播放時間不小于視頻數(shù)據(jù)的播放時間,則不滿足音頻打包條件; 552.模擬一個音頻解碼器緩存,判斷判斷音頻數(shù)據(jù)的播放時間在大于TS包對應(yīng)節(jié)目時間的固定范圍內(nèi)時,音頻模擬解碼緩存是否有溢出: (1)如果音頻模擬解碼緩存無溢出,則認(rèn)為滿足音頻打包條件; (2)如果音頻模擬解碼緩存有溢出,則認(rèn)為不滿足音頻打包條件。6.根據(jù)權(quán)利要求1所述的一種生成TS流的打包順序控制方法,其特征在于:步驟S6中對視頻是否滿足條件的判斷包括:模擬一個視頻解碼器緩存,判斷視頻數(shù)據(jù)的播放時間在大于TS包對應(yīng)節(jié)目時間的固定范圍內(nèi)、視頻模擬解碼緩存是否有溢出: (1)如果視頻模擬解碼緩存無溢出,則認(rèn)為滿足視頻打包條件; (2)如果視頻模擬解碼緩存有溢出,則認(rèn)為不滿足視頻打包條件。
【文檔編號】H04N21/8547GK105959730SQ201610367473
【公開日】2016年9月21日
【申請日】2016年5月27日
【發(fā)明人】龔濤, 鄭雪梅, 劉盾, 韓志宏
【申請人】成都索貝數(shù)碼科技股份有限公司