PES包的PTS详解
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详解相关推荐
- 阿里云服务器ECS选款利器,性能测试PTS详解
很多新手用户并不知道PTS是什么,如果你不知道如何选择阿里云服务器ECS产品,性能测试PTS可以很好的帮助你快速对云服务器进行压力测试.下面是性能测试PTS详解! 阿里云开发者社区最近推出了一个&qu ...
- TCP丢包检测技术详解
TCP丢包检测技术详解 http://www.cctime.com/html/2007-12-6/20071261023151210.htm 2007年12月6日 10:23 中 ...
- python3 urllib安装_对python3 urllib包与http包的使用详解
urllib包和http包都是面向HTTP协议的.其中urllib主要用于处理 URL,使用urllib操作URL可以像使用和打开本地文件一样地操作.而 http包则实现了对 HTTP协议的封装,是u ...
- mysql安装包没有安装程序_MySQL5.6的zip包安装教程详解
之前我们都是后缀为.msi的文件,换言之就是傻瓜式安装,但是有些版本不容易控制安装路径,或者数据库编码格式,还有些会安装很多无用的服务,但是都没有后缀为.zip文件简单直接,说是在哪里,就在哪里. 1 ...
- Ubuntu16.04下制作deb包的方法详解
CSDN GitHub Ubuntu下制作deb包的方法详解 AderXCoding/system/tools/build_deb 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可 ...
- python path包的使用详解
python path包的使用详解 files函数的使用 files函数的使用 import argparse from path import Pathparser = argparse.Argum ...
- python调用包的路径_Python3 模块、包调用路径详解
如下所示: ''' 以下代码均为讲解,不能实际操作 ''' ''' 博客园 Infi_chu ''' ''' 模块的优点: 1.高可维护性 2.可以大大减少编写的代码量 模块一共有三种: 1.Pyth ...
- UDP数据包协议格式详解
源端口目的端口:是0-65535任何数字,在收到请求时系统会为客户端动态分配,0-1023为知名端口号 报文长度(单位4byte):表示udp报头+udp数据总长度,有别于tcp,也没有选项 UDP报 ...
- COAP数据包协议格式详解
Ver:版本编号,占2bit,固定01 T:报文类型,占2bit,CON=00,NON=01,ACK=10,RST=11 CON--需要被确认的请求,如果CON请求被发送,那么对方必须做出响应. NO ...
最新文章
- Java中各种引用(Reference)解析
- SharePoint2010添加webpart找不到内容编辑器
- 音视频技术傻瓜版解析:带你解锁RTMP
- hdu1596-find the safest road
- 【图像处理】MATLAB:频域高低通滤波器
- 01-区块链入门之 区块链介绍一-大叔思维
- asp.net身份验证
- 智能语音推动双11进化:抢红包从动手到张嘴
- Python数据分析基础: 数据缺失值处理
- 浏览器基础(2)-跨域
- 养乐多深耕三线城市加码长、珠三角;欧康维视在港交所主板挂牌上市 | 美通企业日报...
- 【机器学习】有监督、无监督、自监督、半监督、弱监督的区别
- python游戏开发框架_Python游戏开发:数字华容道
- 智能指纹门锁芯片方案技术开发
- 手动升级11.2.0.3到12.2.0.1
- 使用CSS3动画做出光芒万丈的效果
- cadence_allegro_查看dra文件所用pad_查看封装文件用的引脚列表
- 企业如何做好事件营销达到推广目的
- linuxFTP命令
- 带看板的项目管理工具TaskCafe