TS流解析之TS包頭解析(轉)
根據前一篇中各資料的定義及資料結構,對資料進行分別解析如下:
TS包頭定義:
typedef struct TS_packet_header
{
unsigned sync_byte : 8; //同步位元組, 固定為0x47,表示後面的是一個TS分組
unsigned transport_error_indicator : 1; //傳輸誤碼指示符
unsigned payload_unit_start_indicator : 1; //有效荷載單元起始指示符
unsigned transport_priority : 1; //傳輸優先, 1表示高優先順序,傳輸機制可能用到,解碼用不著
unsigned PID : 13; //PID
unsigned transport_scrambling_control : 2; //傳輸加擾控制
unsigned adaption_field_control : 2; //自適應控制 01僅含有效負載,10僅含調整欄位,11含有調整欄位和有效負載。為00解碼器不進行處理
unsigned continuity_counter : 4; //連續計數器 一個4bit的計數器,範圍0-15
} TS_packet_header;
TS包頭解析程式碼:
HRESULT CTS_Stream_Parse::adjust_TS_packet_header( TS_packet_header* TS_header )
{
unsigned char buf[4];
memcpy(buf, TS_header, 4);
TS_header->transport_error_indicator = buf[1] >> 7;
TS_header->payload_unit_start_indicator = buf[1] >> 6 & 0x01;
TS_header->transport_priority = buf[1] >> 5 & 0x01;
TS_header->PID = (buf[1] & 0x1F) << 8 | buf[2];
TS_header->transport_scrambling_control = buf[3] >> 6;
TS_header->adaption_field_control = buf[3] >> 4 & 0x03;
TS_header->continuity_counter = buf[3] & 0x0F; // 四位資料,應為0x0F xyy 09.03.18
return 0;
}
如下為一個TS包資料:
0x47 0x40 0x00 0x12 0x00 0x00 0xb0 0x0d 0x00 0x00 0xc1 0x00 0x00 0x00 0x01 0xe3 0xe8 0xf0 0x0b 0xd7 0x79 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
分析知道前四位0x47 0x40 0x00 0x12TS頭部即為TS包頭資料,解析如下:
sync_byte :0x47
transport_error_indicator: 0x00
payload_unit_start_indicator: 0x01
transport_priority : 0x00
PID :0x0000
transport_scrambling_control :0x00
adaptation_field_control :0x01
continuity_counter :0x02
PID = 0x0000,表示此TS包的內容為PSI資訊表格的PAT表格資料,在4位元組的TS包頭之後的第一個位元組的Point_field = 0x00, 表示偏移量為0,即緊隨其後的即為PAT的資料資訊
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/a31898534/archive/2009/08/02/4399362.aspx
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1041562/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TS流解析之PMT表格解析(轉)
- TS流解析之PAT表格解析(轉)
- ffmpeg——TS流解析
- 關於TS流的解析
- TS系列之型別型別
- SM$TS_USED,SM$TS_FREE,SM$TS_AVAILAI
- TS 介面
- TS — 介面
- [轉]使用ts-node執行ts指令碼以及踩過的坑指令碼
- TS基礎應用 & Hook中的TSHook
- TS定義陣列 ts宣告函式陣列函式
- TS系列之介面/類/泛型泛型
- MPEG2-TS流檔案的簡介
- ts---介面
- ts---類
- ts---模組
- .ts檔案和d.ts檔案對比
- 電影版本名詞解析(CAM,TS,TC,DVDSCR,DVDRIP,HR-HDTV)更新版
- 常用TS總結
- TS MQTT封裝MQQT封裝
- enq: TS - contentionENQ
- TS快速回顧
- FFMpeg對MPEG2 TS流解碼的流程分析
- OGG for kafka op_ts 和current_ts相差較大Kafka
- FFMpeg對MPEG2 TS流解碼的流程分析[2]
- ts + hooks 的基本使用Hook
- 【TS】學習總結
- TS 版 Promise 詳解Promise
- vue-ts-demo1Vue
- js呼叫ts,親測。JS
- TS泛型進階泛型
- ts 與 js 的呼叫JS
- ts 中的型別型別
- TS — 列舉(詳解)
- TS基本概念和資料結構(轉資料結構
- ts 終於搞懂TS中的泛型啦! | typescript 入門指南 04泛型TypeScript
- 關於SYS.SM$TS_AVAIL,SYS.SM$TS_USED,SYS.SM$TS_FREE幾個檢視問題AI
- 批次轉換大量影片為TS格式的技巧分享