zoukankan      html  css  js  c++  java
  • Mate20 pro实现H265 (HEVC)实时硬件编码

    谁能告诉我手机上用H265实时编码有什么鸟用?

    一、先看看手机支持哪些codec

    ALL_CODECS

    REGULAR_CODECS

    mine-type 

     选择mime-type为video/hevc,得到 <OMX.hisi.video.encoder.hevc>,这是华为海思芯片支持的h265硬编码,赞一个!

    public static MediaCodecInfo selectCodec(String mimeType) {
        int numCodecs = MediaCodecList.getCodecCount();
        for (int i = 0; i < numCodecs; i++) {
            MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
    
            if (!codecInfo.isEncoder()) {
                continue;
            }
    
            String[] types = codecInfo.getSupportedTypes();
            for (int j = 0; j < types.length; j++) {
                if (types[j].equalsIgnoreCase(mimeType)) {
                    return codecInfo;
                }
            }
        }
    
        return null;
    }
    

      

    二、通过硬编码器进行编码

    1. 先学习一下H265的帧,

    NAL_UNIT_TYPE,其中SPS & PPS & SEI & IDR 的时间戳相同,参考H264的NAL单元详解

    frame 7 8 6 26 1
    name SPS PPS SEI IDR data
    description          

    2. 配置编码器

    String option = "bitrate=" + encodeBitrate;
    int pos = option.indexOf("bitrate=");
    if (pos != -1) {
        mEncodeBitrate = Integer.valueOf(
                (String) option.subSequence(pos + "bitrate=".length(), option.length()));
        Log.i(TAG, "setEncoderOption, mEncodeBitrate : " + mEncodeBitrate);
    }
    
    MediaFormat mediaformat = null;
    
    mediaformat = MediaFormat.createVideoFormat(H265_MIME, mWidth, mHeight);
    
    mediaformat.setInteger(MediaFormat.KEY_BIT_RATE, this.mEncodeBitrate);
    mediaformat.setInteger(MediaFormat.KEY_FRAME_RATE, encodeFrameRate);
    mediaformat.setInteger(MediaFormat.KEY_COLOR_FORMAT, encodeFormat);
    mediaformat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, iFrameInterval);
    
    mEncodeCodec.configure(mediaformat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
    

      

  • 相关阅读:
    Daily Scrum 11.19 部分测试报告
    Daily Scrum 11.16
    Daily Scrum 11.14
    Daily Scrum 11.13
    Daily Scrum 11.12
    Daily Scrum 11.11
    Daily Scrum 11.10
    M1事后分析汇报以及总结
    Alpha阶段个人贡献分及转会人员确定
    项目测试
  • 原文地址:https://www.cnblogs.com/alanfang/p/11309933.html
Copyright © 2011-2022 走看看