TS流详细解析

article/2025/10/9 13:15:32
1、PAT表的TS包

 

0x47:包头识别符 Sync_code
0x40 0x00:0100 0000 0000 0000
0b:transport_error_Indicator 为1的包丢弃
1b:payload_unit_start_indicator是否忽略头部后的第一个字节
0b:transport_priority 传输优先级
0 0000 0000 0000b:PID 最重要的:PAT的TS包 0x0000
0x10 --> 0001 0000b:
00b:transport_scrambling_control
01b:adaption_field_control
0000b:continuity_counter 序号为0
PAT表解析:8字节的头 + 4Byte * n个节目流(包含 program_number(16bit) reserved (3bit), program_map_PID(13bit)
PAT的数据:00 B0 0D 00 01 C1 00 00 00 01 F0 00 2A B1 04 B2
PAT头:00 B0 0D 00 01 C1 00 00
00:PAT的table_id只能是0x00
B0 0D: 1011 0000 0000 1101
1b:section_syntax_indicator 1bit 值为1 段语法标志位,固定为1
0b:zero 1bit 值为0
11b:reserved 2bits 值为11 (Binary)
0000 0000 1101b:section_length 12bits 值为即0x0D,十进制值为13,段长度为13字节,刚好是:00 01 C1 00 00 00 01 F0 00 2A B1 04 B2,13个字节
00 01:transport_stream_id 16bits TS的识别号
C1: 1100 0001
11b:reserved 2bits 值为3 TS的识别号
00 000b:version_number 5bits 值为0 一旦PAT有变化,版本号加1
1b:current_next_indicator 1bit 值为1 当前传送的PAT表可以使用,若为0则要等待下一个表
00:section_number 0x00 给出section号,在sub_table中,第一个section其section_number为"0x00",每增加一个section,section_number加一
00:last_section_number 0x00 sub_table中最后一个section的section_number
节目的PMT的PID:00 01 F0 00
00 01:0000 0000 0000 0001 代表节目号为0x0001(即十进制1)的节目
F0 00: 1111 0000 0000 0000
111b:reserved
1 0000 0000 0000b:PMT的PID为0x1000
2、PMT表的TS包

 

TS头:47 50 00 10
0x47:包头识别符 Sync_code
0x50 0x00 0x10:0101 0000 0000 0000
0b:transport_error_Indicator 为1的包丢弃
1b:payload_unit_start_indicator是否忽略头部后的第一个字节
0b:transport_priority 传输优先级
1 0000 0000 0000b:PID为0x1000
PAT表解析:12字节的头 + 6 字节* n个音视频流(包含 stream_type(8bit) reserved (3bit), elementary_PID(13bit),reserved (4bit), ES_info_length(12bit)
PMT的数据:02 B0 1D 00 01 C1 00 00 E1 00 F0 00 02 E1 00 F0 00 03 E1 01 F0 06 0A 04 75 6E 64 00 94 9D 2D F0
PAT头:02 B0 1D 00 01 C1 00 00 E1 00 F0 00
02:PAT的table_id只能是0x02
B0 1D: 1011 0000 0001 1101
1b:section_syntax_indicator 1bit 值为1 段语法标志位,固定为1
0b:zero 1bit 值为0
11b:reserved 2bits 值为11 (Binary)
0000 0001 1101b:section_length 12bits 值为即0x1D,十进制值为29,段长度为29字节,刚好是:00 01 C1 00 00 E1 00 F0 00 02 E1 00 F0 00 03 E1 01 F0 06 0A 04 75 6E 64 00 94 9D 2D F0,29个字节
00 01:program_number 16bits TS的识别号
C1: 1100 0001
11b:reserved 2bits 值为3 TS的识别号
00 000b:version_number 5bits 值为0 一旦PAT有变化,版本号加1
1b:current_next_indicator 1bit 值为1 当前传送的PAT表可以使用,若为0则要等待下一个表
00:section_number 0x00 给出section号,在sub_table中,第一个section其section_number为"0x00",每增加一个section,section_number加一
00:last_section_number 0x00 sub_table中最后一个section的section_number
E1 00:1110 0001 0000 0000
111b:reserved
0 0001 0000 0000b:PCR_PID(节目参考时钟)所在TS分组的PID
F0 00:1111 0000 0000 0000
1111b:reserved
0000 0000 0000b:program_info_length值为0
视频的PID:02 E1 00 F0 00
02:stream_type 流类型,标志是Video还是Audio还是其他数据。这里是  0x02即是MPEG2视频类型
E1 00: 1110 0001 0000 0000
111b:reserved
0 0001 0000 0000b:elementary_PID  该节目的音频或视频PID,即是0x100
F0 00:1111 0000 0000 0000
1111b:reserved
0000 0000 0000b:ES_info_length 后面紧跟着0个字节的描述子
音频的PID:03 E1 01 F0 06
03:stream_type 流类型,标志是Video还是Audio还是其他数据。这里是  0x03即是ISO/IEC 11172音频
E1 01: 1110 0001 0000 0001
111b:reserved
0 0001 0000 0000b:elementary_PID  该节目的音频或视频PID,即是0x101
F0 06:1111 0000 0000 0110
1111b:reserved
0000 0000 0110b:ES_info_length 后面紧跟着6个字节的描述,也就是0A 04 75 6E 64 00
3、视频PES的TS包

 

 

TS包长度:12*16-4 = 204 - 16(CRS校验) = 188 Byte 
0x47:包头识别符 Sync_code
0x41 0x00:0100 0001 0000 0000
0b:transport_error_Indicator 为1的包丢弃
1b:payload_unit_start_indicator 负载数据的起始标识
0b:transport_priority 传输优先级
0 0001 0000 0000b:PID 最重要的,包类型,视频频PES包 0x100
0x15 --> 0001 0101b:
00b:transport_scrambling_control
01b:adaption_field_control
0101b:continuity_counter 序号为5,上一个为4,下一个为6
4、音频PES的TS包
TS包长度:12*16-4 = 204 - 16(CRS校验) = 188 Byte 
0x47:包头识别符 Sync_code
0x41 0x01:0100 0001 0000 0001
0b:transport_error_Indicator 为1的包丢弃
1b:payload_unit_start_indicator 负载数据的起始标识
0b:transport_priority 传输优先级
0 0001 0000 0001b:PID 最重要的,包类型,音频PES包 0x101
0x30 --> 0011 0000b:
00b:transport_scrambling_control
11b:adaption_field_control 
0000b:continuity_counter 序号为0,上一个为15,下一个为1


http://chatgpt.dhexx.cn/article/vMb9F1pP.shtml

相关文章

ts 流基础(白话讲解).

---------------------------------------- author: hjjdebug date: 2022年 09月 27日 星期二 ---------------------------------------- ts 流就是188个字节构成的流数据. 先来点最简单的. ts 头部,4字节 ts 流是47开头的,以188字节为单位的打包流&#xff0…

什么是TS流?

前言 什么是TS流? 百度说:transport stream(传送流)简称TS流,是根据ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协议定义的一种数据流,防止有可能发生严重错误时进行一道或多道程序编码数据的传…

hls之m3u8、ts流格式详解

2019独角兽企业重金招聘Python工程师标准>>> HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。 1、M3U8文件…

TS流概述(ES流-基本流,PES流-打包基本码流,PS流-节目流,TS流-传输流)

一、TS流概述 ES流(Elementary Stream,基本流):数字电视各组成部分编码后所形成的直接表示基本元素内容的流,包含视频、音频或数据的连续码流。 PES流(Paketized Elementary Stream,打包基本码流):是将基本的码流ES流…

网络流媒体(四)———TS流

1. 数字视频压缩MPEG-2标准 MPEG-2是MPEG(Moving Picture Experts Group,运动图像专家组)组织制定的视频和音频有损压缩标准之一,它的正式名称为“基于数字存储媒体运动图像和语音的压缩标准”。与MPEG-1标准相比,MPEG…

Segmentation笔记4-Boundary-Aware Network for Fast and High-Accuracy Portrait Segmentation

创新点 1.提出了BANet 2.提出了refine loss 总结 图片引起不适。。。 网络流程如下: 图片经过语义分支得到1/4大小的特征图。将其上采样到原图大小,c 1作为边界特征挖掘分支的边界注意力图。注意力图由BA loss监督。将原图与注意力图拼接&#xff…

diffusion medical image segmentation

1、Diffusion Models for Implicit Image Segmentation Ensembles code:https://github.com/JuliaWolleb/Diffusion-based-Segmentation 2、MedSegDiff: Medical Image Segmentation with Diffusion Probabilistic Model code: https://github.com/WuJunde/MedS…

weakly supervised semantic segmentation

Weakly Supervised Semantic Segmentation by Pixel-to-Prototype Contrast CVPR2022 北京大学 Though image-level weakly supervised semantic segmentation (WSSS) has achieved great progress with Class Activation Maps (CAMs) as the cornerstone, the large supervis…

16. Segmentation

Segmentation 1. Segmentation: Generalized Base/Bounds 我们可以看一下(Figure 16.1),尽管每个CPU都有一对硬件寄存器(base register和bounds register),但是还是不可避免的会产生内存浪费(阴…

segmentation_models.pytorch实战:使用segmentation_models.pytorch图像分割框架实现对人物的抠图

文章目录 摘要二分类语义分割的常用做法数据集segmentation_models.pytorch简介与使用一、安装二、创建模型 训练测试总结 摘要 在前面的文章中,我提到过segmentation_models.pytorch语义分割框架,今天这篇文章向大家展示如何使用segmentation_models.p…

mac Segmentation Fault

今天跑SEDR的代码遇到一个很奇怪的错误,我已经定位到了错误的地方在于 这个很奇怪的一个错误,test_z的维度是(3460*28),很明显不是内存的问题,就很奇怪 后面看到这个 https://stackoverflow.com/questions/64841082/segmentation-fault-11-p…

QT SIGSEGV Segmentation fault

QT程序在运行时,出现崩溃。百思不得其姐,所以认真思考(上网百度)了一番,原来遇到此错误的不止我一人,故记录下来,以防下次再犯类似错误。 错误提示: Ssignal Received - Qt Creato…

Image Segmentation

先介绍几个概念,也是图像处理当中的最常见任务. 1. 语义分割(semantic segmentation) 2. 目标检测(object detection) 3. 目标识别(object recognition) 4. 实例分割(instance segmentation) 一、语义分割 首先需要了解一下什么是语义分割(semantic segmentation). 语义…

unable to execute command: Segmentation

编译时出错: clang: error:unable to execute command: Segmentation fault: 11 clang: error:linker command failed due to signal (use -v to see invocation) Architectures的debug改为NO就可以 以上方法不行: enable bitcode改成No。原因是第三方库…

Segmentation Fault错误原因总结

一、 什么是“Segmentation fault in Linux” 所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标&am…

Segmentation Fault原因总结

转载链接:https://www.cnblogs.com/silence-hust/p/4487026.html 最近在项目上遇到了Segmentation Fault的错误,一直调试不出来是哪里出了问题,对于刚接触嵌入式的,也不知道该如何去调试一个项目,定位内存问题&#x…

segmentation fault 段错误解决方法

一、出现Segmentation Fault 1. 文件打开失败却使用了fclose();fclose找不到指针fp。 解决方法: 当打开文件成功,即成功获得文件句柄后,再进行关闭句柄操作。 2. 文件正在写操作,异常断电、程序异常中断,导…

Segmentation-传统分割算法

“图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。”---百度百科 本文将继续介绍常见的图像处理算法之图像分割算法,图像分割是从图像中找出目标所在的区域,把图像分成若干个特定的、…

图像分割(Segmentation)

文章目录 图像分割FCNU-NetSegNetDeepLab图像分割常用数据集 图像分割 图像分割是预测图像中每一个像素所属的类别或者物体。基于深度学习的图像分割算法主要分为两类: 语义分割(Semantic Segmentation) 为图像中的每个像素分配一个类别。 …