我们常说的音视频数据流在TS中被称为Elementary Stream(ES),也称为原始码流(裸流)。ES流本身不含有传输所需的所有信息,为了在传输过程中同时携带PTS(Presentation Time Stamp,显示时间戳)、DTS(Decoding Time Stamp,解码时间戳)等信息,会将ES流加上一个Header,封装成PES(Packet Elementary Stream)包。

1、PES包的接收

PES包往往比较长,所以需要分段传输,这样会有一个问题,接收了多个TS包后我们如何知道哪一包TS是PES的开头,哪一包又是PES的结尾?

TS header中有一个负载开始指示符(payload_unit_start_indicator,PUSI),表示当前TS包的负载是否属于新的一帧:

  • PUSI为0,说明当前的PES包还未接收完成,负载属于当前PES包中的一部分内容,我们需要把这包的负载拼接到之前接收的负载之后;
  • PUSI为1,说明前面一个PES包已经接收完成,当前接收的负载属于一个新的PES包,这时候我们可以来解析前面一个PES包,可以理解为,只有在后面一个PES包到达时我们才能知道前面一个PES包接收完成了。

这里有一点要说明,大多数情况下可以认为一个PES包就是一帧数据,对应着一个PTS和一个DTS,但是也有特殊的情况,一帧数据可能会跨多个PES包。

此外,TS包头中还有一个continuity_counter字段

TS码流解析(三)PES的更多相关文章

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

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

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

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

  3. H.264/H265码流解析

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

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

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

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

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

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

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

  7. H264码流解析及NALU

    ffmpeg 从mp4上提取H264的nalu http://blog.csdn.net/gavinr/article/details/7183499 639     /* bitstream fil ...

  8. h.264码流解析_一个SPS的nalu及获取视频的分辨率

    00 00 00 01 67 42 00 28 E9 00  A0 0B 77 FE 00 02 00 03 C4 80  00 00 03 00 80 00 00 1A 4D 88  10 94 0 ...

  9. TS流解析 三

    应该说真正了解TS,还是看了朋友推荐的<数字电视业务信息及其编码>一书之后,MPEG2 TS和数字电视是紧密不可分割的,值得总结一下其中的一些关系. ISO/IEC-13818-1:系统部 ...

  10. ReactiveCocoa源码拆分解析(三)

    (整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 这一章节主要讨论信号的“冷”与“热” 在RAC的世界 ...

随机推荐

  1. 动态规划(六)——树形dp

    树形dp,又称树状dp,即在树上进行的dp,在设计动态规划算法时,一般就以节点从深到浅(子树从小到大)的顺序作为dp的"阶段",dp的状态表示中,第一维通常是节点编号(代表以该节点 ...

  2. arp 的基础概念

    前言 打算整理网络这一块,先把概念写完. 就是有一个问题,那就是为什么有ip地址还有mac地址呢? 原因是这样子的,我们知道ip协议是第三层,那么有一个问题了,如果只有第三层的ip是否能过识别到主机? ...

  3. 一站式指南:ClkLog部署环境配置指南

    在今天的数字化世界中,数据管理和分析工具的选择对于企业的成功至关重要.ClkLog作为一款强大的日志分析工具,能够帮助企业从海量数据中洞察业务.提升效率.然而,如何才能顺利部署ClkLog系统,使其最 ...

  4. 剑指offer03(Java)-数组中重复的数字(简单)

    题目: 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任 ...

  5. PolarDB-X 全局二级索引

    简介: 索引是数据库的基础组件,早在1970年代,SystemR 就已经通过增加索引来支持多维度查询.单机数据库中,索引主要按照用途和使用的数据结构分为 BTree 索引.Hash 索引.全文索引.空 ...

  6. OpenKruise v0.8.0 核心能力解读:管理 Sidecar 容器的利器

    简介: OpenKruise 是阿里云开源的云原生应用自动化管理套件,也是当前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目.它来 ...

  7. Spark 大数据处理最佳实践

    开源大数据社区 & 阿里云 EMR 系列直播 第十一期 主题:Spark 大数据处理最佳实践 讲师:简锋,阿里云 EMR 数据开发平台 负责人 内容框架: 大数据概览 如何摆脱技术小白 Spa ...

  8. python3生成随机单词或者语句

    pip install RandomWords Random words: >>> from random_words import RandomWords >>> ...

  9. 【简说Python WEB】Bootstrap

    目录 [简说Python WEB]Bootstrap Bootstrap的导航组件应用 404,500错误页面定制化 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:vi ...

  10. 02 Xpath Helper介绍

    目录 参考文档 下载地址 安装 使用 参考文档 xpath helper https://www.cnblogs.com/ChevisZhang/p/12869582.html http://c.bi ...