Android开发中关于硬件解码H264视频的小心得!
1、# 定义相关变量参数 & 创建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();
2、# 接收到H264裸数据后,通过onFrame(byte[] buf, int offset, int length) 进行实时解码并实时显示视频画面;
3、# 解码完成后,通过mCodec.stop(); 反初始化解码器;
# 解码后面画面如下:
4、H264裸数据硬件解码 流程:
1.创建并初始化相关解码器参数;
2.将H264裸数据放入inputBuffer;
3.将inputBuffer入列进行解码;
4.获得一个outputBuffer的索引(出列);
5.释放outputBuffer
6.在4,5间循环直到没有outputBuffer可出列为止;
备注:解码流程参考网上资源,并验证有效!