数字电视的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. 介绍一款Android小游戏--交互式人机对战五子棋

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...

  2. C# sql操作

    SqlConnection con = new SqlConnection(strSqlConnection);//strSqlConnection为字符串连接          DataTable ...

  3. Android-----输入法的显示和隐藏

    /** * 控制手机虚拟键盘的显示和隐藏 */public class InputMethodUtil { /** * 隐藏虚拟键盘 * @param v  参数v为获取焦点对象view */ pub ...

  4. java 自动装箱、自动拆箱

    /** * @描述:自动装箱,自动拆箱 * @date 2017年1月10日下午1:30:01 * 结论:包装类的"=="运算在不遇到算术运算的情况下不会自动拆箱, * 以及他们的 ...

  5. PHP读取EXCEL时写入数据乱码解决办法

    第一步排除excel读取的数据是不是乱码 EXCEL读取时经常会出现乱码,而我们常用的字符集是UTF-8 ,GB2312(GBK) ,这就需要对编码进行转换,但是又不能对纯数字和英文字符转换,否则会乱 ...

  6. 关于css浮动的一些总结

    首先给浮动一个定义吧 浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次. 从测试中来看 元素之间的浮动关系是根据上一个元素来判断的如果上一个元素是浮动的它会跟在浮动元素 ...

  7. Ubuntu14.04LST 安装Oracle SQL Developer 4.0.2

    1:Oracle SQL Developer 4.0.2下载链接: http://www.oracle.com/technetwork/developer-tools/sql-developer/do ...

  8. C语言必背18个经典程序

    C语言必背18个经典程序 1./*输出9*9口诀.共9行9列,i控制行,j控制列.*/ #include "stdio.h" main() {int i,j,result; for ...

  9. 【Xamarin挖墙脚系列:开始使用Xamari4.0系列产品开发IOS】

    一直沉默在Xamarin3.0系列版本上,升级到4.0之后,感觉有些变化.还得适应下. 1 build.host  代理消失了,成了SSH客户端登录.所以,Mac设备需要打开运行远程登录. 2 在Wi ...

  10. arcgis api for silverlight

    原文 http://blog.sina.com.cn/s/blog_4638cf7b0100wntt.html arcgis api for silverlight(1) (2011-09-21 09 ...