免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1237 | 回复: 0
打印 上一主题 下一主题

MPEG2 TS基本概念和数据结构-1(转) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-02 16:25 |只看该作者 |倒序浏览
[color="#000102"](1)ES- Elementary Streams ([color="#000102"]原始流[color="#000102"])[color="#000102"],对视频、音频信号及其他数据进行编码压缩后的数据流称为原始流。原始流包括访问单元,比如视频原始流的访问单元就是一副图像的编码数据。[color="#000102"](2) PES- Packetized Elementary Streams ([color="#000102"]分组的原始流[color="#000102"])[color="#000102"],原始流形成的分组称为[color="#000102"]PES[color="#000102"]分组,是用来传递原始流的一种数据结构[color="#000102"](3)[color="#000102"]节目是节目元素的集合。节目元素可能是原始流,这些原始流有共同的时间基点,用来做同步显示。[color="#000102"](4)[color="#000102"]传输流和节目流[color="#000102"]TS-Transport Stream [color="#000102"]翻译为[color="#000102"]“[color="#000102"]传输流[color="#000102"]”PS-Program Stream  [color="#000102"]翻译为[color="#000102"]“[color="#000102"]节目流[color="#000102"]”PS[color="#000102"]用来传输和保存一道节目的编码数据或其他数据。[color="#000102"]PS[color="#000102"]的组成单位是[color="#000102"]PES[color="#000102"]分组。[color="#000102"]TS[color="#000102"]用来传输和保存多道节目的编码数据或其他数据,[color="#000102"]TS[color="#000102"]的组成单位是节目。[color="#000102"]PS[color="#000102"]适用于不容易发生错误的环境,以及涉及到软件处理的应用,典型应用如[color="#000102"]DVD[color="#000102"]光盘的文件存储[color="#000102"]TS[color="#000102"]适用于容易发生错误的环境,典型应用就是数字电视信号的传输。[color="#000102"]TS[color="#000102"]和[color="#000102"]PS[color="#000102"]是可以互相转换的,比如从[color="#000102"]TS[color="#000102"]中抽取一道节目的内容并产生有效的[color="#000102"]PS[color="#000102"]是可能。[color="#000102"] (5)[color="#000102"]传输流分组和[color="#000102"]PES[color="#000102"]分组原始流分成很多[color="#000102"]PES[color="#000102"]分组,保持串行顺序,一个[color="#000102"]PES[color="#000102"]分组只包含一个原始流的编码数据。[color="#000102"]PES[color="#000102"]分组长度很大,最大可为[color="#000102"]64K[color="#000102"]字节。[color="#000102"]PES[color="#000102"]分组分为[color="#000102"]“[color="#000102"]分组首部[color="#000102"](header)”[color="#000102"]和[color="#000102"]“[color="#000102"]有效负载[color="#000102"](payload)”[color="#000102"]。[color="#000102"]“[color="#000102"]有效负载[color="#000102"]”[color="#000102"]指跟随在首部字节之后的字节。首部的前[color="#000102"]4[color="#000102"]个字节构成分组的起始码,标识了该分组所属原始流的类型和[color="#000102"]ID[color="#000102"]号。[color="#000102"]TS[color="#000102"]分组也就是传输流数据形成的数据包。每个[color="#000102"]TS[color="#000102"]分组长度为[color="#000102"]188[color="#000102"]字节,包括[color="#000102"]“[color="#000102"]分组首部[color="#000102"]”[color="#000102"]和[color="#000102"]“[color="#000102"]有效负载,前[color="#000102"]4[color="#000102"]个字节是分组首部,包含了这个分组的一些信息。有些情况下需要更多的信息时,需在后面添加[color="#000102"]“[color="#000102"]调整字段[color="#000102"](adaption field)”[color="#000102"]。两者之间的关系[color="#000102"]:PES[color="#000102"]分组是插入到[color="#000102"]TS[color="#000102"]分组中的,每个[color="#000102"]PES[color="#000102"]分组首部的第一字节就是[color="#000102"]TS[color="#000102"]分组有效负载的第一字节。一个[color="#000102"]PID[color="#000102"]值的[color="#000102"]TS[color="#000102"]分组只带有来自一个原始流的数据。[color="#000102"] (6)PSI [color="#000102"]全称[color="#000102"]Program Specific Information[color="#000102"],意为节目专用信息。传输流中是多路节目复用的,那么,怎么知道这些节目在传输流中的位置,区分属于不同节目呢?所以就还需要一些附加信息,这就是[color="#000102"]PSI[color="#000102"]。[color="#000102"]PSI[color="#000102"]也是插入到[color="#000102"]TS[color="#000102"]分组中的,它们的[color="#000102"]PID[color="#000102"]是特定值。[color="#000102"]MPEG-2[color="#000102"]中规定了[color="#000102"]4[color="#000102"]个[color="#000102"]PSI[color="#000102"],包括[color="#000102"]PAT([color="#000102"]节目关联表[color="#000102"])[color="#000102"],[color="#000102"]CAT([color="#000102"]条件访问表[color="#000102"])[color="#000102"],[color="#000102"]PMT([color="#000102"]节目映射表[color="#000102"])[color="#000102"],[color="#000102"]NIT([color="#000102"]网络信息表[color="#000102"])[color="#000102"],这些[color="#000102"]PSI[color="#000102"]包含了进行多路解调和显示节目的必要的和足够的信息。应用中可能包括更多的信息,比如[color="#000102"]DVB-T[color="#000102"]中定义了[color="#000102"]SDT([color="#000102"]服务描述表[color="#000102"]),EIT([color="#000102"]环境信息表[color="#000102"]),BAT([color="#000102"]节目组相关表[color="#000102"]),TDT([color="#000102"]时间日期表[color="#000102"])[color="#000102"]等,统称为[color="#000102"]DVB-SI([color="#000102"]服务信息[color="#000102"])[color="#000102"]。[color="#000102"] PSI[color="#000102"]的[color="#000102"]PID[color="#000102"]是特定的,含[color="#000102"]PSI[color="#000102"]的数据包必须周期性的出现在传输流中。[color="#000102"][color="#000102"]PMT (Program Map Table )[color="#000102"]节目映射表[color="#000102"]PMT[color="#000102"]所在分组的[color="#000102"]PID[color="#000102"]由[color="#000102"]PAT[color="#000102"]指定,所以要先解出[color="#000102"]PAT[color="#000102"],再解[color="#000102"]PMT[color="#000102"]。[color="#000102"]PMT[color="#000102"]中包含了属于同一节目的视频、音频和数据原始流的[color="#000102"]PID[color="#000102"]。找到了[color="#000102"]PMT[color="#000102"],解多路复用器就可找到一道节目对应的每个原始流的[color="#000102"]PID[color="#000102"],再根据原始流[color="#000102"]PID[color="#000102"],去获取原始流。[color="#000102"][color="#000102"]PAT (Program Association[color="#000102"] [color="#000102"]Table )[color="#000102"]节目关联表[color="#000102"]PAT[color="#000102"]所在分组的[color="#000102"]PID=0 PAT[color="#000102"]中列出了传输流中存在的节目流[color="#000102"]PAT[color="#000102"]指定了传输流中每个节目对应[color="#000102"]PMT[color="#000102"]所在分组的[color="#000102"]PIDPAT[color="#000102"]的第一条数据指定了[color="#000102"]NIT[color="#000102"]所在分组的[color="#000102"]PID [color="#000102"],其他数据指定了[color="#000102"]PMT[color="#000102"]所在分组的[color="#000102"]PID[color="#000102"]。[color="#000102"][color="#000102"]CAT (Conditional Access Table[color="#000102"] [color="#000102"])[color="#000102"]条件访问表[color="#000102"]CAT[color="#000102"]所在分组的[color="#000102"]PID=1CAT[color="#000102"]中列出了条件控制信息[color="#000102"](ECM)[color="#000102"]和条件管理信息[color="#000102"](EMM)[color="#000102"]所在分组的[color="#000102"]PID[color="#000102"]。[color="#000102"]CAT[color="#000102"]用于节目的加密和解密[color="#000102"] NIT( Network Information Table)[color="#000102"]网络信息表[color="#000102"]NIT[color="#000102"]所在分组的[color="#000102"]PID[color="#000102"]由[color="#000102"]PAT[color="#000102"]指定[color="#000102"]NIT[color="#000102"]提供一组传输流的相关信息,以及于网络自身特性相关的信息,比如网络名称,传输参数[color="#000102"]([color="#000102"]如频率[color="#000102"],[color="#000102"]调制方式等[color="#000102"])[color="#000102"]。[color="#000102"]NIT[color="#000102"]一般是解码器内部使用的数据,当然也可以做为[color="#000102"]EPG[color="#000102"]的一个显示数据提供给用户做为参考。几种[color="#000102"]PSI[color="#000102"]之间的关系,如下图所示:首先[color="#000102"]PAT[color="#000102"]中指定了传输流中所存在的节目,及每个节目对应的[color="#000102"]PMT[color="#000102"]的[color="#000102"]PID[color="#000102"]号。[color="#000102"] [color="#000102"]比如[color="#000102"]Program 1[color="#000102"]对应的[color="#000102"]PMT [color="#000102"]的[color="#000102"]PID=22,[color="#000102"]然后找到[color="#000102"]PID=22[color="#000102"]的[color="#000102"]TS[color="#000102"]分组,解出[color="#000102"]PMT[color="#000102"],得到这个节目中包含的原始流的[color="#000102"]PID[color="#000102"],再根据原始流的[color="#000102"]PID[color="#000102"]去找相应的[color="#000102"]TS[color="#000102"]分组,获取原始流的数据,然后就可以送入解码器解码了。[color="#000102"][color="#000102"]

               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/98222/showart_2015651.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP