我正在尝试使用MediaCodec通过Camera的PreviewCall返回(onPreviewFrame)来编码每秒30帧的视频。我编码的视频总是播放得非常快(这是不可取的)。 所以,我试图通过设置一个int frameCount变量来检查进入我相机预览的帧数,以记住它的计数。我期待的是每秒30帧,因为我将相机的预览设置为30 fps预览(如下所示)。我回来的结果是不一样的。 我调用onPreviewFrame回调10秒钟,我得到的帧数量只有大约100帧。这很糟糕,因为我期待300帧。我的相机参数设置正确吗?这是Android的Camera预览回拨的限制吗?如果这是对Android相机预览回调的限制,那么还有其他相机回调能够以每秒30帧的速度返回相机的图像数据(nv21,yuv,yv12)吗?
感谢阅读并花时间去帮忙。我将不胜感激任何评论和意见。
以下是使用Camera的onPreviewFrame编码视频的示例:
http://www.youtube.com/watch?v=I1Eg2bvrHLM&feature=youtu.be
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewFormat(ImageFormat.NV21);
parameters.setPictureSize(previewWidth,previewHeight);
parameters.setPreviewSize(previewWidth, previewHeight);
// parameters.setPreviewFpsRange(30000,30000);
parameters.setPreviewFrameRate(30);
mCamera.setParameters(parameters);
mCamera.setPreviewCallback(previewCallback);
mCamera.setPreviewDisplay(holder);