0 引言

目前,我国数字电视的信道传输的三种主要传输方式都有了统一明确的国家标准。其主要差别是信道编码、调制方法,但视频和音频信源处理和系统层复用都是以MPEG-2为基础的编码方案。MPEG-2标准自制定以来,已经成为数字电视领域中系统层的普遍标准。能够熟悉MPEG-2传输流码流语法结构,并运用分析工具对系统进行常规的检测分析,为快速确认系统故障,从而排除故障保证系统正常运行,对于广大工程技术人员十分必要。本文介绍MPEG-2传输流的语法结构及复用,及ETR290标准规定的传输码流3级错误检测参数,同时结合码流分析软件对MPEG-2传输流的语法结构作一离线分析。

1.MPEG-2传输流的形成及复用:

MPEG-2标准定义了一个节目中的各部分(如视频、音频和控制数据等)的格式,它也定义了各部分如何形成传输码流,即TS流,这一过程称为复用。MPEG-2规定了两种复用形式,即MPEG-2节目流(PS)和MPEG传输流(TS)

图1 MPEG-2 系统层编码复用示意图

如图1所示:原始的视音频数据流经编码器编码输出压缩后的基本码流ES,它含有解码器所必需的、用于恢复原始视音频的信息。基本码流ES分解打包成PES数据包,每个PES包在复用的过程中被分成固定长度的传输流包(TS Packet)。传输流被设计用于在有噪声发生的存储或传输的环境中,如在DVB广播的传输链路中。

2  MPEG -2 传输流的语法结构:

在进行MPEG-2传输流的码流分析之前,我们有必要了解MPEG-2标准中规定的传输流的语法结构。

2.1 MPEG-2传输流的包结构

每个传输流中包含一系列固定长度为188 Bytes的传输流包(简称为TS包),每个TS包由4 Bytes长的包头和其后的184 Bytes的载荷组成,如图2所示。

在4 Bytes包头中含有以下重要信息:以固定值0x47开始的8bit字段的同步头,其后是几个重要的标志,如“传输错误指示”、“有效负载起始标志”、“传送优先指示”、“PID(Packet identifier)”、“调整字段控制”等。“PID”是13bit的代码,是用于区分不同类型的传输流包(如视频/音频)的重要参数,不同节目的视音频传输包在复用后的MPEG-2传输流中用唯一的PID代码标识。

图2  TS包语法结构示意图

TS流在某些情况下可能需要更多的包头信息,这时就要设置“调整区字段控制字段”来指示包头比特数要多于4 Bytes。图2表示当出现上述情形时,通过调整区字段长度码来指示附加的包头长度。这时调整区字段就紧跟包头,而有效载荷会少于184Bytes以维持恒定的TS包长度。调整区字段中重要的一个码字是PCR码字,用于解码器的系统时钟恢复。

2.2 MPEG-2 传输流的结构

按MPEG-2传输流中复用的节目数量,可分为单节目传输流(SPTS)和多节目传输流(MPTS)。实际在DVB链路中传输的多数情况下,多个SPTS被复用为一个多节目传输流(MPTS)。用户在收看节目时,接收机要在TS流中找到该节目对应PID的TS包。为了帮助用户确定某个PID的TS包所对应的节目,在MPEG-2 TS流中除传送视音频PES数据外,还需要传输一套表信息(PSI ),它们中携带了对TS流中构成每个节目的ES码流的描述,它们在MPEG-2中称为节目专用信息(PSI),包含以下四种信息表。

PAT:节目相关表,列出TS流中描述每个节目(Service)的PMT表的PID值,PAT的PID值固定为0x00。

CAT:条件接收表,如果节目被加扰,可以通过它定义与加扰码流有关的授权控制信息(ECM)和授权管理信息(EMM)的PID值,CAT的PID值总是0x01。

PMT:节目映射表,定义了与一个节目相关视音频码流和其他信息TS包的PID的值。

NIT:网络信息表,包含了传输MPEG复用TS流的网络信息,包括载波频率等,NIT的PID值总是0x10。

图3列出了一条SPTS的码流结构:

视频TS包  音频TS包             PAT表                PMT表                 其他表

图3  PTS的码流结构

每个PSI表分成一个或多个段(Section)来传输,段的长度可变,每个段由一个CRC校验字来确认所传输的表的完整性。PSI表在其所在的TS码流中按一定周期重复传输。为了解复用一个PES包需要的PID,接收机需要先搜索PAT表,它列出了复用的TS流中所有的节目,并从中得到PMT的PID。而PMT表列出了与每个节目相关的PID信息,每个节目对应一个PMT表。此外,DVB还额外增加了其它的描述节目信息的表(SI)。

2.3 MPEG-2 传输流错误监测

根据对MPEG-2和DVB标准以及ETR290标准的研究,将DVB/MPEG-2 TS码流的错误指示分为3个等级:第一等级是正确解码所必需的几个参数;第二等级是达到同步后连续工作所必需的参数和需要周期监测的参数;第三等级是依赖于应用的几个参数,差错优先级分类如下:

第一优先级——导致无法解码的差错(共6个):传输码流同步丢失(TS sync loss);同步字节错误(Sync byte error);节目相关表错误(PAT error);节目映射表错误(PMT error);连续计数错误(Continuity count error);PID错误(PID error)。

第二优先级——对解码损伤性差错(共6个):传送包错误(Transport error);节目时钟参考错误(PCR error);节目时钟参考精度错误(PCR accuracy error);循环冗余检测错误(CRC error);PTS错误(PTS error);条件接收表错误(CAT error)。

第三优先级——不影响可解码性差错(共10个):NIT错误(NIT error);SI重复错误(SI repetition error);缓冲器错误(Buffer error);未引用PID错误(Unreferenced PID);SDT错误(SDT error);EIT错误(EIT error); RST错误(RST error);TDT错误(TDT error);空闲缓冲器错误(Empty buffer error);数据延迟错误(Data delay error)。

错误监测参数的具体含义可参见相关文章,本文不作详细说明。

3.使用软件离线分析TS流的结构:

使用码流分析仪对MPEG-2传送流分析是我们理解其语法结构的很好的入门工具。码流分析既可以对码流进行实时分析,快速排查系统问题点,也可以将部分码流保存成文件,进行离线分析。下我们结合分析软件transport stream analyzer(TSR)对一段录制的TS码流进行离线分析。通过软件打开录制的TS流文件,如图4所示:

图4  TSR码流分析软件界面

图示左侧为按树形目录显示TS流基本结构信息,图中在TS流文件名称下展出两个子目录,我们可分别按Programs和Packets两种方式分析该段TS流的数据,Programs目录下列出了TS流中所传输的全部节目,可以看到,图4中的TS流共有两个节目,将节目再展开,可以显示每个节目的视音频信息,如PID值,右键单击视频或音频信息,在弹出菜单中可以选择查看视音频TS包中的具体数据内容,在软件界面的右侧窗口中显示。

Packet目录下我们还可以按PID了解复用在TS流中传输的所有TS包的信息,包括PSI表以及与加密系统相关的ECM、EMM信息;右击任一PID条目同样可以在弹出菜单中选择查看相应PID的TS包中的十六进制数据内容。我们选择program 1中PID为0x101的视频码流的TS包分析。在右侧的窗口中,我们可以看到这段TS码流中共有34164个PID为0x101的TS包,我们选择第77个包,窗口上部是TS包头中重要信息的摘要,窗口下部是该TS包中完整的188字节的数据内容。

图中第零字节(0x47)到第三个字节(0xb0)是这个TS包的4Bytes长的包头,字节0x47为TS包的同步字节;随后是三个指示符,每个长度为1bit,第一位是传输错误指示符,0表示没有错误;第二位为载荷单元起始指示符为0,表示这个TS包不含有该视频PES包的起始数据;第三位传输优先级指示符为0;随后的13bit长的TS包的PID值,图4中PID值为0x101,为该TS流中节目1的视频码流的PID值;图4中调整区控制码字值为11,表示该TS包中既有调整区又有载荷数据。第四字节0x07到第11字节0x03便是为调整区字段,0x07是调整长度字段的数值,表示该字段后的调整区共有7个字节长,第五字节0x10表示调整区中含有节目时钟参考字段(PCR),共占有6个字节,PCR以两部分字段构成,分别是PCR_base和PCR_extension字段。

紧随调整区PCR字段的字节0x41开始到TS包的最后一个字节0xb5是TS包的载荷字段,图中载荷字段携带着视频PES码流的数据内容。

MPEG-2传输流的码流分析(PS与TS码流)相关推荐

  1. 关于ES、PES、PS以及TS码流

    from:http://blog.csdn.net/huangblog/article/details/8740571 一.基本概念 1)ES   ES--Elementary  Streams  ( ...

  2. Proxy Server源码及分析(TCP Proxy源码 Socket实现端口映射)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014530704/article/d ...

  3. android代码流分析工具,视频码流分析工具(Elecard StreamAnalyzer)下载 v4.0.171116 官方版 - 比克尔下载...

    Elecard StreamAnalyzer是一个专业的视频码流分析工具,拥有码流错误报告.TS错误侦测和基于ETSI TR101-290的分析功能,能够对编码器媒体流进行深入的句法分析,支持H.26 ...

  4. HashMap实现原理和源码详细分析

    HashMap实现原理和源码详细分析 ps:本博客基于Jdk1.8 学习要点: 1.知道HashMap的数据结构 2.了解HashMap中的散列算法 3.知道HashMap中put.remove.ge ...

  5. vboot源码详细分析-1

    最近一直在研究bootloader之vboot,vboot短小精悍,如果只是用来进行系统的引导,而不要提供其他复杂的功能时候,我认为这是绝佳的上选.这里以MINI2440开发板配套的源码进行分析.这个 ...

  6. TS流讲解--什么是ts流

    一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等 ...

  7. RTP协议全解(H264码流和PS流)

    1 视频编码的原理 1.1 一个图像或者一个视频序列进行压缩,产生码流. 对图像的处理即是:帧内预测编码 其预测值P,是由已编码的图像做参考,经运动补偿得到的.预测图像P和当前帧Fn相减,得到两图像的 ...

  8. RTP协议全解(H264码流和PS流)——看完这篇可以毕业

    http://blog.csdn.net/bytxl/article/details/50395427 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1 视频编码的原理 1. ...

  9. IPTV码流分析指标

    针对IPTV码流可以分析如下指标(参考蓝拓扑公司的IPTV码流分析产品) 视频内容质量分析 被动式的视频平均意见分(MOS)测量 实时对所选的IPTV 和VOD 节目进行音视频回放 MPEG PES ...

最新文章

  1. ios iphonex适配
  2. Symbian开发平台的搭建之VC++6.0Carbide C++ 2.0
  3. 前端学习(3154):react-hello-react之脚手架文件介绍
  4. java联合主键_hibernate联合主键映射(注解版)
  5. mysql考勤系统设计函数_Mysql实战之员工考勤系统数据库建立
  6. vs未指定启动文件_高效开发利器之自定义模板文件
  7. html中文本格式化、预格式化、计算机输出标签、address、title、文字方向、著作
  8. getParameter
  9. 小明交友第五次2018.6.24
  10. C++中public,protected,private的区别
  11. Python中第三方库Requests库的高级用法详解
  12. python连接SQLServer数据库,执行给定的查询SQL语句,并返回查询结果数据
  13. Atitit 自然语言与人工语言的语法构建ast的异同点 目录 1. 语言节点gaishu。。 2 1.1. 节点、函数数量大约200个 2 1.2. 关键词节点 是 有 的 3 1.3. 标识符
  14. 一图读懂resnet神经网络
  15. 播放抓取的H263 RTP视频
  16. 【PCB学习笔记】绘制智能车四层板 --- PCB封装库的创建方法及现有封装调用
  17. 毕业设计基于SpringBoot框架的作业查重系统
  18. TOMCAT8 设置 请求超时时间 和 最大连接数
  19. 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法
  20. Microsoft Edge浏览器插件(1)

热门文章

  1. 零基础如何学习PS怎样自学PS
  2. FANUC机器人程序设计
  3. 丰田Mirai燃料电池
  4. IDC:爱数再次蝉联备份一体机市场中国品牌第一
  5. [灯哥开源—四足机器人]程序算法讲解与STM32移植——PA_TROT和PA_WALK讲解和trot步态,walk步态,步态规划
  6. python天天向上每十天休息一天_LeetCode刷题——第十天(python)
  7. Ubuntu20.04安装QQ
  8. JSR296 为 annotation processing 安装 Eclipse : m2e-apt 插件
  9. 国内智能卡杂志的起起落落
  10. 你真的会做小程序按钮吗?看了字节35K前端的样式设计,悟了