zoukankan      html  css  js  c++  java
  • android mediacodec 在某些机子上无法编码的问题

    以下是使用mediacodec编码的方法:

           MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, config.getWidth(), config.getHeight());
    
            format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
                    MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
            format.setInteger(MediaFormat.KEY_BIT_RATE,config.getBitrate());
            format.setInteger(MediaFormat.KEY_FRAME_RATE, config.getHumanFPS());
            format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
     
            if (VERBOSE) Log.d(TAG, "format: " + format);
    
            mEncoder = MediaCodec.createEncoderByType(MIME_TYPE);
    
            mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
            mInputSurface = mEncoder.createInputSurface();
            mEncoder.start();
    

      

    但是在VIVO X5 PRO D手机上在输出数据的时候,birate完全失效,编码出的bitrate跟设置的不一致。

    最后经过调试发现是MediaFormat.KEY_FRAME_RATE 参数不能随意设置,必须设置成跟输入的fps一样才可以。

     
  • 相关阅读:
    简单状态机
    c语言状态机
    存储公司
    正确跑步
    好好做自己能做的
    I2C学习
    es6 generator函数
    es6 for of 循环
    es6 proxy代理
    es6 Symbol类型
  • 原文地址:https://www.cnblogs.com/kkia/p/5124247.html
Copyright © 2011-2022 走看看