Mac OS Eclipse开发工具
Mac OS电脑
# 定义相关变量参数 & 创建MediaCodec并配置相关参数// Video Constants private final static String MIME_TYPE = 'video/avc'; // H.264 video private int VIDEO_WIDTH = 1920; private int VIDEO_HEIGHT = 1080; private int TIME_INTERNAL = 0; private static int HEAD_OFFSET = 512; private MediaCodec mCodec; Thread readFileThread; # 初始化并创建配置相关解码库,设置视频高宽等参数;# 设置用于显示视频的surface (mSurHolder.getSurface());mCodec = MediaCodec.createDecoderByType(MIME_TYPE); MediaFormat mediaFormat = MediaFormat.createVideoFormat(MIME_TYPE,VIDEO_WIDTH, VIDEO_HEIGHT); mCodec.configure(mediaFormat, mSurHolder.getSurface(),null, 0); mCodec.start();
# 接收到H264裸数据后,通过onFrame(byte[] buf, int offset, int length) 进行实时解码并实时显示视频画面;
# 解码完成后,通过mCodec.stop(); 反初始化解码器;# 解码后面画面如下:
H264裸数据硬件解码 流程: 1.创建并初始化相关解码器参数; 2.将H264裸数据放入inputBuffer; 3.将inputBuffer入列进行解码; 4.获得一个outputBuffer的索引(出列); 5.释放outputBuffer 6.在4,5间循环直到没有outputBuffer可出列为止; 备注:解码流程参考网上资源,并验证有效!
在进行H264视频界面前,需要判断手机是否支持硬件界面;
通过调用手机GPU进行硬解码,长时间测试,手机有发热情况;
通过硬件解码需要需要合理并即时释放解码器资源,否则会造成界面不稳定,闪退等情况
实测-解码IPcamera 1080P实时视频20FPS. 效果不错!