我正在尝试让我的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);

我成功了,请试试。谢谢!

10-04 20:01