日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MPEG2-TS的小结 [1]

發布時間:2025/7/25 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MPEG2-TS的小结 [1] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MPEG2-TS的小結 [1] (2008-07-27 10:23) 分類: DVB相關

1. 簡述

MPEG2 TS和數字電視是緊密不可分割的,值得總結一下其中的一些關系。

ISO/IEC138181:系統部分;

ISO/IEC138182:視頻;

ISO/IEC138183:音頻;

ISO/IEC 138184:一致性測試;

ISO/IEC138185:軟件部分;

ISO/IEC138186:數字存儲媒體命令與控制;

ISO/IEC 138187:高級音頻編碼;

ISO/IEC138188:系統解碼實時接口;

MPEG2系統任務包括:

1. 規定以包傳輸數據的協議;

2. 規定收發兩端數據流同步的協議;

3. 提供多個數據流的復用和解復用協議;

3. 提供數據流加密的協議。

以包形式存儲和傳送數據流是MPEG2系統之要點。

?

2. ES數據流

ES是直接從編碼器出來的數據流,可以是編碼過的視頻數據流,音頻數據流,或其他編碼數據流的統稱。ES流經過PES打包器之后,被轉換成PES包。PES包由包頭和payload組成,具體格式摘錄如下:

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

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

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

我們先看看從ESPES的過程:

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

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

?

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

?

3. PS數據流

上節說過,ES首先需打包成PES流包,然后PES根據需要打包成PSTS包進行存儲或傳輸。其每路ES只包含一路信源的編碼數據流,所以每路PES也只包含相對應信源的數據流。

PS流而言,每個PES包頭含有PTSDTS,流識別碼,用于區別不同性質ES。然后通過PS復用器將PES包復用成PS包。實際上是將PES 包分解為更細小的PS包。在解碼的時候,解復用器將PS分解成一個個PES包,拆包器然后將PES包拆成視頻和音頻的ES,最后輸入至各自解碼器進行解碼。一個問題是:各個ES在解碼時,如何保證視音頻的同步呢?除了PTSDTS的配合工作外,還有一個重要的參數是SCR(system clock reference)。在編碼的時候,PTSDTSSCR都是由STC(system time clock)生成的,在解碼時,STC會再生,并通過鎖相環路(PLLphase lock loop),用本地SCR相位與輸入的瞬時SCR相位鎖相比較,以確定解碼過程是否同步,若不同步,則用這個瞬時SCR調整27MHz的本地時鐘頻率。最后,PTSDTSSCR一起配合,解決視音頻同步播放的問題。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包的長度比較長且可變,主要用于無誤碼環境里,因為越長的話,同步越困難,且在丟包的情況下,重組也越困難。所以,PS適合于節目信息的編輯和本地內容應用的application

?

4. TS數據流

TS流也是由一個或多個PES組合而來的,他們可以具有相同的時間基準,也可以不同。其基本的復用思想是,對具有相同時間基準的多個PES現進行節目復用,然后再對相互有獨立時間基準的各個PS進行傳輸復用,最終產生出TSTS包由包頭和包數據2部分組成,其中包頭還可以包括擴展的自適用區。包頭長度占4bytes,自使用區和包數據共占184bytes,整個TS包長度相當于4ATM包長。TS包的包頭由如下圖摘錄所示的同步字節、傳輸誤碼指示符、有效載荷單元起始指示符、傳輸優先、包識別(PID-Packet Identification)、傳輸加擾控制、自適應區控制和連續計數器8個部分組成。

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

對上面的各個字段簡單說明一下:

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

?

其中,在包頭中:

同步字節(sync byte)的自動相關特性,檢測數據流中的包限制,建立包同步;

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

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

傳輸優先級(Transport Priority),是給TS包分配優先權;PID值是由用戶確定的,解碼器根據PIDTS上從不同ES來的TS包區別出來,以重建原來的ES

傳輸加擾控制(Scrambling control),可指示數據包內容是否加擾,但包頭和自適應區永遠不加擾;

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

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

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

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

?

?

轉載于:https://www.cnblogs.com/moonvan/archive/2011/10/22/2221268.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。