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 @@ +