我正在尝试通过相机的 PreviewCall back(onPreviewFrame) 使用 MediaCodec 对每秒 30 帧的视频进行编码。我编码的视频总是播放得很快(这是不希望的)。因此,我尝试通过设置一个 int frameCount 变量来记住它的计数来检查进入我的相机预览的帧数。我期望的是每秒 30 帧,因为我将相机的预览设置为 30 fps 预览(如下所示)。我回来的结果不一样。我调用了 onPreviewFrame 回调 10 秒,我得到的 frameCount 数只有 100 帧左右。这很糟糕,因为我期待 300 帧。我的相机参数设置正确吗?这是Android相机预览回调的限制吗?如果这是对 Android 相机预览回调的限制,
感谢您阅读并花时间提供帮助。我将不胜感激任何评论和意见。
下面是一个使用 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);