音视频编解码! 

对于H264视频裸数据编解码问题一直是IPCamera的核心工作,从之前通过ffmpeg软解码,到后面升级为通过Android MediaCodec进行硬解码! 中间走过不少弯路,也历过不少挫折,今天就 Android 硬解码分享自己的一点小心得! 

(备注:2016年在进行Android硬解码开发时有参考网上的相关资源)

工具/原料

  • Mac OS Eclipse开发工具

  • Mac OS电脑

方法/步骤

  1. 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. 2

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

  3. 3

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

     

    # 解码后面画面如下: 

  4. 4

    H264裸数据硬件解码 流程:

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

      2.将H264裸数据放入inputBuffer;

      3.将inputBuffer入列进行解码;

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

      5.释放outputBuffer

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

     

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

    END

注意事项

  • 在进行H264视频界面前,需要判断手机是否支持硬件界面;

  • 通过调用手机GPU进行硬解码,长时间测试,手机有发热情况;

  • 通过硬件解码需要需要合理并即时释放解码器资源,否则会造成界面不稳定,闪退等情况

  • 实测-解码IPcamera 1080P实时视频20FPS. 效果不错!

更多相关文章

  1. uni-app系统目录文件上传(非只图片和视频)解决方案
  2. Android(安卓)从程序启动startActivity到生命周期变化的过程
  3. 一种基于Android智能手机的远程视频监控的设计[图]
  4. [App Bundle]Android动态化技术实例
  5. Android中实现自动生成布局View的初始化代码方法
  6. Android(安卓)Jpush的集成
  7. Android利用mediacodec进行视频H264编码解码播放
  8. Android(安卓)视频播放
  9. Android笔记:AlbumSaver图片视频保存工具类

随机推荐

  1. Android 超简单的电子购物程序
  2. Android(安卓)Bundle存储数据类型
  3. android wifi
  4. Android Handler和HandlerThread使用方法
  5. Android(安卓)操作手机内置存储卡中的文
  6. Android ListView用法(1),不用ListActivit
  7. Android Media Scanner Mechanism Analyz
  8. eclipse导入android的jar包
  9. 如何更新Android Studio版本
  10. Android Lights