iOS的VideoToolBox与Android的MediaCodec对PTS的处理异同
2024-09-05 05:32:42
视频源,不论是从采集设备采集到的,还是本身压制好的文件,其流中的数据都是按照编码顺序存储的。比如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输出的流是经过重排序的,也就是说,可以直接送入渲染模块渲染。
最新文章
- SharePoint如何关掉mysite. how to disable mysite creation
- WebStorm11 注册
- lvm之创建/扩容/缩容/快照及关闭的全部流程操作记录
- 在express项目中有效组织和使用mongoose
- Page.User.Identity.Name获取不到结果
- ajaxfileupload踩过的坑
- JavaScript面向对象精要(一)
- ThinkPHP5.0中Redis的使用和封装(原创)
- JDBC数据库增、删、改、查方法实现类
- PTA 第二周作业 张乐
- html select 标签设置默认选中
- qt5.11.2+vs2017环境下配置pcl1.8.1以及第三方依赖库vtk的编译
- Java -- 基于JDK1.8的ArrayList源码分析
- DataTable行列转换
- 王者荣耀交流协会第五次Scrum立会
- RabbmitMQ-组成及简单使用
- Python2.7-sqlite3
- java_selenium 开发环境搭建
- bzoj千题计划154:bzoj3343: 教主的魔法
- purescript 基本试用