TS码流有PSI和PES两种负载,这一节主要来了解PSI是如何解析的。

1、PSI

PSI(Program Specific Information)节目专用信息,用来描述TS码流的节目组成等信息。PSI中包含的几个比较重要且常用的表有:

  • PAT(Program Association Table):节目关联表,记录有当前TS码流中所有的节目以及对应的PID;
  • PMT(Program Map Table):节目映射表,记录有当前节目包含的所有视频流以及流对应的PID;
  • CAT(Conditional Access Table):条件访问表,用于记录节目的加密和解密信息(这一节仅作了解)。

看过上一篇TS Header解析的朋友们会知道,Adaption Field的长度是不能超过一个TS包的,所以解析起来比较简单。但是PAT、PMT、CAT表长度可长可短,我觉得可以分成三类:

  1. 长度较小,一个TS包就可传输完成;
  2. 长度较大,需要分为多个TS包传输;
  3. 长度超大(超过1024字节),需要把表分为多段(section),并且给每个section编上号,最后再用TS包传输,section也可能会跨包传输;

第一类解析最简单,第二类需要接收到完整的表之后才能开

TS码流解析(二)PSI PAT PMT的更多相关文章

  1. TS流解析 二 *****

    1.TS格式介绍 TS:全称为MPEG2-TS.TS即"Transport Stream"的缩写.它是分包发送的,每一个包长为188字节(还有192和204个字节的包).包的结构为 ...

  2. 关于ES、PES、PS/TS 码流

    一.基本概念 )ES   ES--Elementary  Streams  (原始流)是直接从编码器出来的数据流,可以是编码过的视频数据流(H.264,MJPEG等),音频数据流(AAC),或其他编码 ...

  3. 【雷神源码解析】无基础看懂AAC码流解析,看不懂你打我

    一 前言 最近在尝试学习一些视频相关的知识,随便一搜才知道原来国内有雷神这么一个真正神级的人物存在,尤其是在这里(传送门)看到他的感言更是对他膜拜不已,雷神这种无私奉献的精神应当被我辈发扬光大.那写这 ...

  4. H.264/H265码流解析

    H.264/H265码流解析 一.H.264码流解析 一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成 一个原始的 ...

  5. 视音频数据处理入门:AAC音频码流解析

    ===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...

  6. 视音频数据处理入门:H.264视频码流解析

    ===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...

  7. Java生成二维码和解析二维码URL

    二维码依赖jar包,zxing <!-- 二维码依赖 start --><dependency> <groupId>com.google.zxing</gro ...

  8. go http 下载视频(TS码流文件)(推荐一个网站学习 go example)

    视频  http下载代码 dn.go(注意:代码很ugly,没怎么花时间) 总体感觉特别简单,网上看了下 net/http ,io这2个库的使用, 几分钟就写完了,感觉cpp 在做工具这块 开发效率的 ...

  9. java代码生成二维码以及解析二维码

    package com.test; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedI ...

  10. java二维码之利用谷歌的zxing生成二维码,解析二维码

    生成二维码 @RequestMapping("/123") public void test(HttpServletRequest request,HttpServletRespo ...

随机推荐

  1. openGauss社区入门(openGauss-常用数据类型)

    常用数据类型 数据类型 说明 布尔类型 boolean true/'1'/'yes' false/'0'/'no' 数值类型 smallint 两字节 int 4 字节 bigint 8 字节 dou ...

  2. C++ 引用和指针:内存地址、创建方法及应用解析

    C++ 引用和指针 创建引用 引用变量是对现有变量的"别名",它是使用 & 运算符创建的: string food = "Pizza"; // 食物变量 ...

  3. 直播预告丨“Hello ArkUI:初识Slider组件(JS)”周三约起

    12月1日 19:00-20:30,Hello HarmonyOS系列课程的第三节Hello ArkUI:初识Slider组件(JS)线上直播,将手把手教你熟悉最新的ArkUI,使用JS语言编写一个包 ...

  4. Android 开发入门(2)

    0x04 简单控件 (1)文本显示 a. 添加文本 设置文本内容主要有两种方式: XML:通过属性android:text设置 在 layout 目录下新建 activity_text_view.xm ...

  5. CentOS 6.5编译安装httpd-2.4.7

    CentOS 6.5编译安装httpd-2.4.7 CentOS 编译安装 Apache 2.4 准备: [root@NFSServer ~]# yum groupinstall "Deve ...

  6. redis 简单整理——redis 的列表基本结构和命令[四]

    前言 简单整理一下redis的列表. 正文 列表(list)类型是用来存储多个有序的字符串,如图2-18所示,a. b.c.d.e五个元素从左到右组成了一个有序的列表,列表中的每个字符串 称为元素(e ...

  7. 重新整理.net core 计1400篇[三] (.net core 如何源代码调试和查看源码 )

    前言 本来这里是写源代码的,因为vs没有那么容易调试查看到源代码,所以先把调试源代码和查看源代码弄完. 正文 需要修改一些vs配置,这个vs也是有要求的,要vs2017. 那么你还需要加载远程符号. ...

  8. stm32串口晶振不对输出乱码+汇承HC-14lora模块

    最近要用到一个lora无线透传模块,然后就先用两个32开发板(用的STM32F103C8T6)试试简单的收发数据.结果,第一步串口发送一句话就寄了,我串口打印了"hi",结果出现了 ...

  9. 【Oracle】使用case when语句导致SQL查询速度很慢的情况

    [Oracle]使用case when语句导致SQL查询速度很慢的情况 很多时候会使用到case when语句去对SQL的多种情况进行处理,decode也用的多,但是通常decode会用在固定值的数据 ...

  10. 力扣49(java)-字母异位词分组(中等)

    题目: 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. 示例 1: 输入: ...