文档章节

解析TS

xxdd
 xxdd
发布于 2017/08/03 10:57
字数 1705
阅读 31
收藏 0

1.  TS->PES->ES(H264)。

2.  下面是一段携带PAT的TS的数据  

47 40 00 30    A6 00    

FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 (从第一个FF到这里是A6个)

00 B0 0D E5 18 EF 00 00 00 01 E0 42 9D C9 35 9E 

2.1 TS数据固定长度188个字节,不足188个字节,添加 调整字段 0XFF 补充。

2.2 TS头部为前4个字节,上面的为(47 40 00 30

      

      01000111  0          1         0        0000000000000    00  11      0000  

       2.2.1  同步字节(sync byte): 1B,其值固定为0x47,该字段是MPEG-2 TS传送包标识符;

  2.2.2  传输误差指示符(transport error indicator): 1bit,其值为1时,表示在相关的传送包中至少  有一个不可纠正的错误位,只有在错误纠正之后,该位才能被重新置0;

  2.2.3  有效载荷单元起始符(payload unit start indicator): 1bit, 当TS包带有PES包数据时,置为1,表示TS包的有效净荷以PES包的第一个字节开始;置为0,表示该TS包的开始不是PES包;当TS带有PSI数据时,置为1,表示TS包带有PSI部分的第一个字节,即第一个字节带有指针       pointer_field;置为0,表示TS包不带有一个PSI部分的第一个字节,即有效净荷中没有指针 pointer_field。空包时,该位置为0;

  2.2.4  传输优先级(transport_prority): 1bit, 置为1,表示相关的包比其他具有相同PID,但是此字段 置0的包有更高的优先级;

  2.2.5  PID: 13bit, 表示传送包的有效净荷中的数据的类型

                 0x0000   节目关联表(program association table, PAT)

                               上面的数据为PAT数据,通过PAT 可以找到PMT

                 0x0001   条件访问表(conditional access table, CAT)

                 0x0002    传送流描述表(transport stream description table, TSDT)

                 0x0003~0x000F  保留

                 0x0010~0x1FFE      可以分配为network PID, Program map PID,  elementary PID, 或其它

                  0x1FFF     空包(8191)

       2.2.6   传输加扰控制(transport scrambling control): 2bit,该字段用来指示传送流包有效净荷的加扰方式;

  2.2.7   自适应字段控制(adaption field control): 2bit,表示传送流包首部是否跟随有调整字段和/或有效净荷。

                   00      保留

                   01      没有调整字段,仅含有184B长度的有效净荷

                   10      没有有效净荷,仅含有183B长度的调整字段0XFF

                   11     0~182B的调整字段0XFF 后为有效净荷

                            如上面的为11,所以先填充0XFF,后面是有效数据

     2.2.8   连续计数器(continuity counter): 4bit,随着具有相同PID TS包的增加而增加,达到最大则恢复为0。

2.3 TS头部信息以后为自适应字段,前两个字节包含重要信息,其意义如下图

2.3.1   自适应字段长度  1B,表示后续TS数据的长度,不包含PES。

          如上面的为(A6),所以一直到FF 00 都为调成的调整字段

          00 B0 0D E5 18 EF 00 00 00 01 E0 42 9D C9 35 9E 为有效数据,因为我们已经从PID得知该TS数据为PAT数据,所以该有效数据按照PAT解析。

           解析得到 program_number=1,program_map_PID=0x42

3.  下面是一段携带PMT的TS的数据  

47 40 42 30                                                                                      A1    00

01000111   0    1     0    0000001000010    00    11     0000                161

PID  0000001000010   0X42 从PAT中得知该PID为PMT数据

adaption field control   11   先填充0XFF,后面是有效数据

FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 (共161个)

02 B0 12 00 01 D7 00 00 E0 44 F0 00 1B E0 44 F0 00 F1 67 5E F2  (这些为PMT数据)

解析PMT数据,得到stream_type=27(264数据),elementary_PID=0X44

4.  下面是一段携带PES的数据

47 40 44 30                                                                                    07    

01000111   0   1   0    0000001000100    00    11   0000 

PID  0000001000100   0X44 从PMT中得知该PID为视频数据              7个TS填充数据,剩下的为PES

10 18 3D 40 51 7E 00

00 00 01       PES包起始前缀,占3B;

E0                 224    stream_id,流ID,占1B;

FF E9            PES_packet_length  PES包长度,也就是一帧数据的总长度;

80      

C0

0A               10: PES_header_data_length              

31 C1 ED 1A 69    PTS

11 C1 ED 1A 69    DTS

00 00 00 01 09 E0 00 00 00 01 67 42 40 20 F4 03 C0 11 3F 2C 20 00 00 03 00 20 00 00 06 50 80 00 00 00 01 68 CE 06 F2 00 00 00 01 65 88 84 0F C4 18 44 20 C1 B3 0F 00 24 ED A6 37 00 01 03 D1 E4 42 C8 A5 93 A0 A3 47 7F 2E CB 41 69 6F 76 4D AB AB 8A 48 70 0F 9F 88 2D 68 5A 91 51 69 48 7B 7F 95 05 FA 71 81 A8 02 00 01 00 55 0A FD 89 61 92 2C 8B 3F FD E0 2C 04 07 80 A8 A2 E3 B2 26 C2 9F 0E 0C 30 00 10 01 50 05 A6 4D C0 04 0C 00 E4 EB 00 70 4D C2 00 00 A8 05 05 CB 20 46 7B 

  5.  下面是一段只携带264数据的TS数据

47 00 44 11    

01000111   0 0 0 0000001000100    00   01   0001

adaption field control   01  出来TS头4个字节,后面的都是数据

9C 45  22 2C 07 0C 62 94 B1 22 7F B6 41 7F B2 E9 E9 64 39 A9 FF E5 D1 C9 C0 10 CA 14 F6 E2 10 58 1C 17 AA CC 3B 24 0F 79 9E 2C 47 11 B0 34 1B 65 A6 7E B7 25 2B FB 92 BB 6F 06 AB 57 62 96 C7 0D 6C BC CE 59 AB E4 B3 D1 83 DA 8C 87 10 01 C0 08 0F C1 FD 42 E8 12 6B B2 EA 65 4C 78 00 02 00 20 41 7E E2 18 28 4E FA 1E B3 0C 49 25 9B 97 09 D2 89 F8 34 FE 81 FA 69 E8 C6 37 F3 EA F9 7E 22 11 1B 34 01 81 99 66 5A CC 68 87 FE A7 81 8D 8F 19 3F 20 96 57 A2 02 C5 27 F6 F4 4F 83 10 AB CF C2 70 F1 7F 30 78 99 74 58 27 FE 89 A2 91 83 89 95 05 AA DF 7C 04 81 8C 25 

© 著作权归作者所有

共有 人打赏支持
xxdd
粉丝 3
博文 53
码字总数 12940
作品 0
海淀
程序员
linux下如何调用解析TS流驱动实现TS流的解析

在linux系统下,编写了一个解析TS流的驱动,模块已经加载到内核了,但是怎么样调用它,才能实现ts流的解析呢,就是来了一段TS 流,如何调用驱动实现对ts流的解析 求高手解答啊

旺仔小馒头
2012/03/20
669
3
视音频数据处理入门:UDP-RTP协议解析

===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB、YUV像素数据处理 视音频数据处理入门:PCM音频采样数据处理 视音频数据处理...

leixiaohua1020
2016/01/31
0
0
MpegTS流解复用程序实现(解复用得到PES和ES)

MpegTS基础看这几篇博文: MpegTS基础 MpegTS之TS,PES,ES结构分析 TS流复用和解复用是一个相逆的过程。TS解复用得到的是音视频的PES裸流。一般来讲,每个TS包的长度是188个字节,也有一种204...

rootusers
2015/02/05
0
0
libdvbpsi源码分析(三)PSI decocder详细分析

由上一篇libdvbpsi源码分析(二)main函数,简单分析了demo程序中main函数的执行流程。现在将对具体的PSI表作详细解析。主要是对main函数中的libdvbpsiinit和dvbpsinew以及相关的dvbpsipat_att...

地狱的烈火
2013/11/12
0
0
Apache Traffic Server 6.1.1 发布

Apache Traffic Server 6.1.1 发布了,该版本主要是修复了几个 Bug: Bug [TS-4142] - Compile errors on OmniOS [TS-4165] - Logging breaks if changing log format [TS-4168] - Only clos......

oschina
2016/02/09
885
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
0
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
0
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1
shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部