PES包的PTS详解

之前做ts转flv用的是osmf框架,那个东东略复杂,和自己的代码结合后想调整某个地方有些困难,所以还是打算自己来解ts并进行封装。

其中的pts的获取上网查了下,结构图差点没看懂是怎么回事,后来终于搞懂了,浪费了很多时间,这里记录一下吧。

首先是这个图,我被这个图坑了,看了半天没看明白。

上面这个图其实不是很清楚,看了几次还是不知道怎么弄pts,后来在标准上看到了另外一个图,这个就清晰很多了。

其中有箭头指向的表示当前边的flags为1时,将会有后边深色的字段部分。

packet start code prefix:为0x000001;

stream id:

每个字段就不详解了,直接找我要的PTS吧。

先找到original or copy后边得"7 flags",得出是否有pts/dts的标志,标志为高两位,所以 标志= ("7 flags" & 0xc0 )  >>  6;

标志第一位是PTS标识,第二位是DTS标识。

标志:00,表示无PTS无DTS;

             01,错误,不能只有DTS没有PTS;

             10,有PTS;

     11,有PTS和DTS.


接下来,跳过8字节的PES header  data length;

虽然由第二个图可以知道PTS有33位,但是它不是直接的33位数据,而是占了5个字节,PTS分别在这5字节中取。


见过上边这个图的就应该比较清楚了,PTS的33位的各部分是如上图那样分布的,如果从左至右的绿色部分分别为PTS1,PTS2,PTS3的话,那么:

PTS  = (PTS1 & 0x0e) << 29 + (PTS2 & 0xfffe) << 14 + (PTS3 & 0xfffe ) >> 1;

DTS(如果有)紧接着后边读取5个字节的数据,也是这样求出来的。

本文部分图片转自http://www.yunlipiao.com/208.html。

PES包的PTS详解相关推荐

  1. 阿里云服务器ECS选款利器,性能测试PTS详解

    很多新手用户并不知道PTS是什么,如果你不知道如何选择阿里云服务器ECS产品,性能测试PTS可以很好的帮助你快速对云服务器进行压力测试.下面是性能测试PTS详解! 阿里云开发者社区最近推出了一个&qu ...

  2. TCP丢包检测技术详解

    TCP丢包检测技术详解 http://www.cctime.com/html/2007-12-6/20071261023151210.htm           2007年12月6日 10:23  中 ...

  3. python3 urllib安装_对python3 urllib包与http包的使用详解

    urllib包和http包都是面向HTTP协议的.其中urllib主要用于处理 URL,使用urllib操作URL可以像使用和打开本地文件一样地操作.而 http包则实现了对 HTTP协议的封装,是u ...

  4. mysql安装包没有安装程序_MySQL5.6的zip包安装教程详解

    之前我们都是后缀为.msi的文件,换言之就是傻瓜式安装,但是有些版本不容易控制安装路径,或者数据库编码格式,还有些会安装很多无用的服务,但是都没有后缀为.zip文件简单直接,说是在哪里,就在哪里. 1 ...

  5. Ubuntu16.04下制作deb包的方法详解

    CSDN GitHub Ubuntu下制作deb包的方法详解 AderXCoding/system/tools/build_deb 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可 ...

  6. python path包的使用详解

    python path包的使用详解 files函数的使用 files函数的使用 import argparse from path import Pathparser = argparse.Argum ...

  7. python调用包的路径_Python3 模块、包调用路径详解

    如下所示: ''' 以下代码均为讲解,不能实际操作 ''' ''' 博客园 Infi_chu ''' ''' 模块的优点: 1.高可维护性 2.可以大大减少编写的代码量 模块一共有三种: 1.Pyth ...

  8. UDP数据包协议格式详解

    源端口目的端口:是0-65535任何数字,在收到请求时系统会为客户端动态分配,0-1023为知名端口号 报文长度(单位4byte):表示udp报头+udp数据总长度,有别于tcp,也没有选项 UDP报 ...

  9. COAP数据包协议格式详解

    Ver:版本编号,占2bit,固定01 T:报文类型,占2bit,CON=00,NON=01,ACK=10,RST=11 CON--需要被确认的请求,如果CON请求被发送,那么对方必须做出响应. NO ...

最新文章

  1. Java中各种引用(Reference)解析
  2. SharePoint2010添加webpart找不到内容编辑器
  3. 音视频技术傻瓜版解析:带你解锁RTMP
  4. hdu1596-find the safest road
  5. 【图像处理】MATLAB:频域高低通滤波器
  6. 01-区块链入门之 区块链介绍一-大叔思维
  7. asp.net身份验证
  8. 智能语音推动双11进化:抢红包从动手到张嘴
  9. Python数据分析基础: 数据缺失值处理
  10. 浏览器基础(2)-跨域
  11. 养乐多深耕三线城市加码长、珠三角;欧康维视在港交所主板挂牌上市 | 美通企业日报...
  12. 【机器学习】有监督、无监督、自监督、半监督、弱监督的区别
  13. python游戏开发框架_Python游戏开发:数字华容道
  14. 智能指纹门锁芯片方案技术开发
  15. 手动升级11.2.0.3到12.2.0.1
  16. 使用CSS3动画做出光芒万丈的效果
  17. cadence_allegro_查看dra文件所用pad_查看封装文件用的引脚列表
  18. 企业如何做好事件营销达到推广目的
  19. linuxFTP命令
  20. 带看板的项目管理工具TaskCafe

热门文章

  1. 孤岛危机估算章节没有回应
  2. .NET5.0 初始
  3. C语言十进制转八进制
  4. IT十年人生过客-十五-回京
  5. 智能窗帘研究制作_智能窗帘的制作方法
  6. Python递归获取指定文件夹下的所有文件夹、文件
  7. 亚马逊后台操作不容措施旺季~~~~~~
  8. php解析视频_【教程】php实现百度网盘视频解析
  9. [GYCTF2020]Blacklist 使用handler函数进行sql堆注入
  10. Vue纯零基础教学第三天--到走入Vue项目实际开发的内心深处