MediaRecorder.setVideoFrameRate()没有任何影响

时间:2017-02-27 14:55:56

标签: android video mediarecorder android-mediarecorder frame-rate

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

我错过了什么?

谢谢, 鲁文

2 个答案:

答案 0 :(得分:2)

    mediaRecorder.setCaptureRate(20);
    mediaRecorder.setVideoFrameRate(20);

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

答案 1 :(得分:0)

也可以在Camera上限制帧率吗?

无论如何,不​​要指望降低帧速率会带来显着的收益,因为帧之间的间隔越大,编码同一张图片所需的位就越多。

通过降低图像分辨率可以实现更多的比特率节省。