TS码流分析.ppt

合集下载

ts码流结构分析与监测

ts码流结构分析与监测

TR101-290三级错误、PSI/SI、PCR分析描述DVB系统测量标准之一TR 101-290定义的三个优先级,是码流监测的一项主要内容。

通过这三个优先级的监测,可以检验被监测的码流是否符合MPEG-2和DVB标准。

这三个优先级都包含许多不同的参数。

一、TR 101-290的第一优先级1、同步错误(TS Sync Loss)同步错误是衡量传输流质量的最重要的指标。

传输流失去同步,表明传输过程中有一部分数据丢失,将直接影响画面显示的质量。

严重的同步丢失现象则表明传输中断,同步字节出现错误。

2、同步字节错误(Sync Byte Error)同步字节错误和同步错误的区别在于传输数据包长为188字节或204字节,但同步字头的标准值为0×47,当出现同步字节错误时,同步字头的值为其他数值,表明在传输过程中部分数据出现错误,可能导致接收时出现马赛克,严重时导致解码器和DISPLAY软件解不出信号。

3、包识别丢失(PID Mssing)检测数据流中各套电视节目的图像/声音数据是否正确。

PID丢失,将导致DISPLAY软件无法正确解码这套节目。

4、节目相关表(PAT)PAT在DVB标准中用于指示当前节目及其在数据流中的位置。

PA T丢失,将导致解码器无法搜索到相应的节目包,使得接收端收不到图像。

如果PA T超时,则解码器工作时间延长。

5、节目对照表(PMT)PMT在DVB标准中用于指示该套节目视/音频数据在传输流中的位置。

某一套节目的PMT丢失,将导致解码器找不到该套节目视/音频数据,使得接收端收不到图像或声音。

PMT 传输超时,DISPLAY软件无法显示这套节目。

6、连续计数错误(Cont Count Error)对于每一套节目的视/音频数据包而言,连续计数错误是一个很重要的指标。

传输流包头连续计数不正确,表明当前传输流有丢包、错包、包重叠等现象,将导致解码器或DISPLAY 软件不能正确解码,图像出现马赛克等现象。

ts码流结构分析

ts码流结构分析
※该“数字”概念的基本解释:数字信号(对应于模拟 数字”概念的基本解释:数字信号( 信号) 信号) 数字信号是指所取的数值是离散的,在时间轴上 数字信号是指所取的数值是离散的, 是不连续的。 是不连续的。二进制码是应用的最广泛的一种数字信 号,数字电视中使用到的数字信号就是采用的二进制 码流。 码流。 一连串二进制码构成数字电视信 号:……101001110010101…….. ※该“数字”概念的作用范畴: 数字”概念的作用范畴: 数字电视中的“数字” 数字电视中的“数字”概念是指电视信号的前期
二、MPEG-2 & MPEG-2 system
下图是系统将多个基本流规范成单一数据流的一个复用与解复用流程: 下图是系统将多个基本流规范成单一数据流的一个复用与解复用流程:
原始视频 MPEG-2 视频 编码器 MPEG-2 音频 编码器 MPEG-2 视频 解码器 还原视频
原始音频
复 用 器 单一的 流 单一的TS流 或者PS流 或者 流
一、数字电视原理与DVB系统
DVB系统要求主要有: 系统要求主要有: 系统要求主要有 ※信源编码采用MPEG-2标准(即音视频压缩采用MPEG-2标准) 信源编码采用 标准(即音视频压缩采用 标准) 标准 标准 ※信道编码中采用统一的加扰系统 ※信道编码中采用统一的里德-所罗门前向纠错系统 信道编码中采用统一的里德 所罗门前向纠错系统 ※ …….. DVB系统的核心技术是采用 系统的核心技术是采用MPEG-2技术进行视频、音频的编码,使用 技术进行视频、 系统的核心技术是采用 技术进行视频 音频的编码, 统一的MPEG-2传输流(TS流)。 传输流( 流 统一的 传输流
二、MPEG-2 & MPEG-2 system
MPEG-2 system(编号 标准的其中一部分, (编号13818-1)是MPEG-2标准的其中一部分,该部分描述 ) 标准的其中一部分 了多个视频,音频和数据多种基本流( )合成传输流( )和节目流( ) 了多个视频,音频和数据多种基本流(ES)合成传输流(TS)和节目流(PS)的 方式。 方式。 就通俗的理解, 就通俗的理解,MPEG-2 system的主要功能是提供了将多种基本码流规范成 的主要功能是提供了将多种基本码流规范成 一种单一的便于传输的码流的技术标准。 一种单一的便于传输的码流的技术标准。

码流分析仪介绍 ppt课件

码流分析仪介绍  ppt课件
同步字节错误:同步字节值不是 0X47。同步字节错 误和同步丢失错误的区别在于同步字节错误传输数据 仍是 188或 204 包长,但同步字头的 0X47被其他数 字代替。这表明传输的部分数据有错误,严重时会导 致解码器解不出信号。
数字微波电路业务培训
第一错误等级(二)
PAT 错误:标识节目相关表 PAT 的 PID 为 0x0000, PAT 错误包括标识 PAT 的 PID 没有至少 0.5 s出现 一次,或者 PID为 0x0000 的包中无内容,或者 PID 为 0x0000 的包的包头中的加密控制段不为 0。PAT 丢失或被加密,则解码器无法搜索到相应节目;PAT 超时,解码器工作时间延时。
加扰方式。自适应字段控制:2b,用来指示本TS包首部是否跟有调整字段。连续
计数器:4b,随着每一个具有相同PID的传输流包而增加,当它达到最大值后又
恢复到0。
数字微波电路业务培训
2、PSI的PAT、PMT、NIT、CAT表
节目专用信息PSI用来描述TS流的组成结构。它包括节目关联表 (Program Association Table,PAT)、节目映射表(Program Map Table,PMT)、网络信息表(Network Information Table, NIT)和条件访问表(Conditional Access Table,CAT)。
发生一级错误通常会引起解码器无法进行解码。出现二级错误 时,会损伤已解码图像或者引起断续解码。三级错误指示出编 码器、复用器的问题,但不影响解码,对图像质量影响较小。
每一级错误可以分为具有严重和致命的错误特性,具有一般性 质的错误特性,属于告警性质等三个属性。
数字微波电路业务培训
2、三个错误等级对数字电视节目的解码的影响:

TS

TS

2.2 业务信息(SI)
• 1、业务群关联表(BAT):它提供了业务 群相关的信息,给出了业务群的名称以及 每个业务群中的业务列表。 • 2、业务描述表(SDT):业务描述表包含 了描述系统中业务的数据,例如业务名称、 业务提供者等 • 3、事件信息表(EIT):它包含了与事件 或节目相关的数据,EIT是生成EPG的主要 表。
• ts流是由很多不同种类的包所组成的,这些数据包都是188 个字节大小,这188个字节包含两部分,包头和负载,包头包 括同步信息,包信息等等,而负载则是传输的数据,而这些 负载则可以组成PES流或者私有流等等数据流. • 举例说,一个TS流包括100个包,其中PSI信息包占20个,PES 数据包80个,此TS流中只有一套节目流,不含有私有流,所 以从这80个PES包中的负载连接在一起,就是2个PES流(视 频,音频),如果每个PES包的负载长度为100字节,则这两个 PES流一共长度为8000个字节.假设其中视频的PES流长度 为6000字节.则视频的6000字节的PES流,是由PES包组成 的.PES包没有固定的长度,而是由包头部的数据给出.
• 4、运行状态表(RST):它给出了事件的 状态(运行/非运行),运行状态表更新这 些信息,允许自动适应切换事件。 • 5、时间和日期表(TDT):它给出了与当 前的时间和日期相关的信息,由于这些信 息更新频繁,所以需要单独使用一个表。
• 6、时间偏移表(TOT):它给出了与当前 时间、日期和本地时间偏移相关的信息, 由于这些信息更新频繁,所以需要单独使 用一个表。
CAT与NIT的结构图
• 从上面的几幅图中可知,要保证传送流能正常 接收,在该流中至少有一个完整有效的PAT。 CAT描述了节目的加密方式,它包含了节目的 EMM识别PID,只有授权的解码器才能由CAT 收到密钥,解码出相应的数据流。NIT包含节 目的频道调谐参数、频率、符号率等物理传输 网信息,这些信息使得接收机可以按照用户的 选择以很少的延时或无延时地改变频道、调谐 参数,正确地解码出TS。由于PSI数据的完整 性十分重要,因此在每个PSI段中均需要加校 验码。

ts码流结构分析

ts码流结构分析

ts码流结构分析TS(Transport Stream)是一种常用的音视频码流传输格式,用于在数字广播系统和互联网传输中对音视频数据进行分组和传输。

TS码流结构分析指的是对TS码流的组成部分进行分析,了解各部分的作用和关系。

以下是对TS码流结构的详细分析。

TS码流由多个188字节的包(Packet)组成,每个包都包含了一部分音视频数据。

一个TS包由4个字节的同步字节(Sync Byte)开头,用于标识包的开始。

接下来的4位为传输误码纠正(Error Correction)信息,用于保证传输数据的完整性和准确性。

再接下来的1位为负荷优先级(Payload Unit Start Indicator),用于标识包中是否包含了新的数据单元。

然后是13位的PID(Packet Identifier),用于标识包中所包含的数据单元的类型。

接下来的2位为传输加密(Transport Scrambling Control),用于指定包中数据的加密方式。

再接下来的2位为控制报文(Adaptation Field Control),用于指定包中的控制信息是否存在。

最后的184字节为有效数据(Payload),用于传输音视频数据。

每个TS包中的PID用于标识包中所包含的数据单元的类型,常见的PID值有0x0000(PAT:Program Association Table)、0x0001(CAT:Conditional Access Table)、0x0010(NIT:Network Information Table)、0x0011(SDT:Service Description Table)等。

PAT表包含了整个TS流的所有节目以及对应的PMT(Program Map Table)的PID值。

CAT表用于传递整个TS流中的加密和访问控制信息。

NIT表用于传递整个TS流中的网络信息,包括网络ID和传输参数。

SDT表用于传递整个TS流中的节目信息,包括节目名称和节目号码。

ts码流结构分析与监测

ts码流结构分析与监测

ts码流结构分析与监测TR101-290三级错误、PSI/SI、PCR分析描述DVB系统测量标准之一TR 101-290定义的三个优先级,是码流监测的一项主要内容。

通过这三个优先级的监测,可以检验被监测的码流是否符合MPEG-2和DVB标准。

这三个优先级都包含许多不同的参数。

一、TR 101-290的第一优先级1、同步错误(TS Sync Loss)同步错误是衡量传输流质量的最重要的指标。

传输流失去同步,表明传输过程中有一部分数据丢失,将直接影响画面显示的质量。

严重的同步丢失现象则表明传输中断,同步字节出现错误。

2、同步字节错误(Sync Byte Error)同步字节错误和同步错误的区别在于传输数据包长为188字节或204字节,但同步字头的标准值为0×47,当出现同步字节错误时,同步字头的值为其他数值,表明在传输过程中部分数据出现错误,可能导致接收时出现马赛克,严重时导致解码器和DISPLAY软件解不出信号。

3、包识别丢失(PID Mssing)检测数据流中各套电视节目的图像/声音数据是否正确。

PID丢失,将导致DISPLAY软件无法正确解码这套节目。

4、节目相关表(PAT)PAT在DVB标准中用于指示当前节目及其在数据流中的位置。

PA T丢失,将导致解码器无法搜索到相应的节目包,使得接收端收不到图像。

如果PA T超时,则解码器工作时间延长。

5、节目对照表(PMT)PMT在DVB标准中用于指示该套节目视/音频数据在传输流中的位置。

某一套节目的PMT丢失,将导致解码器找不到该套节目视/音频数据,使得接收端收不到图像或声音。

PMT 传输超时,DISPLAY软件无法显示这套节目。

6、连续计数错误(Cont Count Error)对于每一套节目的视/音频数据包而言,连续计数错误是一个很重要的指标。

传输流包头连续计数不正确,表明当前传输流有丢包、错包、包重叠等现象,将导致解码器或DISPLAY 软件不能正确解码,图像出现马赛克等现象。

数字电视的 T S包和 T S流的组成与功能ppt课件

数字电视的 T S包和 T S流的组成与功能ppt课件
5.3 数字电视的TS包和TS流的组成和功能
• 5.3.1 TS包链接头 • 5.3.2 TS包适配域 • 5.3.3 TS包净荷
• TS固定长度188字节,4字节包头和184字节净荷
188 bytes 4 byte TS header
184 byte ayload
13 bit packet identifier=PID 1bit transport error indicator
• (5)包标识符PID
• PID是识别TS包的重要参数,用来识别TS包 所承载的数据。在TS码流生成时,每一类 业务(视频,音频,数据)的基本码流均 被赋予一个不同的识别号PID,解码器借助 于PID判断某一个TS包属于哪一类业务的基 本码流。
• (7)适配域控制
• 标志TS包是否有适配域存在,如果存在, 在其内部是否有净荷存在。
• (4)TS包长度固定,188字节,有效净荷 184字节。
2、节目映射表PMT
• PMT表包含了与单路节目复用有关的节目信 息,典型的构成包括1路视频ES流,2-5路音 频ES流,1路或多路辅助数据。
• 进行TS流复用时,各路ES流被分配了唯一的 PID,ES流域被分配的PID值间的关系构成了 一张表,称为节目映射表PMT。
• 是包中的第一个字节,TS包以固定的8bit 的同步字节开始,所有的TS传送包,同步 字都是唯一的OX47,用于建立发送端和接 收端包的同步。
• (2)包差错指示
• 用于从解码器向分接器指示传输误码。若 这个比特被设置,表示此TS包中所携带的 净荷信息有错误,无法使用。
• (3)净荷单元起始指示

3、当地节目插入
1、同步和定时
• 在数字压缩编码系统中,由于每个图像的 数据是不同的(图像的编码方法和复杂程 度不同),这样不可能从图像数据的起始 部分直接获取定时信息。

TS码流分析

TS码流分析

MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性,MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。

对应于不同的应用,符合MPEG-2标准的码流又分为传送流和程序流,本文主要讲解了传送流有关的部分数据结构,从实际应用的传送流码流中截取了部分码流做了说明,并给出了部分解析传送流码流的实例程序。

在MPEG-II标准中,为了将一个或更多的音频、视频或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其重新进行打包编码,在码流中还需插入各种时间标记、系统控制等信息,最后送到信道编码与调制器。

这样可以形成两种数据流——传送流(TS)和程序流(PS),分别适用于不同的应用,图1给出了单路节目的视音频数据流的复用框图。

传送流(Transport Stream)简称TS流,它是根据ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协议而定义的一种数据流,其目的是为了在有可能发生严重错误的情况下进行一道或多道程序编码数据的传送和存储。

这种错误表现为比特值错误或分组丢失。

传送流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流、音频流、节目特殊信息流(PSI)和其他数据包。

其中PSI表有4种类型:节目关联表(PAT)、节目映射表(PMT)、网络信息表和条件访问表。

传送流应用比较广泛,如视音频资料的保存、电视节目的非线性编辑系统及其网络等。

在开发机顶盒以及视频设备时有时需要对码流的编码知识有比较清楚地了解,这样才能在遇到问题时做出全面的分析。

TS流结构分析如图2所示,TS包的长度是固定的,为188字节。

包括同步字节(sync_byte)0x47和数据包识别号PID 等。

PID为13位字段,指示存储于分组有效负载中数据的类型,PID值0x0000为程序关联表保留,而0x0001为条件访问表保留,0x1FFF为空分组保留。

码流分析

码流分析

4. Title
TS基本结构
PSI/SI
三级错误
带宽码率
* Description of the contents
TS流分析的原理和方法
TS流结构:
1.根据ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协 议而定义的一种数据流 2.由TS包经过时分复用组成,TS包总长度固定188字节。不足由填充 数据进行填充。
码流分析项目介绍
2012.11.28
www.themegallery.c
讲解流程
数字有线电视的基本概念 TS流介绍及其监测意义 TS流分析的原理和方法
TS流分析的产品调研
TS流监测项目探讨
数字有线电视的基本概念
DVB(digital video broadcast)
——数字电视传输标准
信源输入、信道编码和调制的一系列规范 我国的数字电视使用欧洲的DVB标准 数字电视主要使用的标准中还有美国的ATSC标准和日本的 ISDB标准。
TS流分析的原理和方法
TS包结构:
TS包结构:
1. 包头提供关于传输方面的信息:同步、有无差错、有无加扰等标志。 2. PCR的作用就是提供节目时钟参考,从而使解码器和编码器同步。 3. 有效载荷也叫净荷,实际就是PES包。
TS流分析的原理和方法
PSI:PAT、PMT、CAT SI:SDT、EIT、TD PCR
(1)同步丢失错误 (2)同步字节错误 (3)连续计数错误 (4)PID错误 (5)PAT错误 (6)PMT错误
TS流分析的原理和方法
二级错误: 错误形或PCR抖动量 PCR不连续发送时间一次超过10 ms; TS包头的传输包错误指示为“1”。 CRC用于计算PSI和SI是否错误。 相应的PID为0x0001的CAT;PID为 大于±500 ns。PCR抖动过大,会 PCR整个发送间隔超过40 ms。导致 表示包已损坏,影响TS码流的连续 PAT、PMT出现CRC错误,而且错误 PTS重复发送时间大于700ms。对帧 影响到解码时钟抖动甚至失锁。 以及信道稳定。 0x0001的包中发现非CAT表。CAT表 接收端时钟抖动或者漂移,影响画 持续出现,将影响解码器对某一套 图像正确显示产生影响。PTS只有 面显示时间。 节目的正确解码。 将指出授权管理信息EMM包的PID并 在TS未加扰时方能接收。 控制接收机的正确接收,CAT错误 则不能正确接收。

最直白明了的TS流分析

最直白明了的TS流分析
6.transport_scrambling_control:2bits,指出TS packet payload 的加密模式。Packet header、 adaptation field、null packet不加密。
.
7
PSI/SI 表PID分配 PAT CAT TSDT 预留 NIT, ST SDT , BAT, ST EIT, ST RST, ST TDT, TOT, ST 网络同步 预留使用 带内信令 测量 DIT SIT .
control
counter
field
2
2
4
Header Size = 4 Bytes
.
4
TS packet format
.
5
TS packet header
1.sync_byte:8bits同步码,固定为0x47
2.transport_error_indicator:1bit错误指示位。若设为1, 表明该TS包有错误。
如果除了以上特殊情况,还出现 continuity_counter的不连续(discontinuity),说 明有包丢失。另请参考adaptation field 中的 discontinuity_indicator指示位。
.
10
TS packet header之adaptation field
Adaptation field 是在TS包的header之后的一个可 选区域(由adaption_field_control指示)。主 要存放时钟与splice的一些信息。
7. adaptation_field_control:2bits,指出TS packet header 后是否跟adaption field 和/或 payload.

TS流解析

TS流解析

1)ES- Elementary Streams (原始流),对视频、音频信号及其他数据进行编码压缩后的数据流称为原始流。

原始流包括访问单元,比如视频原始流的访问单元就是一副图像的编码数据。

(2) PES- Packetized Elementary Streams (分组的原始流),原始流形成的分组称为PES分组,是用来传递原始流的一种数据结构(3)节目是节目元素的集合。

节目元素可能是原始流,这些原始流有共同的时间基点,用来做同步显示。

(4)传输流和节目流TS-Transport Stream 翻译为“传输流”PS-Program Stream 翻译为“节目流”PS用来传输和保存一道节目的编码数据或其他数据。

PS的组成单位是PES分组。

TS用来传输和保存多道节目的编码数据或其他数据,TS的组成单位是节目。

PS适用于不容易发生错误的环境,以及涉及到软件处理的应用,典型应用如DVD光盘的文件存储TS适用于容易发生错误的环境,典型应用就是数字电视信号的传输。

TS和PS是可以互相转换的,比如从TS中抽取一道节目的内容并产生有效的PS是可能。

(5)传输流分组和PES分组原始流分成很多PES分组,保持串行顺序,一个PES分组只包含一个原始流的编码数据。

PES分组长度很大,最大可为64K字节。

PES分组分为“分组首部(header)”和“有效负载(payload)”。

“有效负载”指跟随在首部字节之后的字节。

首部的前4个字节构成分组的起始码,标识了该分组所属原始流的类型和ID号。

TS分组也就是传输流数据形成的数据包。

每个TS分组长度为188字节,包括“分组首部”和“有效负载,前4个字节是分组首部,包含了这个分组的一些信息。

有些情况下需要更多的信息时,需在后面添加“调整字段(adaption field)”。

两者之间的关系:PES分组是插入到TS分组中的,每个PES分组首部的第一字节就是TS分组有效负载的第一字节。

TS流的分析

TS流的分析

一、MPEG-2系统原理第一章 MPEG-2简介什么是MPEG和MPEG-2?MPEG是Moving Picture Experts Group 的简称,MPEG-2是MPEG和ISO组织设计的一个数字视频压缩规范,主要用于DVD和DVB上,当前的标准文档是ISO13818.什么是DVB?DVB是Digtal Video Broadcast的简称,是欧洲所有国家和其他部分国家和地区使用的数字电视标准.其中美国的ATSC标准也是在DVB标准的基础上实现的.什么是TS码流和PS流?TS是transport stream的简称,就是”传输流”.DVB数据广播采用的数据格式就是TS码流.PS是program stream的简称,就是”节目流”.DVD中采用的数据格式就是PS流.这两种流的格式是不同的,TS格式具有很强的错误校正功能,适合传输,而PS格式适合存储在媒体中. 在这里,着重描述的是TS码流格式.什么是PID?PID是Packet identification的简称,就是”包标志符”.DVB系统把不同的数据打包成不同的数据包,用系统唯一的一个13 bits数字标志该数据的类型.例如,PID=0x00表示是DVB系统中的PAT包,而PID=0x10表示是DVB系统的NIT包.不同的节目(包括Video和Audio)分别采用不同的PID,例如,我们在PMT表中如果检测到PID=0x0120的PID是VIDEO数据,那么表示包号码是0x0120的所有包都是Video数据,其他依此类推.什么是PAT?PAT是Program Association Table的简称,即”节目关联表”.PAT属于DVB系统流中的一个包,包号码(PID)是0x00.PAT表描述了DVB系统流中包含什么样的PID,主要是描述当前流的NIT表格的PID号码是多少,当前流中有多少个不同类型PMT表,每个PMT表对应的频道号等信息.什么是PMT?PMT是Program Map Table的简称,即”节目影射表”.PMT的PID 是服务器自由定义的(但不会和系统保留的PID冲突).这个PID是在PAT表中描述的,比如,如果在PAT表中有0x100项的内容,那么说明所有 PID是0x100的包都是PMT表.不同的频道有不同的PMT,也就是说,一个不同的PMT代表的是一个不同频道.PMT表格和PAT表格配合在一起, 就可以检测出DVB流中所有存在节目的所有PID,因此,数字电视搜台就是依靠这两个表格数据完成的.什么是CAT?CAT是Conditional Access Table的简称,即”条件访问表”,PID是0x01.CAT携带的是服务器的私有信息(CA系统就需要使用该表格实现节目的解密).什么是SDT?SDT是Service Description Table的简称,即”服务器描述表”,PID是0x11.SDT携带的是电视台名称和电视节目名称.DVB接收系统接收SDT表中的节目信息,实现比较友好的界面显示和操作.什么是NIT和EIT?NIT是Network Information Table的简称,即”网络信息表”.EIT是Event Information Table的简称,即”环境信息表”.NIT可以提供当前流的节目信息,也可以提供和当前流有关联的流的节目信息.EIT提供的是流节目信息的改变,比如一个节目已经开始,或者已经结束的信息等.什么是EPG?EPG是Electronic Programme Guides的简称,即”电子节目指南”.该功能可实现预告近段时间即将播放的节目内容,同时支持基于内容的检索.什么是teletext?Teletext就是我们常说的”图文电视”,当然在MPEG-2中,图文电视已经数字化,也就是说,图文信息已经做为数字化信息在TS流中传播.但最终,数字化的图文信息都将转化为模拟的VBI信息插入到正常的电视信号中实现图文电视的显示.图文电视有很多标准,比如close caption,WSS等,欧洲的DVB使用的teletext标准是ITU-R System B Teletext规格.该规格支持欧洲多种语言,支持简单图象和文本的混合显示.第二章 DVB系统的构成[本文不详细描述DVB系统的硬件构成,只是根据ISO13818中的描述,详细解释TS码流的格式和解复用原理.(够了,够了呵呵)]DVB的分类DVB根据应用的不同,主要分为DVB-S,DVB-C,DVB-T,DVB-H等多种规格.不同的规格基本原理都是相同的,不同的主要是调制方式不同:DVB-S,S是Satelite的首字母,应用于数字电视卫星广播,调制方式是QPSK.DVB-C,C是Cable的首字母,应用于城市有线广播.调制方式是QAM所有格式: 16QAM,32QAM,64QAM,128QAM,256QAM.DVB-T,T是Terrestrial的首字母,应用于陆地无线广播,调制方式是QPSK或者16QAM和64QAM.DVB-H,H是Handheld的首字母,应用于手持无线广播,调制方式和DVB-T相同.总的来说,不同的DVB系统只有前端系统是不同的,最终的数字信息都是相同的,也就是都是采用ISO13818描述的规格.前端系统主要是指调制方法和发射方法等.因此,这里所叙述的内容,全部适用于所有的DVB系统,同时因为美国的ATSC系统也是在DVB系统上的小量更改和小部分功能增加,因此也适用于 ATSC标准.基本系统描述如下:(1)编码系统:假设信号源有6个节目,则DVB系统先对这6个节目的所有数据(Video,Audio)进行压缩处理,然后经过一个叫做"复用"的程序进行节目的复用 (PID分配,即对6个节目分别分配不同的PID号码)形成叫做"PES"的包,然后再经过TS流处理程序,把这些PES包全部封装成TS码流格式,最后把获得的TS格式的数字信号经过调制(实现的是频率的复用),然后经过D/A转换成模拟信号,再次调制成高频信号,经传输系统发送出去.(2)解码系统接收系统接收到高频信号,先转化为中频信号,然后再经过一个高速的A/D转换成数字信号,接着经过一个反调制程序,这样就得到了TS码流. TS码流进入一个称为"解复用"的程序,该程序实现自动分析TS 流中的表格信息,读取所有可用的PID信息等,然后提取一个用户指定的PID(用户选择的节目),把该节目的数字信号全部接收而忽略其他不需要的信号,然后Video,Audio信号分别进入不同的解压缩程序,分别对Video,Audio信号进行解压缩和显示,如果该节目包含了Teletext和EPG,也有可能同时处理Teletext 和EPG,并且把处理的结果和Video信号一起叠加到屏幕上.Packet的概念(1)TS流是基于Packet的位流格式,每个包是188字节或者204字节(一般是188字节,204字节的格式仅仅是在188字节的Packet后部加上16字节的CRC数据,其他格式是一样的),整个TS流组成如下所示:Packet 1 Packet 2 ...... Packet n在实际使用中,因为TS流已经内部具有很强的错误处理能力,所以一般使用较多的是188字节一个包的格式,204字节一个包的格式据说一般在高清节目中使用较多.所有的Packet格式都是统一的,包括一个Packet header和Packet datas.其中Packet header 包含了同步字节(该字节固定是0x47,表示这个包的数据开始是正确的),该Packet的唯一号码(即PID)和其他一些信息.格式如下(用C格式表示)typedef struct{unsigned sync_byte:8;/*8 bits的同步字节*/unsigned transport_error_indicator:1;/*1 bit的错误指示信息,1表示当前Packet至少有1bit的传输错误,0表示所有数据都正确*/unsigned payload_unit_start_indicator:1;/*负载单元开始标志,请参考ISO13818-1了解该标志作用*/unsigned transport_priority:1;/*1 bit的传输优先级标志,1表示高优先级,0表示低优先级*/unsigned PID:13;/*13 bits的Packet ID号码,唯一的号码对应不同的包*/unsigned transport_scrambling_control:2;/*2 bits的加密标志,00表示没有加密,其他表示已被加密*/unsigned adaptation_field_control:2;/* 2 bits的附加区域控制,请参考ISO13818-1了解该标志作用*/unsigned continuity_counter:4;/*4 bits的包递增计数器*/}PACKET_HEADER;以上结构刚好占用32 bits,即4个字节,因此一个TS流的Packet头部的4字节是header信息,分析该header信息就可以知道当前Packet的属性.剩下的184字节有可能是Video数据,也有可能是Audio数据,也有可能是DVB SI信息,怎么区分呢?其实很简单,就是利用header中的PID信息.上一章说了PAT是节目关联表,它的PID是0x0000.这个PID就是对应这里 header的PID.换句话就是说,如果我们发现一个Packet的PID等于0x0000,那么说明这个Packet是DVB的PAT表格而不是 Video数据或者Audio数据.实际上,在信号编码成TS码流的时候,不同节目的Video,Audio等数据都分配了不同的PID.例如,一个节目有两路Video,三路Audio,那么分配PID的时候可能是Video 1==0x100,Video 2==0x101,Audio 1==0x102,Audio 2==0x103, Audio 3==0x104,这样传输的TS码流中的PID就可能有以上的PID.因此,如果我们需要在程序中过滤出第一路Video和第二路 Audio就可以这样处理了(伪代码描述):void Process_Packet(unsigned char*buff){int PID=GETPID(buff);/*从当前的188字节缓冲区中获取PID信息*/if(PID==0x100) /*PID等于第一路Video的PID,说明当前数据是Video数据*/{SaveToVideoBuffer(buff+4);/*把header后部的数据存到Video缓冲区,待后部处理*/}else if(PID==0x103)/*PID等于第二路Audio的PID,说明当前数据是Audio数据*/{SaveToAudioBuffer(buff+4);/*把header后部的数据存到Audio缓冲区*/}else/*其他PID则丢弃,当然如果PID是DVB系统保留的PID如PAT,PMT则必须处理*/{printf("unknown PID!\n");}}现在的问题是,编码的时候分配好的PID,在解码的时候是怎么知道什么PID对应什么数据呢?这就是DVB SI表格的分析与处理了,请参考第三章.这里先看一个实际的TS码流的例子.这里的数据是用UltraEdit用16进制格式打开TS码流文件得到的.文件是Taiwan-551.ts.这里仅仅截取了3个Packet的信息,请注意图中用红色标注的部分,这就是TS流Packet的4个字节的头信息.这个TS流是采用每个包共188字节的格式,因为两个头信息的间隔是188个字节(第一个0x47到第二个0x47的间隔).以后的所有的Packet都将是188字节的格式,这是 DVB TS标准规定的固定大小.那么这三个包分别包含的是什么数据,下面我们可以自己分析一下.先看第一个包,头信息数据是"0x47 0x07 0xe5 0x12",刚才已经知道了,header信息都是按位操作的(这就是为什么TS码流也可以叫做位流的原因),特别要注意的是定义和传输的时候都是MSB first,也就是说,先出现的位是数据的最高位.先转化成2进制格式:01000111 00000111 11100101 00010010请对照上面的PACKET_HEADER结构:typedef struct{unsigned sync_byte:8;unsigned transport_error_indicator:1;unsigned payload_unit_start_indicator:1;unsigned transport_priority:1;unsigned PID:13;unsigned transport_scrambling_control:2;unsigned adaptation_field_control:2;unsigned continuity_counter:4;}PACKET_HEADER;那么对照一下,我们可以发现:sync_byte=01000111,就是0x47,这是DVB TS规定的同步字节,固定是0x47.transport_error_indicator=0,表示当前包没有发生传输错误.payload_unit_start_indicator=0,含义请参考ISO13818-1标准文档transport_priority=0,表示当前包是低优先级.PID=00111 11100101即0x07e5,这代表是什么呢,暂时还不知道(实际上是Video PID,参考下图)transport_scrambling_control=00,表示节目没有加密adaptation_field_control=01即0x01,具体含义请参考ISO13818-1continuity_counte=0010即0x02,表示当前传送的相同类型的包是第3个依此类推,再看一下第二个包"0x47 0x07 0xe5 0x13",2进制是01000111 00000111 11100101 00010011sync_byte=01000111,就是0x47,这是DVB TS规定的同步字节,固定是0x47.transport_error_indicator=0,表示当前包没有发生传输错误.payload_unit_start_indicator=0,含义请参考ISO13818-1标准文档transport_priority=0,表示当前包是低优先级.PID=00111 11100101即0x07e5,这代表是什么呢,暂时还不知道(实际上是Video PID,参考下图)transport_scrambling_control=00,表示节目没有加密adaptation_field_control=01即0x01,具体含义请参考ISO13818-1continuity_counte=0011即0x03,表示当前传送的相同类型的包是第4个(注意到了吧,以上两个包的PID都是0x07e5,所以这里的continuity_counte就递增一次)第三个包是"0x47 0x07 0xf1 0x18",2进制是01000111 00000111 11110001 00011000.sync_byte=01000111,就是0x47,这是DVB TS规定的同步字节,固定是0x47.transport_error_indicator=0,表示当前包没有发生传输错误.payload_unit_start_indicator=0,含义请参考ISO13818-1标准文档transport_priority=0,表示当前包是低优先级.PID=00111 11100101即0x07f1,这代表是什么呢,暂时还不知道(实际上是Audio PID,参考下图)transport_scrambling_control=00,表示节目没有加密adaptation_field_control=01即0x01,具体含义请参考ISO13818-1continuity_counte=1000即0x08,表示当前传送的相同类型的包是第9个请看解码程序<<Seekfor MPEG-2 decoder>>读取该文件的结果:上图我们可以发现,Taiwan-551.ts有一个节目叫"DIMO",它的Video PID是0x07e5,Audio PID 是0x07e6还有一个节目叫"Service 1",没有Video PID,它的Audio PID是0x07f1(说明是一个广播节目而非电视节目)这个数据刚好和我们刚才的分析是吻合的.但是我想大家还有疑问,为什么0x07e5代表Video PID,0x07e6代表其中一个Audio PID呢?这就是刚才提到的,这是TS流在编码的时候就分配好了的.但是,在解码的时候是怎么知道0x07e5就代表的是Video而不是Audio呢?这就是第三章的内容:DVB SI/PSI分析和处理.第三章 DVB SI/PSI分析和处理SI是Specific Information的简称,PSI是program Specific Information.该机制允许DVB传送各种各样的讯息,比如节目名称,电视台名称,各种PID,私有信息,甚至单独传送数据实现数据通信等.这些功能的实现都归功于SI/PSI.在DVB 标准中,定义了一个标准的PID用来实现SI/PSI.这些PID是系统保留的,因此DVB编码的时候并不会用这些PID做为Video PID或者 Audio PID或者其他PID.在一个简单的解复用程序中,只需要提供处理PAT,PMT表格的程序即可实现解复用,当然如果需要更友好的界面和实现更复杂的功能(如CA)则必须处理其他的SI表.在这里仅仅分析PAT,PMT,SDT表格,其他SI表格的分析,请参考ISO13818-1(MPEG-2系统层标准)和EN300468(DVB SI标准)文档.DVB定义的SI保留的PID分别是:上表格的PID就是DVB保留的PID,分配的其他PID一定不会占用这些PID.解复用程序需要使用到的表格只有PAT,PMT,SDT,而CA应用还需要使用CAT,EPG应用还需要使用NIT,EIT,TDT,TOT等表格.所以在需要解复用的时候,伪代码需要这样写:void Process_Packet(unsigned char*buff){int PID=GETPID(buff);if(PID==0x0000) /*这是PAT表*/Process_PAT(buff+4);/*处理PAT表*/}else if(PID==......)/*Video 或者Audio*/{}else/*其他不支持的PID*/{printf("Unknown PID!");}}所有的表格都开始于Packet中的184字节的数据部分,但有的时候一个表格没有184字节,这时在Packet中就可能插入一些无效信息用来填充使整个 Packet依然保持是188字节.也可能用头信息中的payload_unit_start_indicator标志表格有个偏移位置(当 payload_unit_start_indicator=0表示表格数据直接从Packet区的第四个字节开始,否则表示有一个偏移量位置开始,具体请参考ISO13818-1,第4字节到偏移量间的数据是系统填充的无效数据).下面针对解复用程序详细分析一下PAT,PMT和SDT三类表格的格式.PAT, Program Association Table,节目关联表PAT表携带以下信息:(1) TS流ID--- transport_stream_id,该ID标志唯一的流ID(2) 节目频道号-- program_number,该号码标志TS流中的一个频道,该频道可以包含很多的节目(即可以包含多个Video PID和Audio PID)(3) PMT的PID--- program_map_PID,表示本频道使用的哪个PID做为PMT的PID,因为可以有很多的频道,因此DVB规定PMT的PID可以由用户自己定义.PAT表定义如下:各字段含义如下:table_id:8 bits,标志本表格的类型,应该是0x00section_syntax_indicator:1 bit,段语法标志,应该是'1''0':固定的'0',这是为了防止和ISO13818Video流格式中的控制字冲突而设置的.Reserved:保留的2bits,保留位一般都是'0'section_length:12bits的段大小,单位是Bytes.transport_stream_id:16bits的当前流ID,DVB内唯一.(事实上很多都是自定义的TS ID)version_number:5bits版本号码,标注当前节目的版本.这是个非常有用的参数,当检测到这个字段改变时,说明TS流中的节目已经变化了,程序必须重新搜索节目.current_next_indicator:1bit:当前还是未来使用标志符,一般情况下为'0'section_number:8bits当前段号码last_section_number:8bits最后段号码(section_number和last_section_number的功能是当PAT内容>184字节时,PAT表会分成多个段(sections),解复用程序必须在全部接收完成后再进行PAT 的分析)从for()开始,就是描述了当前流中的频道数目(N),每一个频道对应的PMT PID是什么.解复用程序需要和上图类似的循环来接收所有的频道号码和对应的PMT PID,并把这些信息在缓冲区中保存起来.在后部的处理中需要使用到PMT PID.CRC_32:本段的CRC校验值,一般是会忽略的.N是一个变量,计算方法是N=(section_length-9)/4.从以上分析我们可以发现,PAT表主要包含频道号码和每一个频道对应的PMT的PID号码,这些信息我们在处理PAT表格的时候会保存起来,以后会使用到这些数据.例如我们可以定义这样的数据结构保存这些信息:typedef struct{int channel_number;/*频道号*/int pmt_pid;/*对应channel_number频道号的PMT的PID*/}PMT_ITEM;PMT_ITEM pmt[64];/*定义最多64个频道,这个结构在分析PAT表格的时候会更新*/PMT, Program Map Table,节目影射表如果一个TS流中含有多个频道,那么就会包含多个PID不同的PMT表.检测是否PMT的伪代码如下:void Process_Packet(unsigned char*buff){int I;int PID=GETPID(buff);if(PID==0x0000)/*PAT表格*/{Process_PAT(buff+4);}else if(PID==.....)/*Video PID或者Audio PID*/{}else{/*在这里检测PID是否是PMT的PID*/for(i=0;i<64;i++){if(PID==pmt[i].pmt_pid)/*PID等于在PAT检测到的PMT PID相同*/{Process_PMT(buff+4);/*说明当前Packet是PMT,进入处理*/break;}}}}PMT表中包含的数据如下:(1) 当前频道中包含的所有Video数据的PID(2) 当前频道中包含的所有Audio数据的PID(3) 和当前频道关联在一起的其他数据的PID(如数字广播,数据通讯等使用的PID)PMT定义如下:各字段含义如下:table_id:8bits的ID,应该是0x02section_syntax_indicator:1bit的段语法标志,应该是'1''0':固定是'0',如果不是说明数据有错.reserved:2bits保留位,应该是'00'section_length:16bits段长度,从program_number开始,到CRC_32(包含)的字节总数.program_number:16bits的频道号码,表示当前的PMT关联到的频道.换句话就是说,当前描述的是program_number频道的信息.reserved:2bits保留位,应该是'00'version_number:版本号码,如果PMT内容有更新,则version_number会递增1通知解复用程序需要重新接收节目信息,否则version_number是固定不变的.current_next_indicator:当前未来标志符,一般是0section_number:当前段号码last_section_number:最后段号码,含义和PAT中的对应字段相同,请参考PAT部分.reserved:3bits保留位,一般是'000'.PCR_PID:13bits的PCR PID,具体请参考ISO13818-1,解复用程序不使用该参数.reserved:4bits保留位,一般是'0000'program_info_length:节目信息长度(之后的是N个描述符结构,一般可以忽略掉,这个字段就代表描述符总的长度,单位是Bytes)紧接着就是频道内部包含的节目类型和对应的PID号码了.stream_type:8bits流类型,标志是Video还是Audio还是其他数据.reserved:3 bits保留位.elementary_PID:13bits对应的数据PID号码(如果stream_type是Video,那么这个PID就是Video PID,如果stream_type标志是Audio,那么这个PID就是Audio PID)reserved:4 bits保留位.ES_info_length:和program_info_length类似的信息长度(其后是N2个描述符号)CRC_32:32bits段末尾是本段的CRC校验值,一般忽略.从以上的分析可以看出,只要我们处理了PMT,那么我们就可以获取频道中所有的PID信息,例如当前频道包含多少个Video,共多少个Audio,和其他数据,还能知道每种数据对应的PID分别是什么.这样如果我们要选择其中一个Video和Audio收看,那么只需要把要收看的节目的Video PID和Audio PID保存起来,在处理Packet的时候进行过滤即可实现.比较全面实现解复用的伪代码如下:int Video_PID=0x07e5,Audio_PID=0x07e6;/*一般是在PMT检索后由用户自己设置这两个全局值*/void Process_Packet(unsigned char*buff){int I;int PID=GETPID(buff);/*获取当前Packet的PID*/if(PID==0x0000)/*0x0000表示是PAT*/{Process_PAT(buff+4);}else if(PID==Video_PID)/*和Video_PID相等,说明当前Packet是一个Video Packet*/ {SaveToVideoBuffer(buff+4);/*保存到Video缓冲区*/}else if(PID==Audio_PID)/*和Audio_PID相等,说明当前Packet是一个Audio Packet*/ {SaveToAudioBuffer(buff+4);/*保存到Audio缓冲区*/}else{for( i=0;i<64;i++){if(PID==pmt[i].pmt_pid){Process_PMT(buff+4);Break;}}}}以上伪代码可以实现基本的解复用:检测所有的频道,检测所有stream的PID,选择特定的节目进行播放.只要读取每个Packet的188字节的内容,然后每次都调用Process_Packet()即可实现简单的解复用.介绍到这里,我们就可以总结一下DVB搜台的原理了.(好!洗耳恭听!)机顶盒先调整高频头到一个固定的频率(如498MHZ),如果此频率有数字信号,则COFDM芯片(如MT352)会自动把TS流数据传送给MPEG- 2 decoder. MPEG-2 decoder先进行数据的同步,也就是等待完整的Packet的到来.然后循环查找是否出现PID== 0x0000的Packet,如果出现了,则马上进入分析PAT的处理,获取了所有的PMT的PID.接着循环查找是否出现PMT,如果发现了,则自动进入PMT分析,获取该频段所有的频道数据并保存.如果没有发现PAT或者没有发现PMT,说明该频段没有信号,进入下一个频率扫描.从以上描述可以看出,机顶盒搜索频率是随机发生的,要使每次机顶盒都能搜索到信号,则要求TS流每隔一段时间就发送一次PAT和PMT.事实上DVB传输系统就是这么做的.因此无论何时接入终端系统,系统都能马上搜索到节目并正确解复用实现播放.不仅仅如此,其他数据也都是交替传送的.比如第一个Packet可能是PAT,第二个Packet可能是PMT,而第三个Packet可能是Video 1,第四个Packet可能是Video 2,只要系统传输速度足够快(就是称之为"码率"的东东),实现实时播放是没有任何问题的.到这里虽然实现了解复用,但可以看出,使用的PID都是枯燥的数字,如果调台要用户自己输入数字那可是太麻烦了,而且还容易输入错误,操作非常不直观,即使做成一个菜单让用户选择也是非常的呆板.针对这个问题,DVB系统提出了一个SDT表格,该表格标志一个节目的名称,并且能和PMT中的PID联系起来,这样用户就可以通过直接选择节目名称来选择节目了.SDT, Service description section,服务描述段SDT可以提供的信息包括:(1) 该节目是否在播放中(2) 该节目是否被加密(3) 该节目的名称SDT定义如下:各字段定义如下:table_id:8bits的ID,可以是0x42,表示描述的是当前流的信息,也可以是0x46,表示是其他流的信息(EPG使用此参数)section_syntax_indicator:段语法标志,一般是'1'reserved_future_used:2bits保留未来使用reserved:1bit保留位,防止控制字冲突,一般是'0',也有可能是'1'section_length:12bits的段长度,单位是Bytes,从transport_stream_id开始,到CRC_32结束(包含)transport_stream_id:16bits当前描述的流IDreserved:2bits保留位version_number:5bits的版本号码,如果数据更新则此字段递增1current_next_indicator:当前未来标志,一般是'0',表示当前马上使用.original_netword_id:16bits的原始网络ID号reserved_future_use:8bits保留未来使用位接下来是N个节目信息的循环:service_id:16 bits的服务器ID,实际上就是PMT段中的program_number.reserved_future_used:6bits保留未来使用位EIT_schedule_flag:1bit的EIT信息,1表示当前流实现了该节目的EIT传送EIT_present_following_flag:1bits的EIT信息,1表示当前流实现了该节目的EIT传送running_status:3bits的运行状态信息:1-还未播放 2-几分钟后马上开始,3-被暂停播出,4-正在播放,其他---保留free_CA_mode:1bits的加密信息,'1'表示该节目被加密.紧接着的是描述符,一般是Service descriptor,分析此描述符可以获取servive_id指定的节目的节目名称.具体格式请参考 EN300468中的Service descriptor部分.分析完毕,则节目名称和节目号码已经联系起来了.机顶盒程序就可以用这些节目名称代替 PID让用户选择,从而实现比较友好的用户界面!下面参考一下<<Seekfor MPEG2 decoder>>中的界面和显示信息.上图是<<Seekfor MPEG2 decoder>>打开三个不同的码流文件(*.ts)形成的PID信息和节目名称.用户可以通过切换节目名称的下拉列表框切换节目,也可以通过"视频流"和"音频流"下拉列表框切换Video和Audio!这些数据都是通过分析PAT, PMT和SDT得到的.第四章 Teletext原理欧洲采用的Teletext 标准叫做"ITU-R System B Teletext",标准文档是EN300472和EN300706.该标准支持以下特性:(1) 24X40的文本字符显示,也支持简单的图象信息的显示.(2) 支持多页码,应用程序可以自由切换到任意选定的页.(3) 支持多语言,可以在teletext中指定所使用的语言.(4) 文本支持自定义背景色,自定义前景色.支持长度,宽度加倍(double width,double height)(5) 所有数据采用了奇偶校验和汉明码编码,具有比较强的错误处理功能.(6) 格式基本兼容模拟TTX,支持VBI插入teletext数据.Teletext数据是在TS流中和Video,Audio数据一起传送的.EN300472规定采用以下方法识别teletext数据的PID:如果PMT段中的 stream_type==0xbd(private_stream_1),那么这个数据流就是teletext或者subtitle数据(统称为VBI 数据,具体区分还需要在teletext分析中处理),VBI数据开始于PES包的数据部分.Teletext在PES包中的格式如下:各字段含义:data_identifier:数据标志符,如果是teletext必须等于0x10~0x1f.data_unit_id:用来标志是teletext数据还是subtitle数据.0x02表示是teletext,0x03表示是subtitle.data_field()是标准的teletext格式的数据包,参考下图.实际上,一个data_field就是teletext 的一行数据.data_field()的格式如下:各字段含义如下:reserved_future_use:2bits保留未来使用field_parity:1bit的奇偶标志,'1'表示是偶数场(下半场),'0'表示奇数场(上半场)line_offset:5bits,在VBI插入时指定的场线数据.(以上两个参数在使用VBI硬件插入才需要使用)framing_code:8bits的帧同步代码,必须是0xe4.magazine_and_packet_address:16bits,指定当前传送的杂志号码和包号码,采用的是汉明8/4编码.其中的包号码(Packet address)实际上代表的是TTX页面的行号码(0-24).data_block:320bits,40Bytes的数据块,全部采用奇偶校验,对应TTX页面的40列,范围是0x00-0x7f(最高位是奇偶校验位).把这部分的数据全部提取出来,就可以获得一个行的全部数据(TTX是24行X40列).因此,解teletext的软件一般采用这样的流程:(1) 分析PMT表,获取代表teletext的PID,标注为TTX_pid;(2) 在解复用程序中过滤PID==TTX_pid的数据,解出PES的数据部分.(3) 把第二步得到的数据部分全部保存到一个缓冲区,直到所有的数据全部缓冲完毕.(4) 解出packet address,该数据代表当前的行号(0-24).如果是0,则本个data block包含的是主页面代码和子页面代码.如果不是0(1-24),则说明data block是对应页的列数据(40个字节的ASCII),把这些数据解出保存到缓冲区.(这里必须和PID过滤一样,过滤主页面号码和子页面号码,即没有选择的页面忽略掉)(5) 循环第(4)步直到所有的列数据全部解出.(6) 把缓冲区中的24X40的数据显示出来.一般是在RAM中定义一个unsigned char TTX_DATA[24][40]数组保存.Teletext是如何支持自定义前景色和背景色等特性的呢?实际上非常简单,就包含在每一行数据的40个字节中.我们知道可显示ASCII的范围是0x20~0x7f,小于0x20的代码在teletext中做为控制字符(需要在显示程序中处理),具体规定如下:0x00-0x07:设置前景色,颜色分别是黑,红,绿,黄,蓝,洋青,洋蓝,白(设置后生效,也就是说,显示程序遇到这些代码,在随后的显示中必须改变前景色到对应的颜色)0x08:开始闪烁功能,设置后生效.0x09:结束闪烁功能,设置后生效0x0a:BOX结束,设置后生效.0x0b:BOX开始,设置后生效.0x0c:正常象素大小,设置后生效.0x0d:宽度加倍,设置后生效.0x0e:长度加倍,设置后生效.0x0f:宽度和长度都加倍,设置后生效.0x10-0x17:设置马塞克颜色,颜色代码同0x00-0x07,设置后生效.0x18:以后固定是显示空,直到遇到其他颜色属性.设置后生效.0x19-0x1b:请参考EN300706标准.0x1c:设置黑背景色.设置后马上生效.0x1d:设置新的背景色,下一个字符指定背景颜色,代码同0x0-0x07.0x1e:保持马塞克功能,设置后生效.0x1f:取消马塞克功能,设置后生效.。

MPEG-2 TS码流分析

MPEG-2 TS码流分析

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

PES流(Paketized Elementary Stream,打包基本码流):是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流。

PS (Program Stream,节目流):将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述后的码流。

PS流是一种多路复用数字音频、视频等的封装容器,它一个或多个具有共同的时间基准的PES流合并成一个整体流,主要用于节目存储。

其包长不固定,且较长,一旦失去同步信息,接收机无法确定下一包的同步位置,会造成失步,导致严重的信息丢失。

PS流适用于误码小、信道较好的环境,如演播室、家庭环境和存储介质中。

TS流(Transport Stream,传输流):是将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述和节目组成信息,并进一步封装成传输包后的码流。

TS流是将视频、音频、PSI等数据打包成传输包进行传送。

主要用于节目传输。

TS的传输包长度固定,一般为188字节。

TS流和PS流是MPEG-2标准中规定的两种输出码流。

TS格式中,从视频流的任意一片断开始都可以独立解码,而PS格式不可以。

由于TS流具备较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS 流的包格式。

TS流的播放:播放前将TS流文件的后缀名该为.mpg或者.mpeg,用可以直接播放MPEG-TS流的播放器(一般的播放器都可以)打开播放即可。

TS流的优点:1、动态带宽分配:由于TS的传输包长度是固定的,因此可过PID可以将规定的信道总频带在视频、音频和数据信息见进行实时的、灵活的分配。

利用这一特性,可在广播付费节目前实时地将解密钥匙插入到TS流中送给广大用户。

ts码流结构分析与监测

ts码流结构分析与监测

数字视频广播(DVB)系统的传输方式可以分为DVB-S系统(卫星广 播)、 DVB-C系统(有线电视)、 DVB-T系统(地面数字视频广播), DVB系统主要完成数字电视信号的广播与传输。
Beijing Bohui Science & Technology Co., Ltd.
一、数字电视原理与DVB系统
Beijing ቤተ መጻሕፍቲ ባይዱohui Science & Technology Co., Ltd.
一、数字电视原理与DVB系统
3、什么是DVB系统(Digital Video Broadcasting system)?
DVB,“数字视频广播”(Digital Video Broadcasting)的缩写, 是一 种国际承认的数字电视标准。该标准是由欧洲电信标准化组织(ETSI)、欧 洲电子标准化组织(CENELEC)和欧洲广播联盟(EBU) 联合组成的“联 合专家组”(Joint Technical Committee, JTC)发起的。 我国使用的数字电视标准采用的就是DVB标准。
Beijing Bohui Science & Technology Co., Ltd.
一、数字电视与DVB系统
2、数字电视为什么采用信源编码和信道编码?
信源编码:提高有限带宽的利用率 ※预测编码 ※统计编码 ※JPEG编码 ※MPEG编码 ※……..
………… 100K CIF图像
未经压缩的数字图像数据的传输
一、数字电视与DVB系统
1、什么是数字电视中的“数字”概念?
※该“数字”概念的基本解释:数字信号(对应于模拟信号) 数字信号是指所取的数值是离散的,在时间轴上是不连续的。二进 制码是应用的最广泛的一种数字信号,数字电视中使用到的数字信号就 是采用的二进制码流。 一连串二进制码构成数字电视信号:……101001110010101…….. ※该“数字”概念的作用范畴: 数字电视中的“数字”概念是指电视信号的前期处理、传输、发射 和接收过程中使用的是数字信号。而我们看到的数字电视里面的实际画 面和声音仍然是模拟的,它是数字电视接收端(机顶盒)将接收到的数 字信号经过D/A转换后得到的。

TS码流分析

TS码流分析
传输 系统 的 眼睛 。
收到 了 , 而没 有声 音 。数据 正 确传 输但 伴 随有过 度 的 抖 动会 引发解 码器 的定 时 问题 。因此 , 能够 确认 错误
发 生在 哪一 层 而避 免 无结 果 的搜 寻错 误 显 得 十分 重
要 。在使 用在 线码 流分 析仪 的过程 中 , 我们 可 以参 照

2 1年 第 3期 ( 第 2 ) 1 0 总 5期 5
有 线 电视 技 术
04 , 出现 同步 字 节错 误 时 , 步字 头 的值 为 其 它 x7 当 同 数值 , 明在 传 输 过程 中部 分数 据 出 现错 误 , 能导 表 可
数字电视
P R抖动 将影 响接 收端 系统 时钟 的正 确恢 复 , C 解 码 时会 出现 马赛 克现象 , 严重 时不能 正常显示 图像 。 ( ) 出时 问标 记 ( T ) 5播 P S 在 D B标 准 中 规 定 P S每 7 0 传 输 一 次 , V T 0 ms P S传输 超 时将影 响 图像正 确显 示 。 T
() 2 同步 字节错 误 (y c B t E rr S n ye r ) o 同 步字 节 错 误 和 同步 错 误 的区别 在 于 传输 数 据
包长 为 18字 节 或 2 4字 节 , 同步字 头 的标准值 为 8 0 但
误 ; 二类 , 码器 和解 码 器状 态 良好 , 第 编 但传 输层 破坏
正 确地进行 复 用并 将信 息从 编 码器 送 到解码 器 , 不存
在 误码 和增加 的抖 动 ,但 编 码 器 和解 码 器 本 身 有错
输 流失 去 同步 ,表 明传输 过程 中有 一 部分数 据 丢失 ,
将直 接影 响解 码后 画面 的质量 。 严重 的同步丢 失现象 则表 明传 输 中断 , 同步字 节 出现错 误 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

100K CIF图像
100K CIF图像
带宽:8Mbps
传输速率:(8M/8bit)/100K=10(帧/s)

100K CIF图像
压缩后的数字图像数据的传输
100K CIF图像
信源编码 …
10K CIF图像
10K 带宽:8Mbps CIF图像
信道编码:提高传输可靠性
传输速率:(8M/8bit)/10K=100(帧/s)
我国使用的数字电视标准采用的就是DVB标准。
数字视频广播(DVB)系统的传输方式可以分为DVB-S系统(卫星广 播)、 DVB-C系统(有线电视)、 DVB-T系统(地面数字视频广播), DVB系统主要完成数字电视信号的广播与传输。
一、数字电视原理与DVB系统
DVB系统要求主要有: ※信源编码采用MPEG-2标准(即音视频压缩采用MPEG-2标准) ※信道编码中采用统一的加扰系统 ※信道编码中采用统一的里德-所罗门前向纠错系统 ※ ……..
※该“数字”概念的作用范畴: 数字电视中的“数字”概念是指电视信号的前期
一、数字电视与DVB系统
2、数字电视为什么采用信源编码和信道编码? 未经压缩的数字图像数据的传输
信源编码:提高有限带宽的利用率
※预测编码 ※统计编码 ※JPEG编码 ※MPEG编码 ※……..
…………
100K CIF图像
100K CIF图像
MPEG-2标准是MPEG和ISO组织设计的一个数字视频压缩规范,主要用于DVD 和DVB上。其设计目标是高级工业标准的图象质量以及更高的传输率。该标准包括 编号为13818-1系统部分、编号为13818-2的视频部分、编号为13818-3的音频部分 及编号为13818-4的符合性测试部分。
二、MPEG-2 & MPEG-2 system
DVB系统的核心技术是采用MPEG-2技术进行视频、音频的编码,使用 统一的MPEG-2传输流(TS流)。
二、MPEG-2 & MPEG-2 system
1、什么是MPEG、MPEG-2、MPEG-2 system?
MPEG是动态图像专家组(Moving Picture Experts Group)的简称, 通常可 以将MPEG理解为一种视频压缩编码技术标准。该编码压缩属于有损压缩,最大压 缩比为200:1。 MPEG标准目前一共有五个:MPEG-1、MPEG-2、MPEG-4、 MPEG-7及MPEG-21。DVB中采用的的标准是MPEG-2标准。
MPEG-2 system(编号13818-1)是MPEG-2标准的其中一部分,该部分描述 了多个视频,音频和数据多种基本流(ES)合成传输流(TS)和节目流(PS)的 方式。
就通俗的理解,MPEG-2 system的主要功能是提供了将多种基本码流规范成 一ES种流(单也一就是的基便本流于)传其实输就的是经码过流音视的频技编T码S术流器和标编P码准SP流后C。是的R是经音节M视这目P频三E时数G个钟-据2时参系流间考统参,处数用理都于后是解最编码终码端用端的于加系传入统输的时和:钟存重储建的;两种码流标准
用 器
节目流(PS) PS包 PS包 PS包 ...
第一次打包
第二次打包
TS
传输流(TS)
复 用
TS包 TS包 TS包 ...

TS流主要用于相对有错的环境下的传输与存储,如DVB
二、MPEG-2 & MPEG-2 system
2、什么是ES流、PES流、PS流以及TS流?
TS码流结构分析
目录
一ห้องสมุดไป่ตู้
数字电视与DVB系统

MPEG-2 & MPEG-2 system

TS流、包结构以及同步

PSI/SI表格信息

TS流参数监测
一、数字电视与DVB系统
1、什么是数字电视中的“数字”概念?
※该“数字”概念的基本解释:数字信号(对应于模拟 信号) 数字信号是指所取的数值是离散的,在时间轴上 是不连续的。二进制码是应用的最广泛的一种数字信 号,数字电视中使用到的数字信号就是采用的二进制 码流。 一连串二进制码构成数字电视信 号:……101001110010101……..
由于数字信号具有很复杂的频率成分,频率特性也很不相同,直接传输会产生误码,
降低可靠性。信道编码就是针对这种情况而提出的。信道编码的目的是使传输的图像信
号适应传输信道对频率特性的要求,抑制信道噪声对信号的干扰。
※伪随机序列进行扰码
※奇偶校验码
※卷积交织码
※里德-所罗门码
※……..
一、数字电视原理与DVB系统
二、MPEG-2 & MPEG-2 system
下图是系统将多个基本流规范成单一数据流的一个复用与解复用流程:
原始视频 原始音频
数据
MPEG-2 视频
编码器
MPEG-2 音频
编码器
时钟 & 控制
复 数字通道 用 器 单一的TS流
解 复 用 器
或者PS流
MPEG-2 视频
解码器
MPEG-2 音频
解码器
3、什么是DVB系统(Digital Video Broadcasting system)?
DVB,“数字视频广播”(Digital Video Broadcasting)的缩写, 是一 种国际承认的数字电视标准。该标准是由欧洲电信标准化组织(ETSI)、欧 洲电子标准化组织(CENELEC)和欧洲广播联盟(EBU) 联合组成的“联 合专家组”(Joint Technical Committee, JTC)发起的。
DTS是解码时间标签,用于规定解码端何时对携带该标签的数据流进行解码; PTS是显示时间标签,用于规定解码端何时将携带该标签的数据流进行显示;
MPEG-2 system主要的任务有:
1)规定以包方式传输数据的协议(最终形成的TS流或者PS流是由TS包或PS 包组成的);
2)为收发两端数据流同步创造条件(PCR、PTS、DTS); 3)确定将多个数据流合并和分离(即复用和解复用)的原则; 4)提供一种进行加密数据传输的可能性。
时钟 & 控制
还原视频 还原音频
数据
编码端
解码端
二、MPEG-2 & MPEG-2 system
下图是在MPEG-2 系统中编码端实现单一码流的详细过程:
PS流主要用于相对无错的环境下的传输与存储,如DVD
视频 编码器
ES PES打包器 视频 PES
PS

音频 编码器
ES PES打包器 音频 PES
相关文档
最新文档