日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MPEG2-TS的小结 [1]

發(fā)布時(shí)間:2025/7/25 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MPEG2-TS的小结 [1] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MPEG2-TS的小結(jié) [1] (2008-07-27 10:23) 分類: DVB相關(guān)

1. 簡(jiǎn)述

MPEG2 TS和數(shù)字電視是緊密不可分割的,值得總結(jié)一下其中的一些關(guān)系。

ISO/IEC138181:系統(tǒng)部分;

ISO/IEC138182:視頻;

ISO/IEC138183:音頻;

ISO/IEC 138184:一致性測(cè)試;

ISO/IEC138185:軟件部分;

ISO/IEC138186:數(shù)字存儲(chǔ)媒體命令與控制;

ISO/IEC 138187:高級(jí)音頻編碼;

ISO/IEC138188:系統(tǒng)解碼實(shí)時(shí)接口;

MPEG2系統(tǒng)任務(wù)包括:

1. 規(guī)定以包傳輸數(shù)據(jù)的協(xié)議;

2. 規(guī)定收發(fā)兩端數(shù)據(jù)流同步的協(xié)議;

3. 提供多個(gè)數(shù)據(jù)流的復(fù)用和解復(fù)用協(xié)議;

3. 提供數(shù)據(jù)流加密的協(xié)議。

以包形式存儲(chǔ)和傳送數(shù)據(jù)流是MPEG2系統(tǒng)之要點(diǎn)。

?

2. ES數(shù)據(jù)流

ES是直接從編碼器出來(lái)的數(shù)據(jù)流,可以是編碼過(guò)的視頻數(shù)據(jù)流,音頻數(shù)據(jù)流,或其他編碼數(shù)據(jù)流的統(tǒng)稱。ES流經(jīng)過(guò)PES打包器之后,被轉(zhuǎn)換成PES包。PES包由包頭和payload組成,具體格式摘錄如下:

<!--[if !vml]--><!--[endif]-->

PES層,主要是在PES包頭信息中加入PTS(顯示時(shí)間標(biāo)簽)DTS(解碼時(shí)間標(biāo)簽)用于視頻、音頻同步。

其實(shí),Mpeg-2用于視音頻同步以及系統(tǒng)時(shí)鐘恢復(fù)的時(shí)間標(biāo)簽分別在ESPESTS3個(gè)層次中。在ES層,與同步有關(guān)的主要是視頻緩沖驗(yàn)證VBVVideo Buffer Verifier),用以防止解碼器的緩沖器出現(xiàn)上溢或下溢;在PES層,主要是在PES頭信息里出現(xiàn)的顯示時(shí)間標(biāo)簽PTSPresentation Time Stamp)和解碼時(shí)間標(biāo)簽DTSDecoding Time Stamp);在TS層中,TS頭信息包含了節(jié)目時(shí)鐘參考PCRProgram Clock Reference),用于恢復(fù)出與編碼端一致的系統(tǒng)時(shí)序時(shí)鐘STCSystem Time Clock)。

我們先看看從ESPES的過(guò)程:

<!--[if !vml]--><!--[endif]-->

基本流程如下:首先MPEG-2壓縮編碼得到的ES基本流,這個(gè)數(shù)據(jù)流很大,并且只是IPB的這些視頻幀或音頻取樣信息,然后加入一些同步信息,打包成長(zhǎng)度可變長(zhǎng)度的數(shù)據(jù)包PES,原來(lái)是流的格式,現(xiàn)在成了數(shù)據(jù)包的分割形式。同時(shí)要注意的是,ES是只包含一種內(nèi)容的數(shù)據(jù)流,如只含視頻,或只含音頻等,打包之后的PES也是只含一種性質(zhì)的ES,如只含視頻ESPES,只含音頻ESPES等??梢灾?#xff0c;ES是編碼視頻數(shù)據(jù)流或音頻數(shù)據(jù)流,每個(gè)ES都由若干個(gè)存取單元(AU)組成,每個(gè)視頻AU或音頻AU都是由頭部和編碼數(shù)據(jù)兩部分組成,1個(gè)AU相當(dāng)于編碼的1幅視頻圖像或1個(gè)音頻幀,也可以說(shuō),每個(gè)AU實(shí)際上是編碼數(shù)據(jù)流的顯示單元,即相當(dāng)于解碼的1幅視頻圖像或1個(gè)音頻幀的取樣。PEG-2對(duì)視頻的壓縮產(chǎn)生I幀、P幀、B幀。把幀順序I1,P4,B2,B3,P7,B5,B6幀的編碼ES,通過(guò)打包并在每個(gè)幀中插入 PTS/DTS標(biāo)志,變成PES。在插入PTS/DTS標(biāo)志時(shí),由于在BPTSDTS相等,所以無(wú)須在B幀多插入DTS。而對(duì)于I P幀,由于經(jīng)過(guò)復(fù)用后數(shù)據(jù)包的順序會(huì)發(fā)生變化,顯示前一定要存儲(chǔ)于視頻解碼器的從新排序緩存器中,經(jīng)過(guò)從新排序后再顯示,所以一定要同時(shí)插入PTS DTS作為從新排序的依據(jù)。

?

其中,有否PTS/DTS標(biāo)志,是解決視音頻同步顯示、防止解碼器輸入緩存器上溢或下溢的關(guān)鍵所在。PTS表明顯示單元出現(xiàn)在系統(tǒng)目標(biāo)解碼器(STD- System?Target?Decoder)的時(shí)間,?DTS表明將存取單元全部字節(jié)從STDES解碼緩存器移走的時(shí)刻。視頻編碼圖像幀次序?yàn)?/span> I1,P4,B2,B3,P7,B5,B6,I10,B8,B9ES,加入PTS/DTS后,打包成一個(gè)個(gè)視頻PES包。每個(gè)PES包都有一個(gè)包頭,用于定義PES內(nèi)的數(shù)據(jù)內(nèi)容,提供定時(shí)資料。每個(gè)IP、B幀的包頭都有一個(gè)PTSDTS,但PTSDTS對(duì)B幀都是一樣的,無(wú)須標(biāo)出B幀的DTS。對(duì)I幀和P幀,顯示前一定要存儲(chǔ)于視頻解碼器的重新排序緩存器中,經(jīng)過(guò)延遲(重新排序)后再顯示,一定要分別標(biāo)明PTSDTS。例如,解碼器輸入的圖像幀次序?yàn)?/span>I1,P4,B2,B3,P7,B5,B6,I10,B8,B9,依解碼器輸出的幀次序,應(yīng)該P4B2B3在先,但顯示時(shí)P4一定要比B2B3在后,即P4要在提前插入數(shù)據(jù)流中的時(shí)間標(biāo)志指引下,經(jīng)過(guò)緩存器重新排序,以重建編碼前視頻幀次序I1,B2,B3,P4,B5,B6,P7,B8,B9,I10。顯然,PTS/DTS標(biāo)志表明對(duì)確定事件或確定信息解碼的專用時(shí)標(biāo)的存在,依靠專用時(shí)標(biāo)解碼器,可知道該確定事件或確定信息開(kāi)始解碼或顯示的時(shí)刻。例如,PTS/DTS標(biāo)志可用于確定編碼、多路復(fù)用、解碼、重建的時(shí)間。

?

3. PS數(shù)據(jù)流

上節(jié)說(shuō)過(guò),ES首先需打包成PES流包,然后PES根據(jù)需要打包成PSTS包進(jìn)行存儲(chǔ)或傳輸。其每路ES只包含一路信源的編碼數(shù)據(jù)流,所以每路PES也只包含相對(duì)應(yīng)信源的數(shù)據(jù)流。

對(duì) PS流而言,每個(gè)PES包頭含有PTSDTS,流識(shí)別碼,用于區(qū)別不同性質(zhì)ES。然后通過(guò)PS復(fù)用器將PES包復(fù)用成PS包。實(shí)際上是將PES 包分解為更細(xì)小的PS包。在解碼的時(shí)候,解復(fù)用器將PS分解成一個(gè)個(gè)PES包,拆包器然后將PES包拆成視頻和音頻的ES,最后輸入至各自解碼器進(jìn)行解碼。一個(gè)問(wèn)題是:各個(gè)ES在解碼時(shí),如何保證視音頻的同步呢?除了PTSDTS的配合工作外,還有一個(gè)重要的參數(shù)是SCR(system clock reference)。在編碼的時(shí)候,PTSDTSSCR都是由STC(system time clock)生成的,在解碼時(shí),STC會(huì)再生,并通過(guò)鎖相環(huán)路(PLLphase lock loop),用本地SCR相位與輸入的瞬時(shí)SCR相位鎖相比較,以確定解碼過(guò)程是否同步,若不同步,則用這個(gè)瞬時(shí)SCR調(diào)整27MHz的本地時(shí)鐘頻率。最后,PTSDTSSCR一起配合,解決視音頻同步播放的問(wèn)題。PS格式摘錄如下:

byte 0

byte 1

byte 2

byte 3

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

0000 0000 0000 0000 0000 0001

start code

1011 1010

PACK identifier

?

byte 4

byte 5

byte 6

byte 7

byte 8

byte 9

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

01

SCR 32..30

1

SCR 29..15

1

SCR 14..00

1

SCR_ext

1

?

byte 10

byte 11

byte 12

byte 13

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

Program_Mux_Rate

1

1

reserved

pack_stuffing_length

PS包的長(zhǎng)度比較長(zhǎng)且可變,主要用于無(wú)誤碼環(huán)境里,因?yàn)樵介L(zhǎng)的話,同步越困難,且在丟包的情況下,重組也越困難。所以,PS適合于節(jié)目信息的編輯和本地內(nèi)容應(yīng)用的application。

?

4. TS數(shù)據(jù)流

TS流也是由一個(gè)或多個(gè)PES組合而來(lái)的,他們可以具有相同的時(shí)間基準(zhǔn),也可以不同。其基本的復(fù)用思想是,對(duì)具有相同時(shí)間基準(zhǔn)的多個(gè)PES現(xiàn)進(jìn)行節(jié)目復(fù)用,然后再對(duì)相互有獨(dú)立時(shí)間基準(zhǔn)的各個(gè)PS進(jìn)行傳輸復(fù)用,最終產(chǎn)生出TSTS包由包頭和包數(shù)據(jù)2部分組成,其中包頭還可以包括擴(kuò)展的自適用區(qū)。包頭長(zhǎng)度占4bytes,自使用區(qū)和包數(shù)據(jù)共占184bytes,整個(gè)TS包長(zhǎng)度相當(dāng)于4個(gè)ATM包長(zhǎng)。TS包的包頭由如下圖摘錄所示的同步字節(jié)、傳輸誤碼指示符、有效載荷單元起始指示符、傳輸優(yōu)先、包識(shí)別(PID-Packet Identification)、傳輸加擾控制、自適應(yīng)區(qū)控制和連續(xù)計(jì)數(shù)器8個(gè)部分組成。

<!--[if !vml]--><!--[endif]-->

對(duì)上面的各個(gè)字段簡(jiǎn)單說(shuō)明一下:

Partial Transport Stream Packet Format

Name

Number
of bits

Description

sync byte

8

0x47

Transport Error Indicator (TEI)

1

Set by demodulator if can't correct errors in the stream[2]

Payload Unit Start Indicator

1

1 means start of PES data or PSI otherwise zero only .

Transport Priority

1

One means higher priority than other packets with the same PID.

PID

13

Packet ID

Scrambling control

2

'00' = Not scrambled. ? The following per DVB spec [3]: ? '01' = Reserved for future use, ? '10' = Scrambled with even key, ? '11' = Scrambled with odd key

Adaptation field exist

1

1 means presence of the adaptation field

Payload data exist

1

1 means presence of data

Continuity counter

4

?

?

?

Note: the total number of bits above is 32 and is called the transport stream 4-byte prefix.

Adaptation field

0 or more

Depends on flags

Payload Data

0 or more

Depends on flags

Adaptation Field Format

Name

Number
of bits

Description

Adaptation Field Length

8

Number of bytes in the adaptation field immediately following this byte

Discontinuity indicator

1

Set to 1 if a discontinuity occurred in the continuity counter of the TS packet

Random Access indicator

1

Set to 1 if the PES packet in this TS packet starts a video/audio sequence

Elementary stream priority indicator

1

1 = higher priority

PCR flag

1

1 means adaptation field does contain a PCR field

OPCR flag

1

?

Splicing point flag

1

1 means presence of splice countdown field in adaptation field

Transport private data flag

1

1 means presence of private data bytes in adaptation field

Adaptation field extension flag

1

1 means presence of adaptation field extension

Below fields are optional

variable

Depends on flags

PCR

33+9

Program clock reference

OPCR

33+9

Original Program clock reference. Helps when one TS is copied into another

Splice countdown

8

Indicates how many TS packets from this one a splicing point occurs (may be negative)

stuffing bytes

variable

?

其中,在包頭中:

同步字節(jié)(sync byte)的自動(dòng)相關(guān)特性,檢測(cè)數(shù)據(jù)流中的包限制,建立包同步;

傳輸誤碼指示符(Transport Error Indicator),指有不能消除誤碼時(shí),采用誤碼校正解碼器可表示1bit 的誤碼,但無(wú)法校正;

有效載荷單元起始指示符(Payload Unit Start Indicator),表示該數(shù)據(jù)包是否存在確定的起始信息;

傳輸優(yōu)先級(jí)(Transport Priority),是給TS包分配優(yōu)先權(quán);PID值是由用戶確定的,解碼器根據(jù)PIDTS上從不同ES來(lái)的TS包區(qū)別出來(lái),以重建原來(lái)的ES

傳輸加擾控制(Scrambling control),可指示數(shù)據(jù)包內(nèi)容是否加擾,但包頭和自適應(yīng)區(qū)永遠(yuǎn)不加擾;

自適應(yīng)區(qū)控制存在字段(Adaptation field exist),用2 bit表示有否自適應(yīng)區(qū),即(01)表示有有用信息無(wú)自適應(yīng)區(qū),(10)表示無(wú)有用信息有自適應(yīng)區(qū),(11)表示有有用信息有自適應(yīng)區(qū),(00)無(wú)定義;

載荷存在標(biāo)記字段(Payload data exist),1一位著存在載荷;

連續(xù)計(jì)數(shù)器(Continuity counter)可對(duì)PID包傳送順序計(jì)數(shù),據(jù)計(jì)數(shù)器讀數(shù),接收端可判斷是否有包丟失及包傳送順序錯(cuò)誤。顯然,包頭對(duì)TS包具有同步、識(shí)別、檢錯(cuò)及加密功能。

??? TS包自適應(yīng)區(qū)由自適應(yīng)區(qū)長(zhǎng)、各種標(biāo)志指示符、與插入標(biāo)志有關(guān)的信息和填充數(shù)據(jù)4部分組成。其中標(biāo)志部分由間斷指示符、隨機(jī)存取指示符、ES優(yōu)化指示符、PCR標(biāo)志、接點(diǎn)標(biāo)志、傳輸專用數(shù)據(jù)標(biāo)志、原始PCR標(biāo)志、自適應(yīng)區(qū)擴(kuò)展標(biāo)志8個(gè)部分組成。重要的是標(biāo)志部分的PCR字段,可給編解碼器的27MHz時(shí)鐘提供同步資料,進(jìn)行同步。其過(guò)程是,通過(guò)PLL,用解碼時(shí)本地用PCR相位與輸入的瞬時(shí)PCR相位鎖相比較,確定解碼過(guò)程是否同步,若不同步,則用這個(gè)瞬時(shí)PCR調(diào)整時(shí)鐘頻率。因?yàn)?#xff0c;數(shù)字圖像采用了復(fù)雜而不同的壓縮編碼算法,造成每幅圖像的數(shù)據(jù)各不相同,使直接從壓縮編碼圖像數(shù)據(jù)的開(kāi)始部分獲取時(shí)鐘信息成為不可能。為此,選擇了某些(而非全部)TS包的自適應(yīng)區(qū)來(lái)傳送定時(shí)信息。于是,被選中的TS包的自適應(yīng)區(qū),可用于測(cè)定包信息的控制bit和重要的控制信息。自適應(yīng)區(qū)無(wú)須伴隨每個(gè)包都發(fā)送,發(fā)送多少主要由選中的TS包的傳輸專用時(shí)標(biāo)參數(shù)決定。標(biāo)志中的隨機(jī)存取指示符和接點(diǎn)標(biāo)志,在節(jié)目變動(dòng)時(shí),為隨機(jī)進(jìn)入I幀壓縮的數(shù)據(jù)流提供隨機(jī)進(jìn)入點(diǎn),也為插入當(dāng)?shù)毓?jié)目提供方便。自適應(yīng)區(qū)中的填充數(shù)據(jù)是由于PES包長(zhǎng)不可能正好轉(zhuǎn)為TS包的整數(shù)倍,最后的TS包保留一小部分有用容量,通過(guò)填充字節(jié)加以填補(bǔ),這樣可以防止緩存器下溢,保持總碼率恒定不變。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/moonvan/archive/2011/10/22/2221268.html

總結(jié)

以上是生活随笔為你收集整理的MPEG2-TS的小结 [1]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。