码迷,mamicode.com
首页 > 其他好文 > 详细

音视频处理之TS封装与封装识别20181030

时间:2018-10-30 21:08:10      阅读:799      评论:0      收藏:0      [点我收藏+]

标签:类型   vcl   重复   搜索   数据   音视频   码流   mat   layer   

****************************************************************************************************
一、TS封装
1.简介
MPEG2传送流(Transport Stream)简称TS流,是根据ITU-T Rec.H.222.0 | ISO/IEC 13818-1协议而定义的一种数据流
,其目的是为了在有可能发生严重错误的环境下进行一个或者多个节目的编码数据的传送和存储。TS流被广泛应用于
视音频资料的保存、电视节目的非线性编辑系统及其网络等方面。

TS packet with PAT | TS packet with PMT | TS packet with PES of I Frame | TS packet with PES of I Frame |
... | TS packet with PES of Audio Frame | TS packet with PES of Audio Frame | ... | TS packet with Private Data |
... | TS packet with PES of P/B Frame | TS packet with PES of P/B Frame | ...

2.术语介绍
TS : Transport Stream , mpeg2 第一部分定义的传输流。
VCL: Video Coding Layer,视频编码层,H.264定义的一个元素结果层次,只包括编码数据。
PTS : Presentation Time Stamp , 显示时间戳。
PSI ;Program Specific Information,节目特殊信息。
PAT : Program Association Table,节目关联表。
PMT : Program Map Table , 节目映射表。

3.TS封装介绍
TS流由一系列长度固定为188个字节的TS包组成。
TS包以4个字节的前缀(TS header)开始,起始码0x47,包括13bit的PID,通过PID和节目特殊信息表(PSI)可以
识别TS包中负载的内容。同一个PID值得TS包,其负载只带有来自同一个原始流的数据。
PSI是MPEG-2系统中非常重要的信息,它用来描述TS流的组成结果,有以下4中PSI:
1).节目关联表: Program Association Table ,PAT,关联节目号与节目映射表的PID
2).节目映射表:Program Map Table,PMT提供节目号与组成它们的原始流之间的映射。
3).网络信息表: Network Information Table,NIT
4).条件访问表: Conditional Access Table,CAT

4.TS封装结构
1).复合过程
视频ES(原始流)、音频ES和其他数据首先打包成PES包,即三个PES包然后通过TS复合器复合成TS流

2).TS流结构
TS流结构,从里往外数,
第一层为ES层,这一层的数据为视频的码流,音频的码流或其他码流,即裸流。
第二层为PES层,每个PES包分为包头和负载两部分,负载为来自ES层的数据,来自ES层的一段数据可以被打包成多个
PES包。
第三层为TS层,TS包分为包头和负载两部分,负载为来自PES包的数据。

5.TS包头
1).TS流的包头结构
包头:
8bit同步字节 | 1bit传送错误 | 1bit有效负载指示位 | 1bit传送优先级 | 13bit PID | 2bit传送加密控制 | 2bit适应字段控制 | 4bit连续计数器 | 调整字段
调整字段:
8bit调整字段长度 | 1bit非连续指示位 | 1bit随机访问指示位 | 1bit原始流优先级指示位 | 5bit标志位 | 可选字段 | 填充字节
可选字段:
42bit PCR | 42bit OPCR | 8bit拼接递减计数 | 8bit私有数据长度 | 私有数据 | 8bit使用字段长度 | 3bit标志位 | 可选字段
可选字段:
1bit ltw有效标记 | 15bit ltw有效偏移 | 2bit | 22bit分段速率 | 4bit拼接类型 | 33bit DTS_next_ou

2).包头详解
同步字节(sync_byte): 8bit,包起始标记,值固定为 0100 0111(0x47)
PID : 13bit,指示存储在当前TS包有效负载中数据的类型,
0x0000 节目关联表
0x0001 条件访问表
0x0002 传送流描述表
0x0003-0x000F 保留
0x0010-0x1FFE network_PID,Program_map_PID,elementary_PID,或其他
0x1FFF 空包


****************************************************************************************************
二、封装简单识别
1.工具识别
Elecard,VLC,MediaInfo

2.二进制 数据分析
1).PS封装
通过搜索PSM头(00 00 01 bc) , PSH头(00 00 01 ba)以确认封装类型。

2)RTP封装
通过搜索私有标志 88 77 66 55 来确定封装类型

3)HIK封装
通过搜索私有标志 01 00 00 00 ,并结合图像组模式,来确定封装类型

4)TS封装
通过搜索0x47同步头,每间隔188字节,重复验证多个同步头,来确定封装类型

音视频处理之TS封装与封装识别20181030

标签:类型   vcl   重复   搜索   数据   音视频   码流   mat   layer   

原文地址:https://www.cnblogs.com/yuweifeng/p/9879137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!