我正试图让Android 4.1的新底层媒体功能在华硕变压器TF300T平板电脑上为H.264编码工作。我遇到一些奇怪的行为,当我尝试增加编解码器的分辨率:Android 4.1 MediaCodec支持分辨率
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异常。任何人有任何解释(甚至更好:修复)?
在此先感谢!
你的第二个提示做到了这一招,谢谢!我现在有一个色彩空间问题,但在提出任何问题之前,我将检查CamcorderProfile API。非常感谢! – gleerman
我发布了关于这个主题的另一个问题:http://stackoverflow.com/questions/13703596/mediacodec-and-camera-colorspaces-dont-match – gleerman