1. 程式人生 > >ts檔案格式解析

ts檔案格式解析

TS格式解析

by ahuner

1.TS格式介紹

   TS:全稱為MPEG2-TS。TS即"Transport Stream"的縮寫。它是分包傳送的,每一個包長為188位元組(還有192和204個位元組的包)。包的結構為,包頭為4個位元組(第一個位元組為0x47),負載為184個位元組。在TS流裡可以填入很多型別的資料,如視訊、音訊、自定義資訊等。MPEG2-TS主要應用於實時傳送的節目,比如實時廣播的電視節目。MPEG2-TS格式的特點就是要求從視訊流的任一片段開始都是可以獨立解碼的。簡單地說,將DVD上的VOB檔案的前面一截cut掉(或者是資料損壞資料)就會導致整個檔案無法解碼,而電視節目是任何時候開啟電視機都能解碼(收看)的。

   TS解析需要參考:ISO/IEC 13818-1的2.4 Transport Stream bitstream requirements

2.TS流包含的內容

    一段TS流,必須包含PAT包、PMT包、多個音訊包、多個視訊包、多個PCR包、以及其他資訊包。

    解析TS流資料的流程:查詢PID為0x0的包,解析PAT,PAT包中的program_map_PID表示PMT的PID;查詢PMT,PMT包中的elementary_PID表示音視訊包的PID,PMT包中的PCR_PID表示PCR的PID,有的時候PCR的PID跟音訊或者視訊的PID相同,說明PCR會融進音視訊的包,注意解析,有的時候PCR是自己單獨的包;CAT、NIT、SDT、EIT的PID分別為: 0x01、0x10、0x11、0x12。

3.TS包頭解析

    TS包頭有4個位元組

//Transport Stream header typedef struct TS_header { unsigned sync_byte                    :8;      //同步位元組,固定為0x47 ,表示後面的是一個TS分組,當然,後面包中的資料是不會出現0x47的 unsigned transport_error_indicator       :1;      //傳輸錯誤標誌位,一般傳輸錯誤的話就不會處理這個包了 unsigned payload_unit_start_indicator    :1;     
//有效負載的開始標誌,根據後面有效負載的內容不同功能也不同 // payload_unit_start_indicator為1時,在前4個位元組之後會有一個調整位元組,它的數值決定了負載內容的具體開始位置。 unsigned transport_priority              :1;      //傳輸優先順序位,1表示高優先順序 unsigned PID                          :13;     //有效負載資料的型別 unsigned transport_scrambling_control     :2;      //加密標誌位,00表示未加密 unsigned adaption_field_control          :2;      //調整欄位控制,。01僅含有效負載,10僅含調整欄位,11含有調整欄位和有效負載。為00的話解碼器不進行處理。 unsigned continuity_counter              :4;      //一個4bit的計數器,範圍0-15 } TS_header; //特殊引數說明: //sync_byte:0x47 //payload_unit_start_indicator:0x01表示含有PSI或者PES頭 //PID:0x0表示後面負載內容為PAT,不同的PID表示不同的負載 //adaption_field_control: // 0x0: // reserved for future use by ISO/IEC // 0x1: // 無調整欄位,僅含有效負載   // 0x2: // 僅含調整欄位,無有效負載 // 0x3: // 調整欄位後含有效負載 // Parse TS header int Parse_TS_header(unsignedchar *pTSBuf, TS_header *pheader) { pheader->sync_byte                                     = pTSBuf[0]; if (pheader->sync_byte != 0x47) return -1; pheader->transport_error_indicator       = pTSBuf[1] >> 7; pheader->payload_unit_start_indicator    = pTSBuf[1] >> 6 & 0x01; pheader->transport_priority             = pTSBuf[1] >> 5 & 0x01; pheader->PID                         = (pTSBuf[1] & 0x1F) << 8 | pTSBuf[2]; pheader->transport_scrambling_control   = pTSBuf[3] >> 6;

相關推薦

ts檔案格式解析

TS格式解析 by ahuner 1.TS格式介紹    TS:全稱為MPEG2-TS。TS即"Transport Stream"的縮寫。它是分包傳送的,每一個包長為188位元組(還有192和204個位元組的包)。包的結構為,包頭為4個位元組(第一個

TS 檔案格式解析

https://blog.csdn.net/cabbage2008/article/details/49281729TS 流都是固定等長的188位元組包如下圖所示 用UltraEdit開啟的一個TS流,我們發現每隔188個位元組就有一個47(可以看做是包頭)TS的包頭佔用四個

pcd,obj,mtl檔案格式解析

pcd,obj,mtl檔案格式解析 pcd檔案解析 PCD檔案格式並非白費力氣地做重複工作,現有的檔案結構因本身組成的原因不支援由PCL庫引進n維點型別機制處理過程中的某些擴充套件,而PCD檔案格式能夠很好地補足這一點。PCD不是第一個支援3D點雲資料的檔案型別,尤其是計算機圖形

Windows快捷方式檔案格式解析

轉載自:https://blog.csdn.net/cosmoslife/article/details/51898534 大家知道通過IShellLink介面可以得到快捷方式的各種屬性。具體怎麼做,網上有很多文章,這裡就不介紹了。現在主要是分析一下快捷方式檔案的格式,並且自己寫一個解析程式。

Android安全/安全技術--21--基礎檔案格式解析

4-1、so檔案格式解析 1、ELF檔案格式 Android中的so檔案就是ELF檔案,瞭解so檔案首先需要了解ELF檔案的格式,使用工具為readelf,常用命令如下: 1、檢視so檔案的頭部資訊 readelf -h xxx.so //

mysql .par檔案格式解析

mysql 5.6版本分割槽表有一個檔案:表名.par, 該檔案在5.7.6版本後被移除。 在一個現場環境中,客戶端執行check table後報錯如下,原始碼跟蹤下來之後是缺失par檔案。   mysql解析par檔案的呼叫堆疊如下: (gdb) bt #0 &

封裝格式---FLV---檔案格式解析

轉自:https://wuyuans.com/2012/08/flv-format  flv檔案主要由兩部分組成:header和body。   1.header header部分記錄了flv的型別、版本等資訊,是flv的開頭,一般都差不多,佔9bytes。具體格式如下:

/proc/$pid/maps檔案格式解析

/proc/pid/maps檔案格式解析 以下內容摘錄在man手冊,可以通過執行命令(man 5 proc)獲得。 /proc/[pid]/maps A file containing the currently mapped memory regions a

Java Class檔案格式解析及例項

JAVA無關性概述 Java語言從剛誕生開始曾提出一個非常著名的宣言:“一次編寫,到處執行(Write Once, Run Anywhere)”。Sun公司和其他虛擬機器公司釋出了許多可以執行在不同作業系統上的虛擬機器,這些虛擬機器都可以載入和執行同一種平臺無關的位元組碼,

Android Dex檔案格式解析(第二篇)

1 .DEX檔案中使用的資料型別 u1,u2,u4,u8表示佔某固定位元組的無符號數 sleb128表示有符號的LEB128型別資料,uleb128表示無符號的LEB128,uleb128p1表示無符號的LEB128+1 , 關於LEB128:

Mp3原理及檔案格式解析

1.引言 文 件壓縮技術的日新月異使得MP3成為時下最燙手的音樂格式,優質的音樂隨著0與1的排列迅速散佈到世界各地,撼動人心。何謂MP3?MP3的全稱是 MPEG Audio Layer 3,它是一種高效的計算機音訊編碼方案,它以較大的壓縮比將音訊檔案轉換成較小的副檔名為.MP3的檔案,基本保持原檔案的音質

Hex檔案格式解析

  第一行,是Extended Linear Address Record,裡面的資料,也就是基地址是0x0004,第二行是Data Record,裡面的地址值是0x0000。那麼資料18F09FE518F09FE518F09FE518F09FE5要寫入FLASH中的地址為 (0x0004 <<

gml檔案格式解析程式詳解之原始檔

// Functions to read a network stored in a GML file into a NETWORK struct // // Mark Newman 11 AUG 06 // // To use this software, #inclu

C++PE檔案格式解析類(輕鬆製作自己的PE檔案解析器)

PE是Portable Executable File Format(可移植的執行體)簡寫,它是目前Windows平臺上的主流可執行檔案格式。 PE檔案中包含的內容很多,具體我就不在這解釋了,有興趣的可以參看之後列出的參考資料及其他相關內容。 最近我也在學習PE檔案格式,參

MP4檔案格式解析,及MP4檔案的分割演算法

MP4檔案格式的解析,以及MP4檔案的分割演算法   mp4應該算是一種比較複雜的媒體格式了,起源於QuickTime。以前研究的時候就花了一番的功夫,尤其是如何把它完美的融入到視訊點播應用中,更是費盡了心思,主要問題是處理mp4檔案龐大的“媒體頭”。當然,流媒體點播也可以

Class檔案格式解析

一、Java Class檔案是什麼 《The JavaTM Virtual Machine Specification》(Second Edtion)中有表述:Java Class檔案由8位位元組流組成,所有的16位、32位和64位資料分別通過讀入2個、4個和8個位元組來構

Android Dex檔案格式解析

Dex檔案是Android虛擬機器下的可執行檔案,包含了應用程式所用到所有操作指令和執行時資料。在程式編譯過程中,java原始檔先被編譯成class檔案,然後通過dx工具將多個class檔案整合為一個dex檔案。這樣的檔案結構使得各個類能夠共享資料,充分減少了儲存空間,提

TSM檔案格式及例項解析(四)——string的排列

目錄 引: 資料 簡析 Indexes: blocks: 關聯string 小結: TSM檔案格式現已基本明瞭,某些壓縮演算法有空再去研究一下。 引: 現在想知道未壓縮的檔案格式是怎樣。 但是翻遍官方配置文件 https://docs.influx

TS檔案解析

2.ts格式      ts檔案分為三層:ts層(Transport Stream)、pes層(Packet Elemental Stream)、es層(Elementary Stream)。es層就是音視訊資料,pes層是在音視訊資料上加了時間戳等對資料幀的說明資訊,ts層是在pes層上加入了資料流識別和傳

ini、xml格式配置檔案解析與拼裝

1.背景 在開發的過程中,我們通常會使用ini、xml、json等配置檔案對某些服務應用的引數進行配置,這些包含各層級結構的配置檔案,大致可以看作樹狀結構,其解析和拼裝並不是一項簡單的事情。 在本專案中,開發人員或者業務人員提供了這些配置檔案之後,需要解析出相應的配置項以