首页 > 其他分享 >TS流分析-packet header

TS流分析-packet header

时间:2022-11-08 10:39:41浏览次数:51  
标签:indicator 字节 比特 PID TS packet header 传输流 transport



ts流是由ts包构成的,ts包的长度固定为188或者204,后者是加上校验的长度。对应的官方描述文档为:iso-13818-1.pdf,下载地址:



ts数据包的包头占4个字节,其构成如下:

/**
* Packet Header(包头)信息说明 <br>
* 1 sync_byte 8bits 同步字节 <br>
* 2 transport_error_indicator 1bit 错误指示信息(1:该包至少有1bits传输错误) <br>
* 3 payload_unit_start_indicator 1bit 负载单元开始标志(packet不满188字节时需填充)<br>
* 4 transport_priority 1bit 传输优先级标志(1:优先级高) <br>
* 5 PID 13bits Packet ID号码,唯一的号码对应不同的包 <br>
* 6 transport_scrambling_control 2bits 加密标志(00:未加密;其他表示已加密) <br>
* 7 adaptation_field_control 2bits 附加区域控制 <br>
* 8 continuity_counter 4bits 包递增计数器
* */


需要注意PID,PID的不同标识这不同的包类型。


标准文档摘录:

2.4.3.3  传输流包层中字段的语义定义

sync_byte — sync_byte 为固定的 8 比特字段,其值为 '0100 0111' (0x47) 。在对于其他正式出现字段的
赋值选择中,诸如 PID ,应避免 sync_byte 仿真。

transport_error_indicator — transport_error_indicator  为 1 比特标志。置于 1 时,它指示在相关传输流
包中至少存在 1 个不可校正比特错。此比特可以由传输层以外的实体设置为‘ 1 ’。设置为‘ 1 ’时,此比特
应不重新设置为‘ 0 ’,除非误差比特值已经校正。

payload_unit_start_indicator — payload_unit_start_indicator 为 1 比特标志,对于承载 PES 包(参阅
2.4.3.6 )或 PSI 数据(参阅 2.4.4 )的传输流包,它具有标准含义。

当传输流包有效载荷包含 PES 包数据时, payload_unit_start_indicator 具有以下意义:‘ 1 ’指示此传输
流包的有效载荷应随着 PES 包的首字节开始,‘ 0 ’指示在此传输流包中无任何 PES 包将开始。若
payload_unit_start_indicator  设置为‘ 1 ’,则一个且仅有一个 PES 包在此传输流包中起始。这也适用于
stream_type 6 的专用流(参阅表 2-34 )。
当传输流包有效载荷包含 PSI 数据时, payload_unit_start_indicator  具有以下意义:若传输流包承载 PSI
分段的首字节,则 payload_unit_start_indicator 值必为 1 ,指示此传输流包的有效载荷的首字节承载
pointer_field 。若传输流包不承载 PSI 分段的首字节,则 payload_unit_start_indicator  值必为‘ 0 ’,指示在此
有效载荷中不存在 pointer_field 。参阅 2.4.4.1 和 2.4.4.2 。这也适用于 stream_type 5 的专用流(参阅表 2-34 )。
对空包而言, payload_unit_start_indicator 必须设置为‘ 0 ’。
仅承载专用数据的传输流包的此比特含义在本规范中未定义。

transport_priority — transport_priority  为 1 比特指示符。设置为‘ 1 ’时,它指示该相关包比具有相
同 PID 但不具有该比特设置为 1 的其他包有更大的优先级。传输机制可以使用该字段优先考虑基本流内的
该包数据。取决于应用, transport_priority  字段可以不管 PID 或者此字段仅在一个 PID 范围内编码。此字段
可以由信道特定编码器或解码器来改变。

PID — PID 为 13 比特字段,指示包有效载荷中存储的数据类型。 PID 值 0x0000 为节目相关表所保留
(见表 2-30 )。 PID 值 0x0001 为有条件访问表所保留(见表 2-32 )。 PID  值 0x0002  为传输流描述表所保留(见
表 2-36 ), PID  值 0x0003  为 IPMP  控制信息表(见 ISO/IEC 13818-11 ), PID  值 0x0004-0x000F 为保留的值。
PID 值 0x1FFF 为空包所保留(见表 2-3 )。

transport_scrambling_control — 此 2 比特字段指示传输流包有效载荷的加扰方式。传输流包头以及
自适应字段若存在,应不加扰。在空包的情况中, transport_scrambling_control  字段的值应设置为“ 00 ”


adaptation_field_control — 此 2  比特字段指示此传输流包头是否后随自适应字段和 / 或有效载荷

continuity_counter — continuity_counter  为 4 比特字段,随着具有相同 PID 的每个传输流包而增加。
continuity_counter  在取其最大值之后循环返回到 0 值。当包的 adaptation_field_control 为‘ 00 ’或‘ 10 ’时,
continuity_counter  不增加。
传输流中,复制包可以作为 2 个并且仅只作为 2 个具有相同 PID 的连续传输流包。该复制包必须有
与原始包相同的 continuity_counter  赋值并且 adaptation_field_control  字段必须等于‘ 01 ’或‘ 11 ’。复制
包中,原始包的每个字节都必须复制,有一种情况除外,即节目时钟参考字段中的内容若存在,该有效
值必须编码。
特定传输流包中 continuity_counter 是连续的,只要它与具有相同 PID 的先前的传输流包中的
continuity_counter  赋值的差为正值 1 ,或者任意一个非增量条件( adaptation_field_control  设置为‘ 00 ’或
‘ 10 ’,或如上所述的复制包)被满足时。 discontinuity_indicator  设置为‘ 1 ’时,连续性计数器可以中断(参
阅 2.4.3.4 )。在空包的情况中, continuity_counter  值未确定。

data_byte — data_byte  必须是来自 PES 包(参阅 2.4.3.6 )、 PSI 分段(参阅 2.4.4 )以及 PSI 分段后的
包填充字节数据的相连贯的数据字节,或者不在这些结构中的专用数据,如 PID 所指示的。在具有 PID 值
0x1FFF 的空包情况中, data_bytes 可以指派为任何值。 data_bytes  数 N 通过 184 减去 adaptation_field()  中的
字节数来确定,如以下 2.4.3.4 中所述。


实例解析:

byte_arr:47 40 00 30 a6 00 ff ff

======== RTP packet header分析 =======

0 1 0 0 0 1 1 1 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

同步字节      : 0x47 二进制:01000111
错误指示信息    : 0x0  二进制:0
负载单元开始标志  : 0x1 二进制:1
传输优先级标志   : 0x0 二进制:0
ID号码       : 0x0 二进制:0000000000000
加密标志      : 0x0 二进制:00
附加区域控制    : 0x3 二进制:11
包递增计数器    : 0x0 二进制:0000


======== OVER=======





标签:indicator,字节,比特,PID,TS,packet,header,传输流,transport
From: https://blog.51cto.com/u_13316945/5831960

相关文章

  • TS流分析-PES包头实例分析
    下面的字节是从ts文件中读取的一个ts包。并包含有PES头。负载单元开始标志附加区域控制 知道。负载单元开始标志:第二个字节的第二位知道:负载单元开......
  • TS流分析-PES中扩展头部的判断
    根据流类型判断(流类型是PES包头第四字节),扩展头部有三种。0xBC 0XBE  0xBF 0xF0 0xF1 0xF2 0xF8),这类可能又PTS/DTS信息一种是(0xBC  0xBF 0xF......
  • TS流分析-PMT包
    PMT即节目映射表,ProgramMapTable。节目相关表PAT中可能包含多个PMT,PMT中又包含音视频对应的包PID及音视频类型的定义。   0000   47 40 62 38 8......
  • TS流分析-PAT包
    TS流是由ts数据包构成的。ts的数据包如果PID为0,那么该包就是PAT包。下面的数据是从ts流中找到的PAT类型的ts数据包。长度为188字节。有自适应域。自适应域应该就是为......
  • sklearn的数据集库datasets
    sklearn的数据集库datasetssklearn的数据集库datasets提供很多不同的数据集,主要包含以下几大类:1.玩具数据集2.真实世界中的数据集3.样本生成器4.样本图片5.svmlight......
  • Echarts Y轴网格线宽度调整
    yAxis:{show:false,type:"value",axisTick:{show:false,},show:true,axisLabel:{show:true,......
  • echarts横坐标显示不全
    echarts横坐标显示不全,效果不够好,让标签倾斜在xAxis下加入这段代码rotate就是倾斜量axisLabel:{rotate:50},......
  • CF487E Tourists
    题意给定一张无向图,点有点权。每次可以修改一个点的点权,或者询问从\(a\)到\(b\)所有不经过重复点的路径上最小的点权是多少。Solution考虑一个点双,点双中任意两个点......
  • Gatsby custom head & Google Analytics All In One
    Gatsbycustomhead&GoogleAnalyticsAllInOneGoogleAnalytics(分析)https://analytics.google.com/analytics/web/#/a248706071p341215062/admin/streams/table/42......
  • Installing wxWidgets-3.2.1 on CentOS 8.3
    一、InstallingwxWidgets-3.2.1onCentOS8.3地址https://www.wxwidgets.org 安装依赖dnfinstall-ybzip2gtk2-develbinutils-develwget下载cd/opt/soft......