数字电视的TS包和TS流的组成和功能

综合考虑几下几个因素:

(1)包的长度不能过短,否则包头开销所占比例过大,

导致传输效率下降

(2)包的长度不能过长,否则在丢失同步的情况下恢复同步的

周期过长,导致较多的信息丢失

(3)其他环境相适配,如纠错编码,宽带网等。

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

•    链接头的长度固定,4个字节

•    适配域的长度从0字节到184字节可变,可以没有,也可以扩展到整个TS包

•    净荷数据的长度从0字节到184字节可变。

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

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

•    (1)包同步

•    是包中的第一个字节,TS包以固定的8bit的同步字节开始,所有的TS传送包,同步字都是唯一的OX47,用于建立发送端和接收端包的同步。

•    (2)包差错指示

•    用于从解码器向分接器指示传输误码。若这个比特被设置,表示此TS包中所携带的净荷信息有错误,无法使用。

•    (3)净荷单元起始指示

•    标志PES包头以及包含节目特定信息的表(PMT,PAT)的头是否出现在该包中,在失步后的重新同步中起着重要的作用。

•    (4)传送优先级

•    用于表示包中含有重要数据,应予以优先传送。

•    6)加扰控制

•    传送信息通过加入扰码来加密,各个基本码流可以独立进行加扰。加扰控制字段说明TS包中的净荷数据是否加扰。如果加扰,标志出解扰的密匙。

•    (5)包标识符PID

•    PID是识别TS包的重要参数,用来识别TS包所承载的数据。在TS码流生成时,每一类业务(视频,音频,数据)的基本码流均被赋予一个不同的识别号PID,解码器借助于PID判断某一个TS包属于哪一类业务的基本码流。

•    (7)适配域控制

•    标志TS包是否有适配域存在,如果存在,在其内部是否有净荷存在。

•    (8)循环计数器

•    用于对传输误码进行检测。在发送端对所有的包都做0-15的循环计数,在接收终端,如发现循环计数器的值有中断,表明数据在传输中有丢失。

•    适配域是一个可变长度的域,它在TS包中是否存在,由适配域控制标识决定。

•    功能:1、同步和定时

•               2、随机进入压缩的码流

•               3、当地节目插入

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

•    每隔一定的传送时间,在TS包适配域中传送系统时钟27MHz的一个采样值给接收机,作为解码器的时钟基准信号,称为节目时钟基准(PCR)。PCR通常每隔100ms至少传送一次。

随机进入压缩的码流

•    在视频码流中存在I帧,B帧,P帧三种编码帧类型,只有I帧编码数据可以独立进行解码。

•    在节目调谐或节目更换时需要随时进入音频或视频,随机进入应该是I帧,在I帧前面的视频序列的头部应该有一个随机进入点。

•    随机进入指标就是表明随机进入点的位置。

•    在电视广播中,常需要进行本地节目和广告的插入,在MPEG-2传送系统中,使用TS包适配域中的一些标志来支持。插入节目的PCR值与插入前节目的PCR值是不同的,因此通知解码器,要尽快与插入节目建立同步关系。

•    节目插入点必然是随机进入点,但并不是所有的随机进入点都适合作为节目插入点。

•    MPEG-2解码器接收到MPEG-2 TS流时,首先检测包结构,在TS流中查找同步字节:

•    总是OX47,总位于TS包开始位置,固定间隔为188字节。

•    同时满足这两个条件,可以确定同步。

•    如果出现一个字节为47hex(OX47),解码器将检测这个字节前后n倍188字节的位置是否也是同步字节。

•    如果是,则当前字节为同步字节;

•    否则,当前字节只是码流中偶尔出现的47hex,不是同步字节。

•    接收端收到5个TS包之后开始同步。

•    丢包3个之后解码器即失步。

•    TS包中净荷所承载的信息包括以下3种:

•    1、视频/音频的PES包以及辅助数据

•    2、描述单路节目复用信息的节目映射表(PMT)

•    3、描述单路节目复用信息的节目关联表(PAT)

•    1)系统复用时,对视频和音频的ES流进行打包,形成视频和音频的PES流,辅助数据不需要打成PES包.

•    (2)视频和音频的PES包以一帧编码图像为单位,音频PES包恒定长度,视频PES包长度可变。

•    (3)PES包的长度通常都是远大于TS包的长度,一个PES包必须由整数个TS包来传送,TS包没装满的填充字节。

•    (4)TS包长度固定,188字节,有效净荷184字节。

•    PMT表包含了与单路节目复用有关的节目信息,典型的构成包括1路视频ES流,2-5路音频ES流,1路或多路辅助数据。

•    进行TS流复用时,各路ES流被分配了唯一的PID,ES流域被分配的PID值间的关系构成了一张表,称为节目映射表PMT。

•    PMT完整描述了一路节目由哪些ES流组成,他们的PID分别是什么。

•    MPEG-2传送层中,传送PMT表的码流称为控制码流,和其他ES流一样,在TS包的净荷中传送,分配唯一的PID.

•    PAT包含了与多路节目复用有关的控制信息。

•    PAT描述了系统级复用中传送每路节目PMT的码流的PID。

•    PAT作为一个独立的码流,装载在TS包的净荷中传送,分配唯一的PID。传送PAT的码流的PID值定义为固定的数值“0”。

•    若复用时遇到有不同码流的PID值相同,则在进行系统复用时进行修改,修改必须同时记录在PAT和PMT中。

•    允许单路数字电视节目可由其中某些节目流任意组合构成,节目可根据需要ES码流进行增加或删除。

•    允许对多路节目进行灵活复用,若其中某些节目流发生变化,只需要将PAT和PMT做相应修改即可。

•    能够在TS级上提供本地节目插入和条件接收等对广播界非常重要的功能。

•    PAT

–  每个TS流一个,每隔0.5秒重复。

–  描述TS流中有多少个节目。

–  包含该表的TS包的PID为0,便于识别。

–  PAT的payload中传送特殊PID的列表,每个PID对应一个节目。

–  这些PID是描述每个独立节目详细信息的指针。

–  PID指向PMT表。

•    PMT

–  对应TS包有特殊的PID和特殊的payload。

–  PMT的PID由PAT传送。

–  例如要接收节目3时,先从PAT的payload中的所有PID列表中选出节目3的PID为1FF3hex,然后查找包头中PID=1FF3hex的TS包,就是节目3的PMT。

–  PMT包含该节目中所有ES流(视频、音频或数据)的PID。

•    一个节目可能有多个视频和音频流,解码器必须选择2个PID,一个视频流的PID(100hex),一个音频流的PID(200hex)。

•    此后解码器只收集这些TS包,解复用,重新组成PES包,这些PES包再送到视频或音频解码器。

•    传输过程中TS流的结构也可能发生改变。解码端机顶盒,如DVB-S,必须连续检测TS流瞬时结构,读出PAT和PMT,做自适应调整。

•    PAT和PMT读出以后,用户确定出一个节目的两个PID:

•    待解码视频信号的PID(如100hex

•    待解码音频信号的PID(如200hex

•    解码器只处理这两个PID的TS包:

•    解复用过程中,PID为100hex的所有TS包集合成视频PES包,送到视频解码器。

•    同样,PID为200hex的所有TS包重新集合成音频PES包,送到音频解码器。

如果ES流没有加扰,这时可以直接解码。

•    对付费电视或许可证和地域限制等情况,ES流利用电子码进行传输保护。

–  ES流利用各种方法进行混扰,接收端必须配有附加硬件并授权。

–  附加硬件必须有TS流中合适的解扰和授权数据。

–  因此TS流中传送一个特殊的表CAT(conditionalaccess table)

•    CAT提供了TS流其他数据包的PID,该数据包传送了解扰所需信息:

–  ECM(entitlement control message)

•    用于传送加扰码

–  EMM(entitlement management message)

•    用于用户管理

•    只有ES流本身可以加扰,TS包头、表格和adaptationfield不能加扰。

•    解扰本身在MPEG解码器以外的附加硬件设备进行,附加硬件与解扰方法相关,可以做成智能板卡通过CI(common interface)插入机顶盒。

•    在MPEG解码器做进一步处理之前,TS流在该硬件设备中循环。

•    ECM和EMM的信息,以及用户的个人码可以将码流解扰。

–  亮度信号采样频率13.5MHz,色度信号6.75MHz。27MHz是采样频率的倍数,作为发送端MPEG编码器所有处理过程的参考或基本频率。

–  编码器中27MHz振荡器作为系统时钟(STC)的输入。

–  STC是42bit计数器,由27MHz时钟计数,溢出后重新从0开始。

–  接收端也必须提供STC,其27MHz振荡器和42bit计数器必须与编码器STC完全同步。

MPEG码流中需传送参考信息——PCR(programclock reference),即在固定时刻将最新的STC计数器值复制到TS流中

•    码流中传送的PCR值必须足够多,有最大间隔的限制;而且要相对准确,没有抖动。MPEG标准规定:

–  每个节目PCR的最大间隔为40ms。

–  PCR的抖动小于±500ns。

•    PCR如果出错:

–  本来应该显示彩色图像,却显示出黑白图像。

–  TS流重复用时会出现抖动,因为TS包顺序改变,但其中PCR信息却没变。经常会有最大±30μs的PCR抖动,该问题许多机顶盒可以解决。

•    PCR信息在相应节目TS包的adaptation field中传送,而TS包类型的准确信息可以从PMT中获得。

•    节目时钟同步以后,视音频编码就可以锁定系统时钟进行了。

•    欧洲DVB项目组和美国ATSC项目组都定义了数字视音频节目传输的附加信息,以便简化机顶盒操作,使其更加人性化:

–  在TS流中传送节目名称来分辨不同节目;

•    MPEG-2为扩展留有空间,在PSI、PMT和CAT之外,TS流中还可以有private tables,定义了用户表的结构以及如何将用户表插入到TS流中。

TS相关知识点的更多相关文章

  1. UITableView相关知识点

    //*****UITableView相关知识点*****// 1 #import "ViewController.h" // step1 要实现UITableViewDataSou ...

  2. Android开发涉及有点概念&相关知识点(待写)

    前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...

  3. IOS开发涉及有点概念&相关知识点

    前言,IOS是基于UNIX的,用C/C+/OC直通系统底层,不想android有个jvm. 首先还是系统架构的分层架构 1.核心操作系统层 Core OS,就是内存管理.文件系统.电源管理等 2.核心 ...

  4. IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结

    添加商品和商品名小项目(使用xib文件终结版) 小贴士:博文末尾有项目源码在百度云备份的下载链接. xib相关知识点总结 01-基本使用 一开始使用xib的时候,如果要使用自定义view的代码,就需要 ...

  5. 学习记录013-NFS相关知识点

    一.NFS相关知识点 1.NFS常用的路径/etc/exports NFS服务主配置文件,配置NFS具体共享服务的地点/usr/sbin/exportfs NFS服务的管理命令,exportfs -a ...

  6. TCP/IP 相关知识点与面试题集

    第一部分:TCP/IP相关知识点 对TCP/IP的整体认 链路层知识点 IP层知识点 运输层知识点 应用层知识点 (这些知识点都可以参考:http://www.cnblogs.com/newwy/p/ ...

  7. Python开发一个csv比较功能相关知识点汇总及demo

    Python 2.7 csv.reader(csvfile, dialect='excel', **fmtparams)的一个坑:csvfile被csv.reader生成的iterator,在遍历每二 ...

  8. Caffe学习系列(二)Caffe代码结构梳理,及相关知识点归纳

    前言: 通过检索论文.书籍.博客,继续学习Caffe,千里之行始于足下,继续努力.将自己学到的一些东西记录下来,方便日后的整理. 正文: 1.代码结构梳理 在终端下运行如下命令,可以查看caffe代码 ...

  9. php正则相关知识点

    关于正则,其实简单就是搜索和匹配.php,java,python等都是支持正则的,php正则兼容perl.好多同学觉得正则比较难,比较抽象,其实正则是非常简单的,主要是一个熟悉和反复练习的结果,还有一 ...

随机推荐

  1. BOOST 线程完全攻略 - 基础篇

    http://blog.csdn.net/iamnieo/article/details/2908621 2008-09-10 12:48 9202人阅读 评论(3) 收藏 举报 thread多线程l ...

  2. git 远程分支创建与推送

    git 远程分支创建与推送   原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a9b830bb08a329fe850cd5b.html 本地分支的创建 本 ...

  3. oracle开启/关闭归档模式

    1.改变非归档模式到归档模式: 1)SQL> conn / as sysdba (以DBA身份连接数据库) 2)SQL> shutdown immediate;(立即关闭数据库) 3)SQ ...

  4. 前端--关于CSS

    CSS全名层叠样式表,层叠的含义有三个:1.按照特殊性的高低,特殊性高的覆盖特殊性低的样式声明:2.不同属性的样式声明要合并:3.后出现的相同的样式声明覆盖先出现的.所以要改变样式的优先级也有三种方法 ...

  5. hdu 2504

    Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b.若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c. Input 第一 ...

  6. Qt 'void QWidget::show()' is inaccessible

    今天在编写Qt窗体头文件时,尽然碰到了这样的报错,'void QWidget::show()' is inaccessible,'QWidget' is not an accessible base ...

  7. Python中的Copy和Deepcopy

    一,Python的对象: Python存在大量的对象,我们一般提到的对象都是C中的结构体在堆中申请的一块内存(以CPython为例),每一个对象都有ID,可以通过ID(Object)获得.对象的范围包 ...

  8. mysql 使用set names 解决乱码问题的原理

    解决乱码的方法,我们经常使用“set names utf8”,那么为什么加上这句代码就可以解决了呢?下面跟着我一起来深入set names utf8的内部执行原理 先说MySQL的字符集问题.Wind ...

  9. IoC - Castle Windsor 2.1

    找过一些Windsor教程的文章,博客园上TerryLee有写了不少,以及codeproject等也有一些例子,但都讲的不太明了.今天看到Alex Henderson写的一个系列,非常简单明了.下面是 ...

  10. FPGA系统中DRAM,SRAM,SDRAM,FLASH 区别(转)

    原文:http://hi.baidu.com/abners/item/a9042ef35d3f005bc8f337f5 一般来说这几种存储器是一个nios系统都具有的,sram的好处是接口简单,速度快 ...