Android开发中关于硬件解码H264视频的小心得!

2025-10-21 12:52:52

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();

Android开发中关于硬件解码H264视频的小心得!

Android开发中关于硬件解码H264视频的小心得!

2、# 接收到H264裸数据后,通过onFrame(byte[] buf, int offset, int length) 进行实时解码并实时显示视频画面;

Android开发中关于硬件解码H264视频的小心得!

3、# 解码完成后,通过mCodec.stop(); 反初始化解码器;

# 解码后面画面如下: 

Android开发中关于硬件解码H264视频的小心得!

4、H264裸数据硬件解码 流程:

  1.创建并初始化相关解码器参数;

  2.将H264裸数据放入inputBuffer;

  3.将inputBuffer入列进行解码;

  4.获得一个outputBuffer的索引(出列);

  5.释放outputBuffer

  6.在4,5间循环直到没有outputBuffer可出列为止;

备注:解码流程参考网上资源,并验证有效! 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢