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 软件不能正确解码,图像出现马赛克等现象。

TR101 290监测报告

TR101 290监测报告

[ts码流分析] ETSI TR101 290监测的三种级别错误一、码流分析常见错误现象对于码流分析仪所提供ETSI TR101 290监测的三种级别错误,接收端将会出现如下现象。

二、TR101-290: DVB 系统测量标准TR101-290: DVB 系统测量标准。

TR 101-290 定义的三个优先级,是码流监测的一项主要内容。

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

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

PSI/SI: 数字电视业务信息,由PSI和SI两部分构成。

PSI是MPEG-2规定的,它由PAT、PMT、CAT和NIT 4个表构成,其中PAT、PMT表最为重要。

SI是DVB标准规定的,它由BAT、SDT、EIT、RST、TDT、TOT、ST、SIT和DIT 9个表构成,其中 BAT、SDT、EIT 和 TDT 是强制性的。

PSI/SI 由“表”和“描述符”构成。

表是PSI/SI 的基本结构,针对特定用途,PSI/SI 中规定了一系列表来实现它;表由变量和描述符组成。

描述符提供了更多的描述功能。

星座图: 星座显示是矢量示波器显示的数字等价形式,它可显示 QAM 信号的同相(I)分量和正交(Q)分量。

符号是一个特定调制系统中所传输的最小信息成分。

对于 QAM-64,一个符号代表 6 个位,在图上绘制为一个点。

BER位误码率:位误码率是发生误码的位数与传输的总位数之比。

MER:调制误差比, MER 将接收符号(代表调制图案中的一个数字值)的实际位置与其理想位置进行比较。

当信号质量降低时,接收符号距离理想位置更远,MER 测量值将会减小。

EVM:误差矢量幅度, EVM测量类似于 MER,但表达形式不同。

EVM 表达为 RMS 误差矢量幅度与最大符号幅度的百分比值。

信号缺陷增加时,EVM 将会增大,而 MER 则会减小。

EVM 是在IQ(同相与正交)星座图上检测到的载波与其理论上的准确位置之间的距离,是“误差信号矢量”与“最大信号幅度”之比,表达为 RMS 百分比值。

ps流与ts流

ps流与ts流

ps流与ts流在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream)。

据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS)和节目流(PS:ProgramStream)TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。

PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。

TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。

而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。

因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流如DVD等等。

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

简单说就是ps流(主要用在DVD上)如是中间丢了一断码流,后面的都没法播了;而TS流(DVB-T,DMB-TH 等)如果断了码流,后面的随时可以再开始解码怎么看都行。

DVB-T,DVB-H,DMB-TH 主要指的是调制解调(信道编码和解码)方式为COFDM,信源编解码采用的都是MPEG-2,TS流。

目前地面波数字电视标准中只有日本的ISDB 采用MPEG-4(H.264)编解码。

清晰度方面,DVB-T,DMB-TH标准都可以达到高清标准,DVB-H主要面向手持设备,接收终端的解析度有限。

ps码流:dvd等本地文件ts码流:rtp网络传输等====================================================pes,ts,psts流是由很多不同种类的包所组成的,这些数据包都是188个字节大小,这188个字节包含两部分,包头和负载,包头包括同步信息,包信息等等,而负载则是传输的数据,而这些负载则可以组成PES流或者私有流等等数据流.举例说,一个TS流包括100个包,其中PSI信息包占20个,PES数据包80个,此TS流中只有一套节目流,不含有私有流,所以从这80个PES包中的负载连接在一起,就是2个PES流(视频,音频),如果每个PES 包的负载长度为100字节,则这两个PES流一共长度为8000个字节.假设其中视频的PES流长度为6000字节.则视频的6000字节的PES流,是由PES包组成的.PES包没有固定的长度,而是由包头部的数据给出.而PS也是类似TS流分解的方式,逆向的由PES包封装成包,其中要添加PACKET_HEAD,SYSTEM_HEAD等信息.所以上次所做的程序,并不是TS->PS的转换,而是从一个复杂的TS流中,过滤去一套节目,构造出一个简单的TS流的过程.mpeg-ts,mpeg-ps的转换mpeg2文件都是以数据包传递的,同样都是188个字节为一个包,但是作为传输流和节目流,包的组织结构还是不太一样的,作为传输流来说,其包含的包的种类比较多(其实不是包的种类,而是包含不同用途的数据的种类比较多),比如有PID为0x0000的PAT,EIT,TDT,TOT,还有PMT,等等不同的表或包.而节目流所包含的就比较少,只要包含PAT,PMT,以及包含音频,视频的PES包就可以了.所以在TS,PS的转换中,TS->PS的转换比较简单,只要去掉相对没有作用的包,在修改一下PAT,PMT表就可以了.例如现在我所做的DVB-T的MPEG2存储,就是先得到MPEG2压缩的数据包(完整的包,包含同步等等所有信息,共188个字节),其中包含音频,视频两种数据包(两者以PID不同,相区分).那么作为PS流存储时,就要虚构出新的PAT,PMT表假如到PS流中,其中PAT,PMT中需要修改的就是PMT中指向音频,视频流的PID值必须是要存储的音频,视频数据包的PID.这样就完成了TS->PS的转换.简言之:先对TS进行过滤,保留要存储的节目所对应的音频,视频流,删除所有其他的包.然后虚构一个新的PAT,PMT表,其中音频,视频流的指针必须指向存储的音,视频流的PID.这样就完成了转换.问题:1.音频,视频同步问题,这两个包应该以什么样的比例交叉传输呢?也就是多少个视频包中间发送一个音频包呢?如果这个比例控制不好,那么就容易造成音,视频不同步.2.对于我们所虚构的PAT,PMT表应该以什么样的频率发送呢?也就是说发送多少PES包后,发送一次PSI包呢?这个问题似乎影响不大.好象还没有出现播放时的问题.3.我现在所采用的这种做法,虽然解决了存储,然后播放的问题,但是似乎并没有实现TS->PS的转换,实现的是对TS流的过滤,即是把一个含有多套节目的TS流,转换成一个只含有一套节目的TS流,不知道这样说对不对?4.还有一个主要问题就是对于TS流中传输PES信息的包来说,其负载信息中的数据,如何组成PES流的呢?应该是通过包头部分的控制信息来明确的,还的好好看看文档.。

码流分析仪使用及工作中盒子出现的故障解决思路

码流分析仪使用及工作中盒子出现的故障解决思路

检查码流
(使用 Tsr.exe )
使用程序Tsr.exe打开刚才所录制文件,如果出现类似下图的 显示,则表示录制的码流是正确的TS流:
COSHIP ELECTRONICS
检 查 码 流(使用Tsr.exe)
如果录制的码流不是是正确的TS流文件,则提示如下图:
COSHIP ELECTRONICS
以上方法对标清信号和高清信号适用
COSHIP ELECTRONICS
COSHIP ELECTRONICS
录制设置
设置所录制的文件大小。如下图:
COSHIP ELECTRONICS
录制码流
设置录制的文件名,点击红色的录制按钮即可开始录制。 如下图:
COSHIP ELECTRONICS
二、检查码流
COSHIP ELECTRONICS
检查码流

录制完毕后要检查所录码流是否标准的 TS 流文件
COSHIP ELECTRONICS
检查码流
(使用蓝拓扑记录器)
如果录制的码流不是 是正确的TS流文件, 则显示如右图:
COSHIP ELECTRONICS
检查码流
(使用蓝拓扑发生器)
双击桌面上的“蓝拓扑发生器”图标,打开刚才录制的文件。
COSHIP ELECTRONICS
(使用蓝拓扑发生器)
使用“蓝拓扑记录器”检查(主要方法)


使用“蓝拓扑发生器”检查(主要方法)
使用程序“tsr.exe”检查(备用方法)

COSHIP ELECTRONICS
检查码流
(使用蓝拓扑记录器)
选择“控制”菜单中的“PSI”分析,如下图:
COSHIP ELECTRONICS

码流分析

码流分析

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错误 则不能正确接收。

TR101-290三级错误简介

TR101-290三级错误简介

TR101-290: DVB 系统测量标准。

在数字电视码流分析里TR 101-290 定义的三个优先级,是码流监测的一项主要内容。

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

等级标准根据DVB最新的TR101290测试标准将DVB/MPEG-2 TS流的测试错误指示分为3个等级,第一等级是可正确解码所必须的几个参数;第二等级是达到同步后可连续工作必须的参数和需要周期监测的参数;第三等级是依赖于应用的几个参数第一级共6种错误,包括:同步丢失错误、同步字节错误、PAT 错误、连续计数错误、PMT错误及PID错误。

(1)传送码流同步丢失:连续检测到连续5 个正常同步视为同步,连续检测到2 个以上不正确同步则为同步丢失错误。

传输流失去同步,标志着传输过程中会有一部分数据丢失,直接影响解码后的画面的质量。

(2)同步字节错误:同步字节值不是0X47。

同步字节错误和同步丢失错误的区别在于同步字节错误传输数据仍是188或204 包长,但同步字头的0X47被其他数字代替。

这表明传输的部分数据有错误,严重时会导致解码器解不出信号。

(3)PAT 错误:标识节目相关表PAT 的PID 为0x0000,PAT 错误包括标识PAT 的PID 没有至少0.5 s出现一次,或者PID为0x0000 的包中无内容,或者PID为0x0000 的包的包头中的加密控制段不为0。

PAT 丢失或被加密,则解码器无法搜索到相应节目;PAT 超时,解码器工作时间延。

(4)连续计数错误:TS包头中的连续计数器是为了随着每个具有相同PID的TS包的增加而增加,为解码器确定正确的解码顺序。

TS包头连续计数不正确,表明当前传输流有丢包、包重叠、包顺序错现象,会导致解码器不能正确解码。

(5)PMT 错误:节目映射表PMT 标识并指示了组成每路业务的流的位置,及每路业务的节目时钟参考(PCR)字段的位置。

PMT 错误包括标识PMT 的PID 没有达到至少0.5 s 出现一次,或者所有包含PMT 表的PID的包的包头中的加密控制段不为0。

[ts码流分析] ETSI TR101 290监测的三种级别错误-推荐下载

[ts码流分析] ETSI TR101 290监测的三种级别错误-推荐下载

[ts 码流分析] ETSI TR101 290监测的三种级别错误对于码流分析仪所提供ETSI TR101 290监测的三种级别错误,接收端将会出现如下现象。

级别错误类型接收端现象同步丢失错黑屏、静帧和马赛克、画面不流畅现象同步字节错黑屏、静帧和马赛克、画面不流畅现象PAT 错误搜索不到节目或节目搜索错误连续计数错马赛克PMT 间隔错误搜索不到节目或节目搜索错误PMT 加扰错误搜索不到节目或节目搜索错误一级错误PID 错误黑屏、静帧、马赛克等所有异常现象传送错误黑屏、静帧和马赛克、画面不流畅现象CRC 错误黑屏、静帧和马赛克、画面不流畅现象PCR 间隔错误视音频不同步或图象颜色丢失PCR 非连续标志错视音频不同步或图象颜色丢失PCR 抖动错误视音频不同步或图象颜色丢失PTS 错误音视频不同步TS 包加扰错只对加扰节目有影响,为轻微错误二级错误CAT 错误无法正确处理CA 信息,为轻微错误NIT ID 错误NIT 间隔错误NIT 其他错误SI 重复率错缓冲器错非指定PID 错SDT ID 错SDT 当前间隔错SDT 其他间隔错EIT ID 错EIT 当前间隔错EIT 其他间隔错EIT PF 错RST 错误TDT 错误空缓冲器错误三级错误数据延迟错误无异常现象,码流分析仪的三级错误为轻微错误。

(1)传送码流同步丢失:连续检测到连续 5 个正常同步视为同步,连续检测到 2 个以上不正确同步则为同步丢失错误。

传输流失去同步,标志着传输过程中会有一部分数据丢失,直接影响解码后的画面的质量。

(2)同步字节错误:同步字节值不是 0X47。

同步字节错误和同步丢失错误的区别在于同步字节错误传输数据仍是 188或 204 包长,但同步字头的 0X47被其他数字代替。

这表明传输的部分数据有错误,严重时会导致解码器解不出信号。

(3)PAT 错误:标识节目相关表 PAT 的 PID 为 0x0000,PAT 错误包括标识 PAT 的 PID 没有至少 0.5 s出现一次,或者 PID为 0x0000 的包中无内容,或者 PID为 0x0000 的包的包头中的加密控制段不为 0。

中央地面数字电视单频网探究

中央地面数字电视单频网探究

中央地面数字电视单频网探究作者:甘杰黄盈鑫卢进汉来源:《卫星电视与宽带多媒体》2024年第01期【摘要】700兆赫频率迁移工作完成后,广西全区广播电视无线发射台站仍保持多频网的播出模式,部分地面数字电视信号覆盖重叠地区出现了比较明显的DTMB信号同频干扰,导致当地的DTMB信号无法正常接收,且收到多起关于地面数字电视无法收看的投诉。

随着单频网建设工作的展开,这些情况得到明显的改善,但单频网对设备以及信號源有更高的要求。

本文以中央地面数字电视单频网为例,简述了地面数字电视单频网的基本原理、中央节目信源的传输方案以及台站端信源方案,结合平时工作,总结出一些常见故障的分析和处理方法。

【关键词】地面数字电视;单频网;故障中图分类号:TN92 文献标识码:A DOI:10.12246/j.issn.1673-0348.2024.01.0061. 地面数字电视单频网简述由多台位于不同发射点、同频且同步播出的地面数字电视发射机发射的射频信号组成的网络称为地面数字电视单频网[1-2]。

网络中的各子发射机为了实现对特定区域内的有效覆盖,必须以相同的频率、在相同的时刻、发射相同的已调射频信号。

单频网技术不仅使广播电视频谱有效利用率得到很大的提升,而且网络内发射设备的功率效率都得到了充分的利用,另外单频网有更加平滑的覆盖面,各级发射站台可以根据实际情况调整和增加覆盖面,可对覆盖盲区进行补点覆盖等[3]。

同时单频网也存在一定的缺点和不足,如不能像多频网一样对覆盖区的某一部分提供相关的业务支持,组网技术所需要的设备比较多、建设成本要高出多频网,网内各子发射台站的覆盖距离有限,容易会因超出接收机多径信号处理范围而受其他网络干扰等。

2. 中央节目传输方案2.1 总局中央节目信号总体传输方案中央广播电视节目无线数字化覆盖工程总体方案采用了基于卫星传输地面数字电视单频网的技术方案。

如图1所示,该方案中,中央电视节目在进行编码复用后分别通过卫星通道与国干网光纤传输至台站,卫星信号与国干网信号采用了同一套编码复用系统,节目内容基本一致,但是两组信号在后续的传输适配方案不一致,国干网信号未进行加扰加密,并且未进行单频网适配,与卫星信号码流不完全一致,无法实现单频网信号的相互备份。

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:取消马塞克功能,设置后生效.。

TS码流错误及接收端现象

TS码流错误及接收端现象

级别错误类型接收端现象一级错误同步丢失错黑屏、静帧和马赛克、画面不流畅现象同步字节错黑屏、静帧和马赛克、画面不流畅现象PAT错误搜索不到节目或节目搜索错误连续计数错马赛克PMT间隔错误搜索不到节目或节目搜索错误PMT加扰错误搜索不到节目或节目搜索错误PID错误黑屏、静帧、马赛克等所有异常现象二级错误传送错误黑屏、静帧和马赛克、画面不流畅现象CRC错误黑屏、静帧和马赛克、画面不流畅现象PCR间隔错误视音频不同步或图象颜色丢失PCR非连续标志错视音频不同步或图象颜色丢失PCR抖动错误视音频不同步或图象颜色丢失PTS错误音视频不同步TS包加扰错只对加扰节目有影响,为轻微错误CAT错误无法正确处理CA信息,为轻微错误三级错误NIT ID 错误无异常现象,码流分析仪的三级错误为轻微错误。

NIT间隔错误NIT其他错误SI重复率错缓冲器错非指定PID错SDT ID错SDT当前间隔错SDT其他间隔错EIT ID 错EIT当前间隔错EIT其他间隔错EIT PF错RST 错误TDT错误空缓冲器错误数据延迟错误第一等级是可正确解码所必须的几个参数;第二等级是达到同步后可连续工作必须的参数和需要周期监测的参数;第三等级是依赖于应用的几个参数第一级共6种错误,包括:同步丢失错误、同步字节错误、PAT 错误、连续计数错误、PMT错误及PID 错误。

(1)传送码流同步丢失:连续检测到连续5 个正常同步视为同步,连续检测到2 个以上不正确同步则为同步丢失错误。

传输流失去同步,标志着传输过程中会有一部分数据丢失,直接影响解码后的画面的质量。

(2)同步字节错误:同步字节值不是0X47。

同步字节错误和同步丢失错误的区别在于同步字节错误传输数据仍是188或204 包长,但同步字头的0X47被其他数字代替。

这表明传输的部分数据有错误,严重时会导致解码器解不出信号。

(3)PAT 错误:标识节目相关表PAT 的PID 为0x0000,PAT 错误包括标识PAT 的PID 没有至少0.5 s出现一次,或者PID为0x0000 的包中无内容,或者PID为0x0000 的包的包头中的加密控制段不为0。

传输设备误码问题处理经验

传输设备误码问题处理经验

传输设备误码问题处理经验误码问题是传输设备日常维护过程中经常碰到的问题。

现在把误码问题处理的一些经验与大家分享。

一、误码检测机理光同步传输设备中按分段分层的思想对误码进行全面系统的检测。

具体有B1再生段误码、B2复用段误码、B3高阶通道误码、V5低阶通道误码。

它们之间的关系可以用图1表示。

图1 误码检测关系及检测位置图中RST、MST、HPT、LPT分别表示再生段终端、复用段终端、高阶通道终端和低阶通道终端。

B1、B2、B3以及V5误码分别在这些终端间进行监测。

由图1可以看出,如果只是低阶通道有误码,则高阶通道、复用段和再生段将监测不到该误码;如果再生段有误码,则将导致复用段、高阶通道、低阶通道出现误码。

举个例子说明:如下图2所示的一条链性组网,如果网元2收网元3间的光纤衰减过大,产生光路误码,则网元2上和网元3相连的光板将检测到B1再生段误码和B2再生段误码,那么受此影响,经过该段光路的所有高阶、低阶业务,也将在相应站点的相应单板的相应通道上检测到误码,这就是高阶影响低阶。

反之,如果只是网元1的一块2M电路板(如PD1)有问题,则只会在对应的2M通道上监测到误码,光路上和各高阶通道没有误码。

图2 链型组网总结一下各误码间的关系:一般来说,有高阶误码则会有低阶误码。

例如,如果有B1误码,一般就会有B2、B3和V5误码;反之,有低阶误码则不一定有高阶误码。

如有V5误码,在不一定会有B3、B2和B1误码。

由于高阶误码会导致低阶误码,因此我们在处理误码问题时,应按照先高阶后低阶的顺序来进行处理。

二、引起误码的常见原因一般来说,以下一些情况会引起误码:(1)线路收光功率异常(过高或过低),会引起再生段误码及其它低阶误码(2)交叉板或时钟板故障,经常会引起多块线路板都有高阶通道出现误码(3)线路板故障,有可能引起再生段或复用段误码(4)支路板故障,有可能引起低阶通道误码(5)设备温度过高,也会造成各种误码的出现总结一下,可把引起误码的原因分为两大类:1. 外部原因1)光纤性能劣化、损耗过高。

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)的基础知识

传送流(TS)的基础知识数字电视的TS包和TS流的组成和功能综合考虑⼏下⼏个因素:(1)包的长度不能过短,否则包头开销所占⽐例过⼤,导致传输效率下降(2)包的长度不能过长,否则在丢失同步的情况下恢复同步的周期过长,导致较多的信息丢失(3)其他环境相适配,如纠错编码,宽带⽹等。

TS包按功能分为链接头,适配域,净荷。

链接头的长度固定,4个字节适配域的长度从0字节到184字节可变,可以没有,也可以扩展到整个TS包净荷数据的长度从0字节到184字节可变。

整个TS流是由许多长度为188字节的TS包周期性的排列⽽形成的。

ts包头包含4个字节的内容,主要负责TS包的同步、各种ES流的表⽰、TS包传输差错的检测和条件接收等功能。

(1)包同步(syn_bate)是包中的第⼀个字节,TS包以固定的8bit的同步字节开始,所有的TS传送包,同步字都是唯⼀的OX47,⽤于建⽴发送端和接收端包的同步。

(2)包差错指⽰(transport_error_indicator)⽤于从解码器向分接器指⽰传输误码。

若这个⽐特被设置,表⽰此TS包中所携带的净荷信息有错误,⽆法使⽤。

(3)净荷单元起始指⽰(payload_uint_start_indicator)标志PES包头以及包含节⽬特定信息的表(PMT,PAT)的头是否出现在该包中,在失步后的重新同步中起着重要的作⽤。

(4)传送优先级(transport_priority)⽤于表⽰包中含有重要数据,应予以优先传送。

(6)加扰控制(transport_scrambling_control)传送信息通过加⼊扰码来加密,各个基本码流可以独⽴进⾏加扰。

加扰控制字段说明TS包中的净荷数据是否加扰。

如果加扰,标志出解扰的密匙。

(5)包标识符PID(pid)PID是识别TS包的重要参数,⽤来识别TS包所承载的数据。

在TS码流⽣成时,每⼀类业务(视频,⾳频,数据)的基本码流均被赋予⼀个不同的识别号PID,解码器借助于PID判断某⼀个TS包属于哪⼀类业务的基本码流。

MPEG2-TS流文件的简介

MPEG2-TS流文件的简介

MPEG2-TS流文件的简介引用自/question/5502243.html随着从HDTV录制的高清节目在网上的流传,烧友们现在对TS这个名词大概已经不陌生了,但随之而来就是如何播放、如何添加字幕等等的一系列问题,本文将重点介绍一下这方面的应用操作。

先来简要介绍一下什么是MPEG2-TS吧。

MPEG2格式大家都通过对DVD的接触而多多少少了解了一些,DVD节目中的MPEG2格式,确切地说是MPEG2-PS,全称是Program Stream,而TS的全称则是Transport Stream。

MPEG2-PS主要应用于存储的具有固定时长的节目,如DVD电影,而MPEG-TS则主要应用于实时传送的节目,比如实时广播的电视节目。

这两种格式的主要区别是什么呢?简单地打个比喻说,你将DVD上的VOB文件的前面一截cut 掉(或者干脆就是数据损坏),那么就会导致整个文件无法解码了,而电视节目是你任何时候打开电视机都能解码(收看)的,所以,MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

【MPEG2-TS流文件的简单回放】有一些播放器软件可以直接播放MPEG2-TS流,比如:=> 1.WinDVD 5.x=> 2.VLC Media Player=> 3.Elecard Player等等。

播放前,先将TS流文件的后缀名改为.mpg,以便播放器可以识别它是一个MPEG文件,否则一些\"以貌取人\"的播放器可能会拒绝提供服务。

修改了后缀名后,直接用播放器打开文件播放即可。

但是需要通过VOBSub外挂字幕的朋友,可能很快就会发现,在WinDVD里无法对MPEG 文件加载字幕,这是因为WinDVD在对MPEG文件解码的时候,用了内部的解码流程,而没有按照微软的DirectShow标准去搭建解码框架,这样自然就无法触发VOBSub这些基于DirectShow标准的外挂控件了。

MPEG-2TS码流编辑的原理及其应用

MPEG-2TS码流编辑的原理及其应用

MPEG-2TS码流编辑的原理及其应用1. 简介MPEG-2TS(MPEG-2 Transport Stream)是一种应用于数字视频和音频传输的标准格式。

它被广泛应用于数字电视、高清视频广播、视频录制以及流媒体等领域。

MPEG-2TS码流编辑是对MPEG-2TS码流进行剪辑、合并、分离等操作的过程。

本文将介绍MPEG-2TS码流编辑的原理及其应用。

2. MPEG-2TS码流格式MPEG-2TS码流是由一系列的同步的MPEG-2TS包组成。

每个TS包的长度为188字节,其中包括4字节的头部、184字节的有效数据以及4字节的误码检测。

TS包可以携带视频、音频、字幕、导航信息等多种类型的数据。

通过解析TS包的头部信息,可以确定包中数据的类型及其位置。

3. MPEG-2TS码流编辑原理MPEG-2TS码流编辑的原理是通过对TS包进行增删改的操作来实现对码流的编辑。

常见的编辑操作包括剪辑、合并、分离等。

3.1 剪辑剪辑是指从原始的MPEG-2TS码流中选择需要的部分进行提取。

通过解析TS包的头部信息,可以确定需要的起始和结束位置,并将这些TS包提取出来,生成一个新的MPEG-2TS码流。

剪辑操作常用于视频广播中对广告等内容的剪辑。

3.2 合并合并是指将多个MPEG-2TS码流合并成一个新的码流。

通过解析每个TS包的头部信息,可以确定TS包的顺序和对应的PID(Packet Identifier),然后将不同码流的TS包按照顺序进行合并。

合并操作常用于视频编辑软件中对多个视频文件的合并。

3.3 分离分离是指将一个MPEG-2TS码流中的不同PID所对应的TS包分离出来。

通过解析每个TS包的头部信息,可以确定TS包所属的PID,然后将同一PID的TS包提取出来,生成一个新的码流。

分离操作常用于从视频录制设备中对视频、音频等进行分离。

4. MPEG-2TS码流编辑的应用MPEG-2TS码流编辑在多个领域中得到广泛应用。

异常码流分析及应对措施

异常码流分析及应对措施

在图1中,视、音频和数据进入编码器按照一定的格式进行编码,输出视频ES流、音频ES流、数据ES流。

这些基本码流(ES流)还不能进行传输和发送,还需要对视频ES流、音频ES流和其他数据ES流经过打包器打包并插入包头等信息,打成一个又一个视频PES包、音频PES包和数据PES 包,这些PES包称为打包基本码流或打包基本流PES,PES包的结构长度不是固定的,是可以变化的。

PES包的包头中包含当前PES包重要信息,这个信息用来识别PES包是视频还是音频数据。

在PES包中还须插入显示时间标签(PTS)、解码时间标签(DTS),便于解码器正确解码和显示相应的内系统复用是为了便于存储和传送码流。

PS流称为节目流,它是用来传输或保存一套节目的编码数据,它将一个或几个打包的视频或音频和数据的PES 流同一个基准时钟(PCR)送入节目复用器进行时分复用,按一定的格式先后顺序组成单一的数据码流,在这些PES流前加上解码时所需的包头信息。

为了进行纠错,在包的后部加上循环冗余检验码(CRC)。

PS流包的长度是可变的,抗误码能力低,适用于较小环境,传输单套节目的数据存储、制作等。

TS流由一个或多个PES包组成,这些PES流可以只有一个公共的时钟基准(PCR),也可以是几个独立的时钟基准。

TS码流由TS组成,包的图1 MPEG-2系统复用原理结构框图图2 TS流结构示意图2 MPEG-2节目特定信息表在数字电视系统中,一个频道对应一个TS码流。

如果在TS码流中没有引导信息,解码系统无法正常解码,为此MPEG-2专门定义了节目特定信息PSI,用于为接收机提供节目选择和控制的信息,自动设置和引导接收进行解码,PSI通过复用器复用时插入到TS码流中,用PID进行识别。

MPEG-2标准规定了几种PSI表:节目关映射表(PMT:Program Map Table)描述单路节目的复用信息;节目关联表(PAT:Program Association Table)描述多路节目的复用信息;网络信息表(NIT:Network Information Table)描述多组传送流和传统输网络的相关信息;条件接收表(CAT:Conditional Access Table)描述条件接收系统的相关信息。

ts取传入值的报错

ts取传入值的报错

ts取传入值的报错typescript是一种静态类型检查的编程语言,对于类型不同的变量有着不同的检查策略。

由于ts是被编译成js的,因此出现了使用ts编写代码但运行时出现报错的情况。

其中常见的一种报错就是ts取传入值的报错。

下面将分步骤阐述如何解决这一问题。

第一步:理解类型检查错误在使用ts编写代码的过程中,类型检查在一定程度上加强了代码的可靠性。

虽然这是一种好事,但是有时候会出现ts无法识别某些类型的情况,这就会导致ts在执行时放弃类型检查,从而使程序报错。

如果程序报错,那么我们就得考虑从哪里入手去进行修改。

第二步:排查出问题所在ts取传入值的报错通常是因为在调用函数的时候,传入的参数类型和函数中定义的参数类型不一致造成的。

要解决这个问题,我们首先要找到哪个函数出了问题。

方法是,在使用工具进行打开和编辑代码时,击打F12,然后定位到报错的行,再看看报错信息是什么。

如果是"'xxx' 未定义"之类的信息,那么就说明您还需要进一步查找该函数所在的文件。

而如果看到的错误信息是"类型不匹配"之类的信息,那么您可以在函数定义的参数类型上做出修改。

第三步:修改参数类型在排查出哪个函数出了问题之后,我们就可以通过作出一些简单的修改来解决问题了。

如果报错是因为传入的参数类型与函数中定义的参数类型不一致造成的话,我们只需要将函数定义的参数类型修改为符合传入参数类型的类型就可以了。

例如,在下面的例子中,add函数是将两个数字相加,传入的参数分别是x和y:function add(x: number, y: number): number {return x + y;}如果我们将参数x或y的类型修改为number或者其他和其一致的类型,那么就可以解决ts取传入值的报错问题了。

总结在处理ts取传入值的报错问题方面,我们要首先理解类型检查错误,再进行排查找出出现问题的函数以及哪里出了问题,最后修改函数定义的参数类型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

级别错误类型接收端现象
一级错误同步丢失错黑屏、静帧和马赛克、画面不流畅现象同步字节错黑屏、静帧和马赛克、画面不流畅现象PAT错误搜索不到节目或节目搜索错误
连续计数错马赛克
PMT间隔错误搜索不到节目或节目搜索错误
PMT加扰错误搜索不到节目或节目搜索错误
PID错误黑屏、静帧、马赛克等所有异常现象
二级错误传送错误黑屏、静帧和马赛克、画面不流畅现象CRC错误黑屏、静帧和马赛克、画面不流畅现象PCR间隔错误视音频不同步或图象颜色丢失
PCR非连续标志错视音频不同步或图象颜色丢失
PCR抖动错误视音频不同步或图象颜色丢失
PTS错误音视频不同步
TS包加扰错只对加扰节目有影响,为轻微错误CAT错误无法正确处理CA信息,为轻微错误
三级错误NIT ID 错误无异常现象,码流分析仪的三级错误为轻
微错误。

NIT间隔错误
NIT其他错误
SI重复率错
缓冲器错
非指定PID错
SDT ID错
SDT当前间隔错
SDT其他间隔错
EIT ID 错
EIT当前间隔错
EIT其他间隔错
EIT PF错
RST 错误
TDT错误
空缓冲器错误
数据延迟错误
第一等级是可正确解码所必须的几个参数;
第二等级是达到同步后可连续工作必须的参数和需要周期监测的参数;
第三等级是依赖于应用的几个参数
第一级共6种错误,包括:同步丢失错误、同步字节错误、PAT 错误、连续计数错误、PMT错误及PID 错误。

(1)传送码流同步丢失:连续检测到连续5 个正常同步视为同步,连续检测到2 个以上不正确同步则为同步丢失错误。

传输流失去同步,标志着传输过程中会有一部分数据丢失,直接影响解码后的画面的质量。

(2)同步字节错误:同步字节值不是0X47。

同步字节错误和同步丢失错误的区别在于同步字节错误传输数据仍是188或204 包长,但同步字头的0X47被其他数字代替。

这表明传输的部分数据有错误,严重时会导致解码器解不出信号。

(3)PAT 错误:标识节目相关表PAT 的PID 为0x0000,PAT 错误包括标识PAT 的PID 没有至少0.5 s出现一次,或者PID为0x0000 的包中无内容,或者PID为0x0000 的包的包头中的加密控制段不为0。

PAT 丢失或被加密,则解码器无法搜索到相应节目;PAT 超时,解码器工作时间延。

(4)连续计数错误:TS包头中的连续计数器是为了随着每个具有相同PID的TS包的增加而增加,为解码器确定正确的解码顺序。

TS包头连续计数不正确,表明当前传输流有丢包、包重叠、包顺序错现象,会导致解码器不能正确解码。

(5)PMT 错误:节目映射表PMT 标识并指示了组成每路业务的流的位置,及每路业务的节目时钟参考(PCR)字段的位置。

PMT错误包括标识PMT 的PID 没有达到至少0.5 s 出现一次,或者所有包含PMT 表的PID的包的包头中的加密控制段不为0。

PMT被加密,则解码器无法搜索到相应节目;PMT 超时,影响解码器切换节目时间。

(6)PID错误:检查是否每一个PID都有码流,没有PID就不能完成该路业务的解码。

第二级共 6 种错误,包括:传输错误、CRC 错误、PCR 间隔错误、PCR 抖动错误、PTS 错误及CAT 错误。

(1)传输错误:TS包头中的传送包错误指示为“1”,表示在相关的传送包中至少有1 个不可纠正的错误位,只有在错误被纠正之后,该位才能被重新置0。

而一旦有传送包错,就不再从错包中得出其他错误指示。

(2)CRC 错误:在PSI和SI的各种表中出现循环冗余检测码CRC 出错,说明这些表中的信息有错,这时不再从出现错误的表中得出其他错误信息
(3)PCR 间隔错误:PCR 用于恢复接收端解码本地的27 MHz 系统时钟,如果在没有特别指明的情况下,PCR 不连续发送时间一次超过100 ms 或PCR 整个发送间隔超过40 ms,则导致接收端时钟抖动或者漂移,影响画面显示时间。

(4)PCR 抖动错误:PCR 的精度必须高于500 ns 或PCR 抖动量不得大于±500 ns。

PCR抖动过大,会影响到解码时钟抖动甚至失锁。

(5)PTS错误:播出时间标记PTS重复发送时间大于70 ms,则对帧图像正确显示产生影响。

PTS只有在TS未加扰时方能接收。

(6)CAT 错误:TS 包头中的加密控制段不为0,但却没有相应的PID 为0x0001 的条件接收表CAT,或在PID 为0x0001 的包中发现非CAT 表。

CAT 表将指出授权管理信息EMM包的PID并控制接收机的正确接收,如果CAT表不正确,就不能正确接收。

第三级共10种错误,包括:NIT 错误、SI重复率错误、缓冲器错误、非指定PID错误、SDT错误、EIT 错误、RST 错误、TDT 错误、空缓冲器错误及数据延迟错误。

第三等级错误并非是TS传输流的致命错误,但会影响一些具体应用的正确实施。

NIT 标识错误或传输超时,会导致解码器无法正确显示网络状态信息。

SDT 标识错误或传输超时,会导致解码器无法正确显示信道节目的信息。

EIT 标识错误或传输超时,会导致解码器无法正确显示每套节目的相关服务信息。

相关文档
最新文档