我正在尝试让Asus Transformer TF300T平板电脑上的Android 4.1新的低级媒体功能支持H.264编码。但是当我尝试提高编解码器的分辨率时,出现了一些奇怪的行为:
MediaFormat mediaFormat = MediaFormat.
createVideoFormat("video/mp4v-es", 320, 240); // WORKS
// MediaFormat mediaFormat = MediaFormat.
// createVideoFormat("video/mp4v-es", 640, 480); // DOESN'T WORK
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 25);
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar);
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaCodec.start();
在后一种情况下,当调用
mediaCodec.getInputBuffers();
时,我遇到了IllegalStateException异常。有没有人能够解释一下(或者更好的是:提供一个修复方法)?提前感谢!