You prop an old Android phone on a shelf, open the normal camera app, and the whole doorway fits in the frame. Then you start recording for real, look at the clip later, and the edges are gone. The door frame is cut off. The corner where the delivery person stood is just outside the picture.
Nothing moved. The phone did not slip. One common cause is a setting most people never think about on a camera that sits still: video stabilization.
This article explains what Android's own documentation says stabilization does to the picture, how much of the frame it is allowed to take, and why a phone used as a fixed, offline security camera usually gains nothing from it. Every quoted line below comes from Android's developer reference or the Android Open Source Project (AOSP) docs, read on 2026-10-23.
Short answer: does video stabilization crop a phone security camera's picture?
Yes, it can. Android's Camera2 reference says that when video stabilization is enabled it "can modify the android.scaler.cropRegion to keep the video stream stabilized". In plain words: to hide shaking, the camera keeps a margin around the picture and throws that margin away. For the newer "preview stabilization" mode, Android caps the loss at 20% of the width and 20% of the height. A phone on a shelf does not shake, so on a fixed mount that lost margin usually buys you nothing.
What stabilization is actually for
There are two different kinds, and Android describes them separately.
Digital (electronic) stabilization. The Camera2 reference describes CONTROL_VIDEO_STABILIZATION_MODE like this: video stabilization "automatically warps images from the camera in order to stabilize motion between consecutive frames." To warp the image without showing black borders, the camera needs spare pixels around the edge. That spare area is what you lose.
Optical stabilization (OIS). The same reference describes LENS_OPTICAL_STABILIZATION_MODE as using "mechanical elements to stabilize the camera sensor". Its stated purpose is to compensate "for motion blur due to small movements of the camera during capture", which "allows for longer exposure times before camera shake becomes apparent." OIS moves hardware; the reference does not describe it as cropping the frame.
Both exist for one job: a camera that is being held or carried. Walking with a phone, filming from a moving bike, recording a child running across a park. A phone screwed to a wall bracket or leaning against a book on a shelf is the opposite case.
How much of the picture can stabilization take?
Android's CameraMetadata reference gives a number for one mode only. For CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION (added in API level 33, Android 13), it says the field-of-view reduction "will be a maximum of 20 % both horizontally and vertically (10% from left, right, top, bottom)".
Here is what that maximum means on a real wall:
| How wide the full view is at the doorway | Width still visible at the 20% maximum | Width lost |
|---|---|---|
| 3 m | 2.4 m | 0.6 m |
| 4 m | 3.2 m | 0.8 m |
| 5 m | 4.0 m | 1.0 m |
| 6 m | 4.8 m | 1.2 m |
Because the cut is applied to both width and height, the picture keeps 80% x 80% = 64% of its area at the maximum. Up to 36% of the scene area can be outside the recording. Measured against a 1920 x 1080 picture of the unstabilized view, what survives is the scene inside a 1536 x 864 window.
For the older "ON" mode, the reference gives no maximum at all. The Android Developers Blog post on CameraX 1.4.0 says that older mode "may have inconsistent FoV (Field of View) between the preview and recorded video". That matches the complaint at the top of this article exactly: what you saw while setting up is not what got recorded.
So the honest summary is: one mode has a documented ceiling of 20% per axis, the other has no documented number, and neither is zero.
If you have read our earlier piece on how far away a phone camera can still read a number plate, this is the other side of that arithmetic. Pixel density depends on how wide the scene is. Stabilization changes how wide the scene is without asking you.
The camera tells the app what it really kept
This part is for developers, but it is useful for everyone, because it means the crop is not a mystery. It is measurable.
The AOSP page on output streams, cropping, and zoom says: "if the HAL implements video stabilization, it must adjust the result crop region to describe the region actually included in the output after video stabilization is applied." The HAL is the phone maker's camera driver layer. In other words, every frame's result metadata is supposed to report the region of the sensor that actually made it into the picture.
So an app can compare two numbers:
// Concept sketch, not a drop-in implementation.
// What the app asked for vs what the camera says it delivered.
val requested = request.get(CaptureRequest.SCALER_CROP_REGION)
val delivered = result.get(CaptureResult.SCALER_CROP_REGION)
val stabMode = result.get(CaptureResult.CONTROL_VIDEO_STABILIZATION_MODE)
// If delivered is noticeably smaller than requested while stabMode is ON,
// the missing border is the stabilization margin.
Two more details from the same Camera2 reference matter for anyone building a long-running camera:
-
Stabilization is only guaranteed at 1080p and 30 fps or below. Even on a device that reports stabilization support, the reference says an output to
MediaRecorderorMediaCodecis guaranteed to be stabilized "if the recording resolution is less than or equal to 1920 x 1080" and "the recording frame rate is less than or equal to 30fps." Above that, the result field "will return OFF if the recording output is not stabilized". So a 4K recording that "has stabilization on" may not be stabilized at all. Read the result, not the request. - Changing it mid-session can glitch. The reference recommends setting the mode as a session parameter "before creating the capture session", and warns that changing it "over the life-time of a capture session may cause delays / glitches." For a recording that runs all night with the screen off, decide once at setup and leave it.
It also says that turning on both digital stabilization and OIS "may produce undesirable interaction, so it is recommended not to enable both at the same time."
When stabilization does help a security camera
It is not always useless. Some fixed cameras are not really still:
- A phone taped to a window on a street with heavy trucks.
- A phone on a pole or a balcony rail that sways in wind.
- A phone on a shelf next to a ceiling fan, a fridge, or a washing machine.
- A phone used as a dashcam or bike camera, which is a moving camera by definition.
In those places, a shaky picture can be harder to watch than a slightly cropped one. The fair rule is: stabilization trades field of view for steadiness. A camera that does not shake should not pay for steadiness it does not need.
How to check your own setup in five minutes (no app to buy, works offline)
You do not need developer tools for this. You need two pieces of tape.
- Mount the phone where it will live. Do not hold it.
- Open the phone's built-in camera app in video mode. Look at the edges of the preview. Put a piece of tape on the wall (or note an object) just inside the left edge and just inside the right edge.
- Look for a stabilization option in that camera app's video settings and note whether it is on. Names differ between phone makers, so search the settings for "stabiliz" if your camera app has a search box.
- Record 20 seconds with your security-camera app the way you normally would, with the screen off if that is how you use it.
- Play the clip back. Are both tape marks still in the picture? If they are gone, you have a crop. It may be stabilization, a zoom setting, or a different lens being chosen.
- If your recording app offers a stabilization toggle, turn it off and repeat. If the marks come back, you have found your missing metre.
If the marks are missing and there is no toggle, check whether the app recorded from a different lens than the camera app showed you. Many phones have more than one rear camera. Our earlier article on what Android lets a third-party app do with the extra lenses on the back covers that case.
Why this matters more for a local-only, no-cloud camera
A cloud doorbell camera is usually designed, mounted and tested by one company for one fixed position. When you turn an old phone into an offline security camera, you are the installer. Nobody checks the framing for you, and nothing on a server crops or fixes the picture later. What the phone writes to its own storage is what you have.
That is also why the setup step matters so much. The useful part of a home or shop camera is often right at the edge: the door handle, the counter, the gate. Losing 10% from each side can be the difference between "someone came in" and "someone came in and you can see their face".
The same "check the defaults, they were made for handheld use" idea runs through two of our earlier technical pieces: Camera2 focus, exposure, and orientation for a long screen-off recording and the 50 Hz anti-banding setting under tube lights. Stabilization is one more setting that makes sense in someone's hand and less sense on a wall.
Where Background Camera RemoteStream fits
Background Camera RemoteStream turns an Android phone into a camera that keeps recording with the screen off. Recordings stay on the phone, with no cloud account and no subscription. You can watch the live picture from another device on the same Wi-Fi through the phone's built-in web server, or stream to YouTube Live when you want to view it from outside the house.
This article does not claim what stabilization mode the app requests on your particular phone; that depends on the device and its camera driver. That is exactly why the tape test above exists. Mount the phone, record a short clip, and check the edges before you trust it overnight.
- Google Play: https://play.google.com/store/apps/details?id=com.superfunicular.digicam
- Website: https://superfunicular.com
Sources
- Android Developers,
CaptureRequestreference:CONTROL_VIDEO_STABILIZATION_MODEandLENS_OPTICAL_STABILIZATION_MODE(read 2026-10-23). - Android Developers,
CameraMetadatareference:CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION(read 2026-10-23). - Android Open Source Project, "Output streams, cropping, and zoom" (read 2026-10-23).
- Android Developers Blog, "What's new in CameraX 1.4.0 and a sneak peek of Jetpack Compose support", December 2024 (read 2026-10-23).









