TS流格式學(xué)習(xí)

引言

標(biāo)準(zhǔn)文檔給自己的定義是:論述了將音頻和視頻的一個(gè)或多個(gè)基本流以及其他數(shù)據(jù)組合成為一個(gè)單獨(dú)的流或多個(gè)流,以適于存儲(chǔ)或傳輸。系統(tǒng)編碼遵循本規(guī)范中提出的句法和語義規(guī)則,并且提供信息使得解碼器緩沖區(qū)可以在各種檢索或接收條件下進(jìn)行同步解碼。

這里寫圖片描述

節(jié)目流:它是由一個(gè)或多個(gè)具有共同時(shí)間基的PES 包的流組合成一個(gè)單獨(dú)的流而形成的。
傳輸流:是將具有一個(gè)或多個(gè)獨(dú)立時(shí)間基的一個(gè)或多個(gè)節(jié)目組合成為一個(gè)單獨(dú)的流。由組成一個(gè)節(jié)目的基本流所構(gòu)成的PES包共享一個(gè)公共的時(shí)間基。傳輸流被設(shè)計(jì)為在易于出錯(cuò)的環(huán)境中使用,例如在有損的或嘈雜的媒體中進(jìn)行存儲(chǔ)或傳輸。傳輸流的包長度為188 個(gè)字節(jié)。

引言1 傳輸流

傳輸流是一種流定義,適用于在一個(gè)可能發(fā)生較多錯(cuò)誤的環(huán)境中傳輸或存儲(chǔ)由遵循ITU-T H.262 建議書 | ISO/IEC 13818-2 和ISO/IEC 13818-3 的編碼數(shù)據(jù)以及其他數(shù)據(jù)所形成的一個(gè)或多個(gè)節(jié)目。
傳輸流可能具有固定速率或可變速率;傳輸流的速率由節(jié)目時(shí)鐘基準(zhǔn)(PCR)字段的取值和位置來定義,一般來說對于每種節(jié)目都有一個(gè)獨(dú)立的PCR 字段。

引言2 節(jié)目流

節(jié)目流是一種流定義,適用于在一個(gè)不太可能發(fā)生誤差的環(huán)境中傳輸或存儲(chǔ)由編碼數(shù)據(jù)或其他數(shù)據(jù)所形成的一個(gè)節(jié)目,在這種情況下,對系統(tǒng)編碼的處理,如通過軟件進(jìn)行處理,是一個(gè)主要的考慮方面。
節(jié)目流可能具有固定速率或可變速率,節(jié)目流的速率由系統(tǒng)時(shí)鐘基準(zhǔn)(SCR)字段和復(fù)用速率(mux_rate)字段的取值和位置來定義。

引言4 PES

每個(gè)傳輸流和節(jié)目流在邏輯上都是由PES 包構(gòu)造的
屬于一個(gè)基本流的、具有同一個(gè)流ID 的、連續(xù)的PES 包序列可能被用于構(gòu)造一個(gè)PES 流
當(dāng)PES 包被用于構(gòu)造一個(gè)PES 流時(shí),它們必須包含基本流時(shí)鐘基(ESCR)字段和基本流速率(ES_Rate)字段

引言5 time mode

所有的時(shí)序都根據(jù)一種公共系統(tǒng)時(shí)鐘來定義,該時(shí)鐘被稱為一個(gè)系統(tǒng)時(shí)鐘。
在節(jié)目流中,此時(shí)鐘可能與視頻或音頻采樣時(shí)鐘之間具有一個(gè)精確指定的比率,或者其運(yùn)行頻率可能與精確的比率之間有輕微的不同,但仍然能夠提供精確的端到端的時(shí)序和時(shí)鐘恢復(fù)。
在傳輸流中,系統(tǒng)時(shí)鐘頻率被限定為在任何時(shí)候都應(yīng)與音頻和視頻采樣時(shí)鐘之間具有精確指定的比率;此限定的目的是為了簡化解碼器處的采樣速率恢復(fù)。

重要的定義

  • Elementary Stream Clock Reference; ESCR (system) 基本流時(shí)鐘參考
  • presentation time-stamp; PTS (system) 顯示時(shí)間標(biāo)記;PTS(系統(tǒng)):PES 包頭中可以存在的、指示系統(tǒng)目標(biāo)解碼器中顯示單元的顯示時(shí)間的一個(gè)字段。
  • Program Clock Reference; PCR (system) 節(jié)目時(shí)鐘參考;PCR(系統(tǒng)):從傳輸流中時(shí)間標(biāo)記推導(dǎo)而來的解碼器計(jì)時(shí)。
  • Program Specific Information; PSI (system) 節(jié)目特定信息;PSI(系統(tǒng)):PSI 由對于傳輸流的多路分解以及節(jié)目成功再現(xiàn)所必要的標(biāo)準(zhǔn)數(shù)據(jù)組成,并在2.4.4 中描述。專門規(guī)定的PSI 數(shù)據(jù)實(shí)例是非必備網(wǎng)絡(luò)信息表。
  • System Clock Reference; SCR (system) 系統(tǒng)時(shí)鐘參考;SCR(系統(tǒng)):從節(jié)目流中時(shí)間標(biāo)記推導(dǎo)而來的解碼器計(jì)時(shí)。
  • system target decoder; STD (system) 系統(tǒng)目標(biāo)解碼器;STD(系統(tǒng)):用于確定ITU-TH.222.0 建議書| ISO/IEC 13818-1 多路復(fù)用比特流語義的解碼過程的虛擬參考模型。

系統(tǒng)時(shí)鐘頻率

系統(tǒng)時(shí)鐘頻率值以Hz 為度量單位且必須滿足以下限制:

27 000 000 – 810 ≤ system_clock_frequency ≤ 27 000 000 + 810
system_clock_frequency 的速率變化,每次≤75×10?3 Hz/s

PCR計(jì)算

PCR(i) = PCR _ base(i)× 300 + PCR _ ext(i)
PCR_base(i) = ((system_clock_frequency × t(i)) / 300) %2^33
PCR_ext(i) = ((system_clock_frequency × t(i)) / 1)%300

PCR_base:以1/300 的系統(tǒng)時(shí)鐘頻率周期為單位,稱之為program_clock_reference_base
PCR-base的作用:
  a. 與PTS和DTS作比較, 當(dāng)二者相同時(shí), 相應(yīng)的單元被顯示或者解碼.
  b. 在解碼器切換節(jié)目時(shí),提供對解碼器PCR計(jì)數(shù)器的初始值,以讓該P(yáng)CR值與PTS、DTS最大可能地達(dá)到相同的時(shí)間起點(diǎn).
   
PCR_ext:以系統(tǒng)時(shí)鐘頻率為單位,稱之為program_clock_reference_extension
PCR-ext的作用:
  通過解碼器端的鎖相環(huán)路修正解碼器的系統(tǒng)時(shí)鐘, 使其達(dá)到和編碼器一致的27MHz.

例如:
時(shí)間"03:02:29.012"的PCR計(jì)算如下:
03:02:29.012=((3*60+2)*60)+29.012=10949.012s
PCR_base = ((27000000 × 10949.012) / 300) %2^33 = 98541080
PCR_ext = ((27000000 × 10949.012)/ 1) % 300 = 0
PCR = 98541080 * 300 + 0 = 295623324000

語法

首先看前輩們整理出來的一張圖:


這里寫圖片描述

一個(gè)TS數(shù)據(jù)包

47 41 00 30 07 50 00 00 80 F7 7E 00 00 00 01 E0 00 00 80 80 05 21 00 
07 F0 0D 00 00 00 01 09 10 00 00 00 01 67 4D 40 33 95 A0 0F 00 10 FB 
01 40 80 00 01 F4 80 00 75 30 70 00 00 0F 42 40 00 00 F4 24 0D DE 5C 
1F 1C 32 A0 00 00 00 01 68 EE 3C 80 00 00 00 01 06 00 07 81 19 40 00 
46 50 40 80 00 00 00 01 06 01 04 00 00 08 10 80 00 00 00 01 65 B8 04 
04 1F 02 EB 03 FE 13 F0 D4 6D 2C 00 D1 DF 2D C0 00 00 03 00 00 03 
00 00 03 00 00 03 00 00 2F 3D 76 1F D0 53 29 EE 83 00 00 03 00 00 03 
00 00 03 00 00 03 00 04 30 04 00 00 03 00 00 03 00 00 05 EC 00 00 03 
00 00 03 00 00 

包頭

這里寫圖片描述
//包頭數(shù)據(jù)
47 41 00 30

0100 0111 0100 0001 0000 0000 0011 0000

sync_byte - 8bit - 0x47

  • sync_byte 為固定的8 比特字段,其值為'0100 0111' (0x47)。在對于其他正式出現(xiàn)字段的賦值選擇中,諸如PID,應(yīng)避免sync_byte 仿真

**transport_error_indicator - 1bit - 0 **

  • 置于1 時(shí),它指示在相關(guān)傳輸流包中至少存在1 個(gè)不可校正比特錯(cuò)。此比特可以由傳輸層以外的實(shí)體設(shè)置為‘1’。設(shè)置為‘1’時(shí),此比特應(yīng)不重新設(shè)置為‘0’,除非誤差比特值已經(jīng)校正。

payload_unit_start_indicator - 1bit - 1

  • 對于承載PES包或PSI數(shù)據(jù)的傳輸流包,它具有標(biāo)準(zhǔn)含義。
    • 當(dāng)傳輸流包有效載荷包含PES包數(shù)據(jù)時(shí),payload_unit_start_indicator 具有以下意義:‘1’指示此傳輸流包的有效載荷應(yīng)隨著PES 包的首字節(jié)開始,‘0’指示在此傳輸流包中無任何PES包將開始。若payload_unit_start_indicator 設(shè)置為‘1’,則一個(gè)且僅有一個(gè)PES 包在此傳輸流包中起始。這也適用于stream_type 6 的專用流;
    • 當(dāng)傳輸流包有效載荷包含PSI 數(shù)據(jù)時(shí),payload_unit_start_indicator 具有以下意義:若傳輸流包承載PSI分段的首字節(jié),則payload_unit_start_indicator 值必為1,指示此傳輸流包的有效載荷的首字節(jié)承載pointer_field。若傳輸流包不承載PSI 分段的首字節(jié),則payload_unit_start_indicator 值必為‘0’,指示在此有效載荷中不存在pointer_field。參閱2.4.4.1 和2.4.4.2。這也適用于stream_type 5 的專用流;
    • 對空包而言,payload_unit_start_indicator 必須設(shè)置為‘0’。

transport_priority - 1bit - 0

  • 設(shè)置為‘1’時(shí),它指示該相關(guān)包比具有相同PID 但不具有該比特設(shè)置為1 的其他包有更大的優(yōu)先級。傳輸機(jī)制可以使用該字段優(yōu)先考慮基本流內(nèi)的該包數(shù)據(jù)。取決于應(yīng)用,transport_priority 字段可以不管PID 或者此字段僅在一個(gè)PID 范圍內(nèi)編碼。此字段可以由信道特定編碼器或解碼器來改變。

PID - 13bit - 0 0001 0000 0000

  • PID 為13 比特字段,指示包有效載荷中存儲(chǔ)的數(shù)據(jù)類型。


    這里寫圖片描述

transport_scrambling_control - 2bit - 00

  • 此2 比特字段指示傳輸流包有效載荷的加擾方式。
  • 傳輸流包頭以及自適應(yīng)字段若存在,應(yīng)不加擾。
  • 在空包的情況中,transport_scrambling_control 字段的值應(yīng)設(shè)置為“00”


    這里寫圖片描述

adaptation_field_control - 2bit - 11

  • 此2 比特字段指示此傳輸流包頭是否后隨自適應(yīng)字段和/或有效載荷


    這里寫圖片描述
  • 解碼器應(yīng)丟棄具有adaptation_field_control 字段設(shè)置為‘00’值
    的傳輸流包。
  • 在空包的情況中,adaptation_field_control 的賦值應(yīng)為‘01’。

**continuity_counter - 4bit - 0000 **

  • 隨著具有相同PID 的每個(gè)傳輸流包而增加
  • 當(dāng)包的adaptation_field_control 為‘00’或‘10’時(shí),
    continuity_counter 不增加。

data_byte

//adaptation_field + body
07 50 00 00 80 F7 7E 00 00 00 01 E0 00 00 80 80 05 21 00 07 F0 0D 00 
00 00 01 09 10 00 00 00 01 67 4D 40 33 95 A0 0F 00 10 FB 01 40 80 00 
01 F4 80 00 75 30 70 00 00 0F 42 40 00 00 F4 24 0D DE 5C 1F 1C 32 A0 
00 00 00 01 68 EE 3C 80 00 00 00 01 06 00 07 81 19 40 00 46 50 40 80 
00 00 00 01 06 01 04 00 00 08 10 80 00 00 00 01 65 B8 04 04 1F 02 EB 
03 FE 13 F0 D4 6D 2C 00 D1 DF 2D C0 00 00 03 00 00 03 00 00 03 00 00 
03 00 00 2F 3D 76 1F D0 53 29 EE 83 00 00 03 00 00 03 00 00 03 00 00 
03 00 04 30 04 00 00 03 00 00 03 00 00 05 EC 00 00 03 00 00 03 00 00

自適應(yīng)字段

因?yàn)樯厦姘^中adaptation_field_control - 2bit - 11,所以包頭之后應(yīng)該有自適應(yīng)字段,并且

這里寫圖片描述

這里寫圖片描述

**adaptation_field_length - 8bit - **

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 摘要 該配置文件定義了支持高質(zhì)量音頻分發(fā)所需的Bluetooth?設(shè)備的要求。這些要求以終端用戶服務(wù)的方式表達(dá),并...
    公子小水閱讀 10,448評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 做這個(gè)東西很久了,從去年十二月份開始的,快5個(gè)月了。。。期間因?yàn)楣ぷ饕恢睌鄶嗬m(xù)續(xù),直到最近才有了些進(jìn)展,也就到此為...
    0_0啊閱讀 12,829評論 1 13
  • 數(shù)字電視有哪幾種層次的碼流?如何形成?各自特點(diǎn)? ES (Elementary Stream) — 數(shù)字電視各組成...
    Annnnnn閱讀 3,310評論 0 2
  • 剪秋燈,床下點(diǎn)檢寒蟄。玉簞上,幾多凄苦,哪堪和夢送長風(fēng)。月勾更撩人,洗去千里流聲。依墻色,已是三更,拈一悟葉知蘭成...
    皮卡超閱讀 421評論 0 0

友情鏈接更多精彩內(nèi)容