• Mpeg2——TS简单分析


    分析一个传输包的结构

    Transport Stream Packet的格式:一个MPEG-2传输包的大小是188bytes,其中包括四个bytes的header和紧跟其后的adaptation field。传输流包的数据结构时间关系我懒得画出来了,它的头通常有个十六进制值为47的8位的sync_byte,接着有2位indicator和1位优先级,似乎一直是010,再加上13位的PID,加起来就是16位,所以在DVB里面通常找4740XX,而XX就能识别是什么表格。

    MPEG-2和DVB标准保留的PID值规定0×0000为PAT的PID,0001为CAT的PID,还有0010、0011、0012等,所以在码流中就很容易就可以看出这个包是什么东西了。

    一个CAT的格式如下:

    474001****************************D7557E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    474001表明这是一个CAT表格,因为CAT的PID是0×0001,47是同步码,8位,二进制为0100 0111,40 01的二进制是0100 0000 0000 0001,前面的010是上面所说的indicator和priority,后面的13位是PID,也就是规定为CAT的0×0001。紧接着后面的一连串乱七八糟的东西就去对照CAT表的格式吧,会发现其实并不是乱七八糟的,里面有个09标签,里面的数据说明了这个CAT里面带的EMM的PID。最后D7557E5F是CRC

    查看下载业务信息

    在卫星直播系统中,规定PAT中program_number等于0xFFFE的业务为一个包含软件升级数据的业务,软件升级数据使用MPEG-2专有数据表的格式进行传输。

    包含了软件升级业务对应的PMT表中基本流的stream_type为0xE0,以标识该基本流用于传输升级数据,同时在每个基本流循环里包含一个软件升级标识描述符(software_upgrade_id descriptor),描述软件升级数据信息(其格式见资料)。软件升级标识描述符的格式中:descriptor_tag为8位,取值为0xE3,其他的见资料。其中制造商标识(manufacture_id)、硬件标识(hardware_id)、型号标识(model_id)、都在这里找。

    软件升级数据表Download Data Table用来传输软件升级数据,下载数据表由多个子表组成,每个子表分割成多个下载数据段,每个段的最大长度为4096字。Download_data_section中需要格外记住的标识符有table_id为0xA0,download_software_descriptor中的descriptor_tag为0xE2,跟着可以找到software_version、software_size、software_CRC等。

    应该是这样。

  • 相关阅读:
    js的event对象 详解
    RestSharp使用详解(1)调用阿里巴巴开放存储服务
    RestSharp使用详解(2)RestSharp的BUG和不足
    WF实例学习笔记:(2)通过Workflow 调用 WCF Data Services 获取数据
    译文:SQL Azure客户端瞬态错误处理最佳实践
    Windbg 基本命令
    RestSharp使用详解(3)OSS文件上传的问题
    Transient Fault Handling and Retry Logic: 瞬间错误处理——重试
    推荐一本免费的Node.js电子书(台湾)
    CSS导航菜单应用滑动门技术的玻璃效果菜单
  • 原文地址:https://www.cnblogs.com/p2liu/p/6048799.html
Copyright © 2020-2023  润新知