我正在尝试让我的 Android 应用程序以较低的帧速率录制视频(以减小文件大小)。
这是我的 MediaRecorder 配置代码:
m_mediaRecorder = new MediaRecorder();
m_mediaRecorder.setCamera(mCamera);
m_mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
m_mediaRecorder.setOutputFormat(profile.fileFormat);
m_mediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
m_mediaRecorder.setVideoEncoder(profile.videoCodec);
m_mediaRecorder.setVideoSize(640, 480);
m_mediaRecorder.setVideoFrameRate(10);
m_mediaRecorder.setOrientationHint((int) orientationListener.getPreviewRotation(null));
m_mediaRecorder.setOutputFile(videoDirectory + "/" + uuid + ".mp4");
try {
m_mediaRecorder.prepare();
m_mediaRecorder.start();
} catch (Exception e) {
e.printStackTrace();
}
视频确实录制成功,但无论我尝试什么,帧率似乎都固定在 30 fps。 m_mediaRecorder.setVideoFrameRate(10);
无效。(如果我将 videoBitRate 设置为较低的值,这会减小文件大小,但也会降低每个单独帧的质量 - 这是我们不想做的事情。)
(备案 - Android 6.0.1;SDK 版本 21。)
我错过了什么?
谢谢,鲁文
mediaRecorder.setCaptureRate(20);
mediaRecorder.setVideoFrameRate(20);
我成功了,请尝试一下。谢谢!
我是一名优秀的程序员,十分优秀!