视频源,不论是从采集设备采集到的,还是本身压制好的文件,其流中的数据都是按照编码顺序存储的。比如1 2 3 4 5,5帧视频数据,1编码成I帧,2 3 4编码成B帧,5编码成P帧。

编码过程:

1. 编码1为I帧;

2. 2,3,4准备编码为B帧,先缓存下来,记录其时间点作为PTS;

3. 再编码5,编码为P帧,5的DTS相对2,3,4靠前,PTS相对于2,3,4靠后;

4. 编码2,3,4,编码为B帧;

存储过程:

存储顺序与编码顺序一致,编码后的顺序为(DTS顺序):1 5 2 3 4

Android和iOS的硬解码器都不会修改输入PTS,但解码细节略有差别;

1. iOS VideoToolBox

VTB本身不会对解码后的图像进行重排序,所以需要开发者缓存几帧数据,重排序之后再送入渲染模块。

2. Android MediaCodec

以同样的数据流输入到MediaCodec,MediaCodec输出的流是经过重排序的,也就是说,可以直接送入渲染模块渲染。

最新文章

  1. SharePoint如何关掉mysite. how to disable mysite creation
  2. WebStorm11 注册
  3. lvm之创建/扩容/缩容/快照及关闭的全部流程操作记录
  4. 在express项目中有效组织和使用mongoose
  5. Page.User.Identity.Name获取不到结果
  6. ajaxfileupload踩过的坑
  7. JavaScript面向对象精要(一)
  8. ThinkPHP5.0中Redis的使用和封装(原创)
  9. JDBC数据库增、删、改、查方法实现类
  10. PTA 第二周作业 张乐
  11. html select 标签设置默认选中
  12. qt5.11.2+vs2017环境下配置pcl1.8.1以及第三方依赖库vtk的编译
  13. Java -- 基于JDK1.8的ArrayList源码分析
  14. DataTable行列转换
  15. 王者荣耀交流协会第五次Scrum立会
  16. RabbmitMQ-组成及简单使用
  17. Python2.7-sqlite3
  18. java_selenium 开发环境搭建
  19. bzoj千题计划154:bzoj3343: 教主的魔法
  20. purescript 基本试用

热门文章

  1. linux中文件权限的字母含义
  2. GDB获取帮助信息
  3. Oracle数据库应用系统结构
  4. cook,session
  5. Hadoop和Spark的Shuffer过程对比解析
  6. Kubernetes---Service(SVC)服务--ingress api
  7. HDU 4614 线段树+二分查找
  8. LC 94. Binary Tree Inorder Traversal
  9. macos catalina安装python3
  10. 使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数据