我正在使用 Camera 的 setPreviewCallback 使用 MediaCodec 对视频进行编码。(我按照这个例子使用 Android MediaCodec 从相机编码 H.264)。我对 MediaCodec 使用以下设置:
mediaCodec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 1280, 720);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 8000000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
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();
我的相机设置是:
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewFormat(ImageFormat.NV21);
parameters.setPictureSize(previewWidth, 1280);
parameters.setPreviewSize(previewWidth, 720);
parameters.setPreviewFrameRate(30);
parameters.setPreviewFpsRange(5000,30000);
mCamera.setParameters(parameters);
我有一个视频,但有两个问题:
- 它的颜色是错误的。
- 它的播放速度太快了。
这是一个示例视频
http://www.youtube.com/watch?v=I1Eg2bvrHLM&feature=youtu.be
有谁知道这两个问题的原因是什么?并且可能会告诉我一些解决此问题的方法,因为我现在完全迷失/困惑。感谢您的阅读,并感谢任何评论和意见。