我正在尝试让我的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帧。
m_mediaRecorder.setVideoFrameRate(10);
无效。(如果我将videoBitrate设置为较低的值,这会减小文件大小,但也会降低每个帧的质量—这是我们不想做的事情。)
(请注意-Android 6.0.1;SDK版本21。)
我错过了什么?
谢谢,
鲁文
最佳答案
mediaRecorder.setCaptureRate(20);
mediaRecorder.setVideoFrameRate(20);
我成功了,请试试。谢谢!