我正在尝试让我的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。)
我错过了什么?
谢谢, 鲁文
答案 0 :(得分:2)
mediaRecorder.setCaptureRate(20);
mediaRecorder.setVideoFrameRate(20);
我成功了,请试一试。谢谢!
答案 1 :(得分:0)
也可以在Camera上限制帧率吗?
无论如何,不要指望降低帧速率会带来显着的收益,因为帧之间的间隔越大,编码同一张图片所需的位就越多。
通过降低图像分辨率可以实现更多的比特率节省。