diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java
index f39ad544..4dd49093 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java
@@ -715,6 +715,12 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera
mMediaRecorder.setVideoEncodingBitRate(getVideoBitRate());
}
+ if(getVideoFrameRate() <= 0) {
+ mMediaRecorder.setVideoFrameRate(profile.videoFrameRate);
+ } else {
+ mMediaRecorder.setVideoFrameRate(getVideoFrameRate());
+ }
+
if (mAudio == Audio.ON) {
if(getAudioSampleRate() <= 0) {
mMediaRecorder.setAudioSamplingRate(profile.audioSampleRate);
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java
index 610a03b5..b2e892e3 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java
@@ -62,6 +62,7 @@ abstract class CameraController implements
protected Size mPreviewSize;
protected int mPreviewFormat;
protected int mVideoBitRate;
+ protected int mVideoFrameRate;
protected int mAudioBitRate;
protected int mAudioSampleRate;
protected int mAudioChannels;
@@ -298,6 +299,10 @@ abstract class CameraController implements
mVideoBitRate = videoBitRate;
}
+ final void setVideoFrameRate(int videoBitRate) {
+ mVideoFrameRate = videoBitRate;
+ }
+
final void setAudioBitRate(int audioBitRate) {
mAudioBitRate = audioBitRate;
}
@@ -442,6 +447,10 @@ abstract class CameraController implements
return mVideoBitRate;
}
+ final int getVideoFrameRate() {
+ return mVideoFrameRate;
+ }
+
final int getAudioBitRate() {
return mAudioBitRate;
}
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
index b310559e..76f13fdd 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
@@ -117,6 +117,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
long videoMaxSize = (long) a.getFloat(R.styleable.CameraView_cameraVideoMaxSize, 0);
int videoMaxDuration = a.getInteger(R.styleable.CameraView_cameraVideoMaxDuration, 0);
int videoBitRate = a.getInteger(R.styleable.CameraView_cameraVideoBitRate, 0);
+ int videoFrameRate = a.getInteger(R.styleable.CameraView_cameraVideoFrameRate, 0);
int audioBitRate = a.getInteger(R.styleable.CameraView_cameraAudioBitRate, 0);
int audioSampleRate = a.getInteger(R.styleable.CameraView_cameraAudioSampleRate, 0);
int audioChannels = a.getInteger(R.styleable.CameraView_cameraAudioChannels, 0);
@@ -196,6 +197,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
setVideoMaxSize(videoMaxSize);
setVideoMaxDuration(videoMaxDuration);
setVideoBitRate(videoBitRate);
+ setVideoFrameRate(videoFrameRate);
setAudioBitRate(audioBitRate);
setAudioSampleRate(audioSampleRate);
setAudioChannels(audioChannels);
@@ -1488,6 +1490,16 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
return mCameraController.isCapturingVideo();
}
+ /**
+ * Returns custom video frame rate, or 0 if no limit was set.
+ *
+ * @see #setVideoFrameRate(int)
+ * @return custom video frame rate
+ */
+ public int getVideoFrameRate() {
+ return mCameraController.getVideoFrameRate();
+ }
+
/**
* Returns custom video bitrate, or 0 if no limit was set.
*
@@ -1528,6 +1540,15 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
mCameraController.setVideoBitRate(videoBitRate);
}
+ /**
+ * Sets custom video frame rate for recording. Use 0 or negatives to disable.
+ *
+ * @param videoFrameRate The maximum video frame rate
+ */
+ public void setVideoFrameRate(int videoFrameRate) {
+ mCameraController.setVideoFrameRate(videoFrameRate);
+ }
+
/**
* Sets custom audio bitrate for recording. Use 0 or negatives to disable.
*
diff --git a/cameraview/src/main/res/values/attrs.xml b/cameraview/src/main/res/values/attrs.xml
index 7976a869..b7baaba0 100644
--- a/cameraview/src/main/res/values/attrs.xml
+++ b/cameraview/src/main/res/values/attrs.xml
@@ -121,6 +121,7 @@
+