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一样才可以。

 

 

 

 

posted on 2016-01-12 14:27  不懂不问  阅读(1558)  评论(0编辑  收藏  举报

导航