MediaCodec的视频编码失败

时间:2014-08-11 09:48:09

标签: android video-encoding mediacodec

我使用MediaCodec为yuv帧制作了视频编码API。 但由于未知错误,它无法正常工作。 我的代码正在关注。

mediaCodec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 1280, 720);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 25);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 4000000);      
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar);
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaCodec.start();

ByteBuffer[] inputBuffers = mediaCodec.getInputBuffers();
ByteBuffer[] outputBuffers = mediaCodec.getOutputBuffers();
int inputBufferIndex = mediaCodec.dequeueInputBuffer(0);
if (inputBufferIndex >= 0) {
    ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
    inputBuffer.clear();
    inputBuffer.put(bArData1); // bArData1 : yuv420sp raw data
    mediaCodec.queueInputBuffer(inputBufferIndex, 0, framesize, 0, 0);
}

MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
int outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, 100000);

- > 始终outputBufferIndex =“ - 2”

我不知道造成这个问题的原因。

我检查输入数据(bArData1)是正常的yuv420sp帧。

你能给我一些使用它的指南吗?

0 个答案:

没有答案