音视频专题-硬件解码
目录
音视频专题–硬件解码
- 1 前言概念
- MediaCodec是android提供用于对音视频进行编解码的类,他通过底层的编解码器来实现音视频的功能。
解码芯片: 移动端soc的视频硬解码靠的是soc里面的DSP芯片,不是GPU也不是CPU
硬解码:指的是系统将某个视频封装类型的文件分离成H.264视频数据量和aac音频数据量,然后再将H264视频数据流转交给DSP芯片进行处理,DSP将了好的一帧帧画面转交给GPU/CPU然后显示在屏幕上,这就是视频硬解码的过程。
2 MediaCodec的使用 :
硬编码设置:配置MediaFormat
如果是采集投屏数据则 KEY_COLOR_FORMAT设置为COLOR_FormatSurface
mediacodec.start()开始进行编码
获取到编码通道,一直从通道中获取编码好的数据,获取结束后需要进行通道的释放。
采集编码中vps(h265),sps,pps信息
注意:如果从摄像头采集的数据是NV21格式。如果codec申明的格式不对还需要进行数据转换。其次摄像头采集的数据由于旋转了90度,还需要进行还原操作。
硬解码使用:
config中设置需要渲染到surface.解码后将会直接渲染此。
解码过程: