通过参考Aegonis的工作1和工作2,我也得到了H.264流,但颜色不正确.我正在使用HTC Butterfly进行开发.这是我的代码的一部分:
相机:
parameters.setPreviewSize(width, height);
parameters.setPreviewFormat(ImageFormat.YV12);
parameters.setPreviewFrameRate(frameRate);
Run Code Online (Sandbox Code Playgroud)
MediaCodec:
mediaCodec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 320, 240);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 500000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15);
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();
Run Code Online (Sandbox Code Playgroud)
使用COLOR_FormatYUV420Planar时,错误显示"[OMX.qcom.video.encoder.avc]不支持颜色格式19",因此我只能使用" COLOR_FormatYUV420SemiPlanar ".有谁知道为什么没有支持?
通过使用得到它:
int colorFormat = 0;
MediaCodecInfo.CodecCapabilities capabilities = codecInfo.getCapabilitiesForType(mimeType);
for (int i = 0; i < capabilities.colorFormats.length && colorFormat == 0; i++) {
int format = capabilities.colorFormats[i];
Log.e(TAG, "Using color format " + format);
}
Run Code Online (Sandbox Code Playgroud)
我们可以有21种颜色格式(COLOR_FormatYUV420SemiPlanar)和2130708361(没有相应的格式),我认为格式会改变取决于设备.
然后,我尝试了 …