目录标题

  • DSP芯片原理讲解
  • MediaCodec编码机制
  • MediaCodec解码H264、H265原理,深度解析视频解码流程
  • H265硬解码兼容问题
  • 参考

DSP芯片原理讲解

视频ai分析 报警 架构图_视频ai分析 报警 架构图

视频ai分析 报警 架构图_视频ai分析 报警 架构图_02

帧在码流中的传输顺序和真正的播放顺序是不同的。

视频中的每一帧都有一个pts值,越靠后播放的帧pts值就越大,越先播放的帧,pts越小。也是根据这个pts的值的大小来确定到底要先播放哪一帧后播放哪一帧的。

视频ai分析 报警 架构图_视频ai分析 报警 架构图_03

码流中,首先传输的是I帧,然后传输的是P帧,但是渲染并不一定就是按这个顺序了,因为还存在B帧,如果不存在B帧的视频,就会按照这个顺序先渲染I帧再渲染P帧。

如果有B帧存在,I帧渲染之后,P帧解码之后会存储进DSP芯片中,然后去判断P帧之后的帧的pts,判断后面这一帧的pts与进入DSP的P帧的pts进行比较,如果P帧的pts大于后面这一帧的pts,那么说明后面这一帧要在P帧之前渲染播放,这也就确定了后面这一帧必然是B帧。

假设后面帧的pts都大于DSP中的P帧中的pts,那说明后面这一帧就是P帧或者是I帧了。

pts是什么?pts是编码时候追随每一帧放入的时间戳参数。

MediaCodec编码机制

解码分为硬解和软解。 硬解主要特点是解码速度快,不发热,但是兼容性比较差,因为要依赖具体硬件设备。硬解码主要使用的是MediaCodec。 MediaCodec访问底层的编解码器,也就是访问native层,Android SDK层,framework层。

视频ai分析 报警 架构图_视频ai分析 报警 架构图_04

移动端MediaCodec解码的时候都是交给DSP芯片进行解码的,解码以后再交给GPU或者CPU,

DSP芯片处理的就是压缩数据,也就是码流,DSP芯片进行解码生成对应的YUV数据,然后把YUV数据交给GPU,GPU把原始数据渲染出来显示在屏幕上。

也就是说.h265的数据通过MediaCodec解码,生成原始YUV数据,渲染在srufaceView中就可以展示出来了。

软解码,解码速度比较慢,发热,但是兼容性较好。

MediaCodec解码H264、H265原理,深度解析视频解码流程

一个视频文件,每一个I帧之前都是sps和pps的数据。一个视频文件,它的sps是相同的pps也是相同的。不同的视频文件肯定就是不同的。

H265硬解码兼容问题

参考

关于H264、H265中的帧内压缩和帧间压缩

【H2645】H.264的宏块和H.265的编码树单元总结

h264和h265的区别